P8000/WEGA/contrib/WEGA-Remote/REM.ACT.S

1128 lines
14 KiB
ArmAsm

*P 84
;REM.ACT.S
;ALL THE FILE-ACTIONS ARE IN THIS MODULE
;EXTERNE GROESSEN AUS DEM GERAETESPEZ. TEIL:
EXTERNAL DATE SYSTEM SNDTTY LODTTY INIPTY
;EXTERNE GROESSEN AUS DEM TERMINAL-EMULATOR-MODUL:
EXTERNAL LOOP NETSND LODNET SNDNET
EXTERNAL PUTSTR PUTMSG ERROR RETURN
EXTERNAL CHAR1 CHAR2 CHAR3
GLOBAL ACTION
GLOBAL ACTNOW ACTFLG MORACT
XFERSZ: EQU 64
BFRLEN: EQU 1000H
RL: EQU 200H ;RL=0 = DEFAULT RL
BINARY: EQU 0
QUERY: EQU 1
FILDES: EQU 2
EXEC: EQU 4
MAGIC: EQU 0D607H
SOH: EQU 01H
STX: EQU 02H
ETX: EQU 03H
EOT: EQU 04H
ACK: EQU 06H
NAK: EQU 15H ;CTRL-U
CAN: EQU 18H
ESC: EQU 1BH
ACTION:
POP AF
LD (CHAR1),A
SET 0,(HL)
JP LOOP
MORACT:
POP AF
LD (CHAR2),A
SET 1,(HL)
JP LOOP
ACTNOW:
POP AF
LD (CHAR3),A
RES 0,(HL)
RES 1,(HL)
AND 7FH
CP 'Q'
JP Z,GOLOCL
CP 'K'
JP Z,GIVLGO
CP 'S'
JP Z,SENDRQ
CP 'L'
JP Z,LOADRQ
LD A,(CHAR1) ;SOH
CALL SNDTTY
LD A,(CHAR2) ;ESC
CALL SNDTTY
LD A,(CHAR3)
CALL SNDTTY ;IGNORE THE INVALID REQUEST AND
JP LOOP
TTYBYT: CALL LODTTY
RET Z ;NO BYTE
AND 7FH
CP ESC
JR Z,TTYB1
CP CAN
JR NZ,TTYBYT
TTYB1: PUSH AF
CALL SNDNET ;TO REMOTE
TTYB2: CALL LODTTY
JR NZ,TTYB2
POP AF
OR A
RET
WLODNET CALL LODNET
JR Z,WLODNET
RET
TRNBYT: CALL TTYBYT
CALL LODNET
JR Z,TRNBYT
RET
MSKTRN:
CALL WLODNET
AND 7FH
RET
SNDACK:
LD A,ACK
CALL SNDNET
RET
WAITAK:
CALL WLODNET
AND 7FH
CP ACK
RET ;ZERO IF ACK,NONZERO IF NOT
;******************************************************
;CURRENT RETURN TO UDOS
GOLOCL:
CALL SNDACK
XOR A
JP RETURN
;******************************************************
;LOGOUT AND RETURN TO UDOS
GIVLGO:
CALL SNDACK
CALL WAITAK
LD HL,LOGOUT
CALL NETSND
XOR A
DEC A
JP RETURN ;RETURN TO UDOS
;******************************************************
;START REQUEST
STRTRQ:
CALL SNDACK
CALL WLODNET
LD (FLGBYT),A ;WAIT FOR THE FLAGBYTE
CALL SNDACK ;ACKNOWLEDGE IF GOT
CALL FILNAM
LD IX,FLP
LD (IX),0
LD A,(FLGBYT)
BIT BINARY,A
JR Z,ASCTYP
BIT EXEC,A
JR Z,BINTYP
SET 7,(IX) ;SET PROCEDURE TYPE-FILE
RET
BINTYP:
SET 4,(IX)
RET
ASCTYP:
SET 5,(IX)
RET
;******************************************************
;LOAD REQUEST
LOADRQ:
CALL STRTRQ
BIT FILDES,A
JR Z,LOAD1
CALL CLRBUF ;DESCRIPTOR EINLESEN
LD HL,80H
LD (ABFRLEN),HL ;NEW LENGTH
LD HL,ACTFLG
SET 7,(HL)
LD DE,DARRAY
LD HL,(DATE)
LD BC,8
LDIR
CALL SNDACK
JR WAISTX
LOAD1: LD A,(FLGBYT)
BIT QUERY,A
JR Z,NOQUES
LD (IX+01),02 ;OPEN NEW-FILE TO RECOVER DUPLICATE
LD HL,RL ;RECORD LENGTH
CALL OPNFIL
PUSH AF
CP 0D0H ;WAS IT A DUPLICATE FILE ERROR ?
JR Z,DUPLIC
POP AF
JR Z,REDTRN ;WITH NO ERROR READY FOR TRANSFER
CALL ERROR ;THERE OCCURED ANOTHER ERROR
JP CANCEL ;SEND THE CANCEL-REQUEST
DUPLIC:
POP AF
LD HL,RPLMSG
CALL PUTSTR
LD HL,NAMLEN
CALL PUTSTR
LD HL,QUEMSG
CALL PUTSTR
;REPLACE THE FILENAME ...... (Y/N) ?
WAITAN:
CALL LODTTY
JR NZ,WAITAN
WAIT: CALL LODTTY
JR Z,WAIT
AND 05FH ;MASK PARITY AND LOWER
CP 'Y' ;THE FILENAME SHOULD BE REPLACED
PUSH AF
LD A,'N'
CALL NZ,SNDTTY
POP AF
PUSH AF
LD A,0DH
CALL NZ,SNDTTY
POP AF
JR NZ,NOQUES
LD HL,NAMQUE ;PLEASE ENTER ANOTHER FILENAME >>>
CALL PUTSTR
CALL RDCON
;IF FILENAME LENGTH ZERO CANCEL THE REQUEST
NOQUES:
LD IX,FLP
LD HL,RL
LD (IX+01),01 ;OPEN FOR DESTRUCTIVE OUTPUT
CALL OPNFIL
PUSH AF
CALL NZ,ERROR
POP AF
JP NZ,CANCEL
REDTRN:
CALL CLRBUF
CALL SNDACK ;ACKNOWLEDGE FOR A GOOD FILE
WAISTX:
CALL MSKTRN
CP STX
JR Z,STXFON
CP CAN
JP Z,CANCIN
CP ESC
JP Z,CANCIN
JR WAISTX
STXFON:
LD HL,CHKSUM
LD (HL),0
CALL TRNBYT ;BLOCK LENGTH
LD D,A
PUSH DE
CALL TRNBYT
POP DE
LD E,A
PUSH DE ;COUNT
LD HL,CHKBFR
MORCHR:
PUSH DE
PUSH HL
CALL TRNBYT
POP HL
POP DE
LD C,A
LD A,(CHKSUM)
XOR C
LD (CHKSUM),A
LD (HL),C
INC HL
DEC DE
LD A,D
OR E
JR NZ,MORCHR
LOKETX:
CALL MSKTRN
CP ETX
JR NZ,LOKETX
CALL WLODNET
LD C,A
LD A,(CHKSUM)
CP C
LD HL,CHKBFR
POP DE ;COUNT
JR Z,PUTBUF
LD A,NAK
CALL SNDNET
JR WAISTX
PUTBUF:
LD A,(HL)
CALL PUTBFR
JP NZ,CANCEL
DEC DE
INC HL
LD A,D
OR E
JR NZ,PUTBUF
GIVACK:
CALL SNDACK
JR WAISTX
;++++++++++
;CANCEL LOAD
CANCEL:
LD A,CAN
CALL SNDNET
CALL WAITAK ;WAIT FOR THE BACK-CANCEL
JP CLOSE
CANCIN:
JP CLOSEW ;WAIT FOR THE NEXT ACTIONS
;++++++++++
;WRITE DATA BYTES TO BUFFER
;WRITE TO DISK WHEN BUFFER FULL
PUTBFR:
PUSH HL
PUSH BC
PUSH DE
LD HL,(AFILBFR)
LD BC,(ABFRLEN)
LD (HL),A
INC HL
DEC BC ;INCREMENT POINTER,REDUCE COUNT
LD (AFILBFR),HL
LD (ABFRLEN),BC
LD A,B
OR C
JR Z,PUTBFW ;IF BUFFER FULL WRITE IT TO THE FILE
XOR A
PUTB1: POP DE
POP BC
POP HL
RET
PUTBFW:
LD A,(ACTFLG)
BIT 7,A
RES 7,A
LD (ACTFLG),A
JR NZ,WRTDES
CALL WRTFIL
PUSH AF
CALL CLRBUF
LD HL,PUNKT
CALL PUTSTR
POP AF
JR PUTB1
;++++++++++
;WRITE DESCRIPTOR RECORD
WRTDES:
LD HL,(FILBFR)
LD A,L
LD L,H
LD H,A
LD DE,MAGIC
OR A
SBC HL,DE
JR Z,WRTD1
LD HL,NODES ;ERROR NO DESCRIPTOR
WRTD0: CALL PUTSTR
XOR A
INC A
JR PUTB1
WRTD1: LD DE,(FILBFR+15) ;RL
LD HL,BFRLEN
OR A
SBC HL,DE
LD HL,NORL
JR C,WRTD0 ;RL TO LARGE
LD DE,FILPRM ;MOVE
LD HL,FILBFR+12
LD BC,74H
LDIR
LD DE,(DATE)
LD HL,FILBFR+18H
LD BC,8
LDIR
LD A,(FILBFR+13H)
LD (PROP),A
POP DE
POP BC
POP HL
POP HL ;RET FROM PUTBFR
JP LOAD1
;+++++++++
;WRITE A BUFFER TO DISK
WRTFIL:
LD HL,BFRLEN
LD BC,(ABFRLEN)
AND A
SBC HL,BC
RET Z ; IF THERE IS NOTHING TO WRITE DO NOTHING
LD (FILDL),HL
LD A,(FLGBYT)
BIT FILDES,A
JR NZ,WF0
EX DE,HL
LD HL,(FILSMT+2)
ADD HL,DE
LD (FILSMT+2),HL
DEC HL
LD (HIGADR),HL
EX DE,HL
WF0: LD DE,(FILRL)
WF1: OR A
SBC HL,DE
JR Z,WF2
JR NC,WF1
WF2: ADD HL,DE
LD A,(FLP)
BIT 5,A
JR Z,WF3
DEC HL ;ASCII FILE, EOF NOT COUNT
WF3: LD (FILST1),HL ;NUMBER OF BYTES IN LAST RECORD
LD IY,FILVEC
CALL SYSTEM
BIT 6,(IY+0AH)
RET Z ;IF NO ERRORS RETURN
CALL ERROR ;IF THERE WAS ONE DISPLAY IT
XOR A
INC A
RET ;NONZERO RETURN SHOWS ERROR
;++++++++++
;CLEAR BUFFER
CLRBUF: LD HL,FILBFR
LD (AFILBFR),HL
LD DE,FILBFR+1
LD BC,BFRLEN
LD (ABFRLEN),BC
DEC BC
LD (HL),-1
LDIR
RET
;******************************************************
;CLOSE FILE
CLOSEW:
LD A,(FLP)
BIT 5,A ;ASCII ?
JR Z,CLOSE1
LD A,-1 ;EOF - MARK
CALL PUTBFR
CLOSE1: CALL WRTFIL
LD A,(FLGBYT)
BIT FILDES,A
JR Z,CLOSE
LD DE,(DATE)
LD HL,DARRAY
LD BC,8
LDIR
LD A,(PROP)
LD (FILPRP),A
CLOSE:
LD IY,FILCLS
LD (IY+4),74H
CALL SYSTEM
CALL SNDACK ;SEND THE ACKNOWLEDGE FOR READY
CLS1: CALL LODTTY
JR NZ,CLS1 ;CLEAR TTY INPUT BUFFER
JP LOOP
;******************************************************
;SEND REQUEST
SENDRQ:
CALL STRTRQ
LD (IX+01),0 ;OPEN FOR INPUT
LD HL,0 ;DEFAULT RL
CALL OPNFIL
PUSH AF
CALL NZ,ERROR ;NZ IST ERROR-RETURN
POP AF
JP NZ,CANCL ;CANCEL THIS FILEREQUEST
;READY FOR TRANSFER
CALL SNDACK ;FOR FILENAME IS OPEN OK
LD IY,FILRDV
LD (IY+0AH),0
LD HL,0
LD (BFCNT),HL
LD A,(FLGBYT)
BIT FILDES,A
JR Z,REDLOP
SNDDESC: ;SEND DESCRIPTOR RECORD
LD HL,FILBFR
LD (BUFPOI),HL
LD B,6
LD DE,MAGIC
SNDD1: LD (HL),D
INC HL
LD (HL),E
INC HL
DJNZ SNDD1
EX DE,HL
LD HL,FILPRM
LD BC,74H
LDIR
LD HL,80H
LD (BFCNT),HL
REDLOP:
LD HL,ACTFLG
BIT 5,(HL)
RES 5,(HL)
JP NZ,DONRED
LD HL,(BFCNT)
LD DE,(BUFPOI)
LD IX,CHKBFR
LD BC,XFERSZ
LD (CCOUNT),BC
LDLOP:
LD A,H
OR L
JR Z,NEWRED
PUSH HL
AND A ;RESET CARRY
SBC HL,BC ;BUFCNT-XFERSZ > 0 ?
POP HL
CALL C,CHKS ;SET ACTUAL COUNT INSTEAD OF XFERSZ
LD A,(FLP)
BIT 5,A
JR Z,OVCHK1
LD A,(DE)
CP 0FFH ;IS THERE ASCII-EOF ?
JR Z,ASCEOF
OVCHK1:
LD A,(DE)
INC DE
DEC HL
LD (BFCNT),HL
LD (BUFPOI),DE
LD (IX),A
DEC BC
INC IX
LD A,B
OR C
JP Z,SNDREC
JR LDLOP
ASCEOF:
LD HL,(CCOUNT)
AND A
SBC HL,BC ;ACTUAL COUNT FOR RECORD
LD (CCOUNT),HL
LD HL,ACTFLG
SET 5,(HL)
JP SNDREC
;++++++++++
;READ FROM DISK TO BUFFER
NEWRED:
LD A,(ACTFLG)
RES 6,A
LD (ACTFLG),A
LD IY,FILRDV
LD A,(IY+0AH)
CP 0C9H
JR Z,DONRED
LD HL,BFRLEN
LD (RDVLEN),HL
CALL SYSTEM
LD A,(IY+0AH)
CP 0C9H
JR Z,NEWEND
BIT 6,A
PUSH AF
CALL NZ,ERROR
POP AF
JP NZ,CANCL
CALL SUBREC
JR Z,NEWEND
LD HL,PUNKT
CALL PUTSTR
NEWR0: LD HL,(RDVLEN)
NEWR1: LD (BFCNT),HL
LD DE,FILBFR
LD (BUFPOI),DE
JP REDLOP
NEWEND: LD (IY+0AH),0C9H
LD HL,(FILST1)
LD A,L
OR H
JR Z,NEWR0 ;NUMBER OF BYTES IN LAST
;RECORD NOT USED
PUSH DE
LD DE,(FILRL)
LD HL,(RDVLEN)
LD A,L
AND 7FH
JR NZ,NEWR0
SBC HL,DE
LD DE,(FILST1)
ADD HL,DE
POP DE
JR NEWR1
;++++++++++
;END FILE TRANSFER
DONRED:
LD A,EOT
CALL SNDNET
JP CANIN
;++++++++++
;SET ACTUELL TRANSFER BLOCK LENGTH TO NUMBER OF LAST CHARACTERS
CHKS:
LD A,(ACTFLG)
BIT 6,A
RET NZ
LD B,H
LD C,L
LD (CCOUNT),BC
SET 6,A
LD (ACTFLG),A
RET
;++++++++++
;DECREMENT RECORD COUNT
SUBREC: LD DE,(FILRL)
LD HL,BFRLEN
LD BC,0
SUBR1: INC BC
OR A
SBC HL,DE
JR NZ,SUBR1
LD HL,(FILPRM+1)
OR A
SBC HL,BC
LD (FILPRM+1),HL
RET
;++++++++++
;SEND A BLOCK TO NET
SNDREC:
LD HL,(CCOUNT)
LD A,H
OR L
JP Z,REDLOP
CALL TTYBYT
JR NZ,CANIN ;MANUAL CANCEL
LD A,STX
CALL SNDNET
LD BC,(CCOUNT)
LD A,B
PUSH BC
CALL SNDNET
POP BC
LD A,C
CALL SNDNET
LD DE,CHKBFR
LD HL,CHKSUM
LD (HL),0
LD BC,(CCOUNT)
TRALOP:
LD A,(DE)
INC DE
DEC BC
PUSH AF
XOR (HL)
LD (HL),A
POP AF
PUSH BC
PUSH DE
PUSH HL
CALL SNDNET
POP HL
POP DE
POP BC
LD A,B
OR C
JR NZ,TRALOP
LD A,ETX
CALL SNDNET
LD A,(CHKSUM)
CALL SNDNET
CALL WAITAK
JP Z,REDLOP
CP NAK ;WAS IT A NAK
JR Z,SNDREC ;TRY IT AGAIN
JR CANIN
;++++++++++
;CANCEL SEND
CANCL:
LD A,CAN
CALL SNDNET
CALL WAITAK
CANIN:
JP CLOSE
;******************************************************
;GET FILENAME
FILNAM:
CALL MSKTRN
CP STX
JR NZ,FRAMER
XOR A
LD (CHKSUM),A ;INITIALIZE CHECKSUM
LD C,A ;INITIALIZE NAME-LENGTH COUNTER
LD HL,NAMBUF
MORNAM:
PUSH BC
PUSH HL
CALL MSKTRN ;ONLY ASCII-CHARACTERS FOR FILENAME
POP HL
POP BC
LD B,A
CP ETX ;HAVE WE REACHED THE END ?
JR Z,ENDNAM
INC C
LD A,32
CP C
JR C,MORN1 ;ONLY 32 CHARACTERS FOR FILENAME ALLOWED
LD (HL),B
INC HL
MORN1:
LD A,(CHKSUM)
XOR B
LD (CHKSUM),A
JR MORNAM
ENDNAM:
LD (HL),0DH
CALL WLODNET
LD B,A
LD A,(CHKSUM)
CP B
JR NZ,SUMERR ;CHECKSUMERROR IN FILENAME !
RET
;++++++++++
;FILENAME ERROR
SUMERR:
LD HL,SUMEMS
CALL PUTMSG
LD A,NAK
CALL SNDNET ;GIVE A NONACKNOWLEDGE FOR THE WRONG FILENAME
JR FILNAM
;TRY IT AGAIN TO GET THE NAME CORRECT
SUMEMS:
DEFB 28
DEFM 'CHECKSUM ERROR IN FILENAME '
DEFB 0DH
FRAMER:
POP HL ;FROM ROUTINE FILNAM
POP HL ;FROM ROUNTINE STRTRQ
CP CAN
JP Z,CANIN
LD HL,FRAMSG
CALL PUTMSG
JP CANCL
FRAMSG:
DEFB 35 ;LENGTH OF MSG
DEFM 'RECORD - FRAMING ERROR IN FILENAME'
DEFB 0DH
;******************************************************
;OPEN FILE
OPNFIL:
LD A,(FLGBYT)
BIT FILDES,A
JR NZ,OPNF
LD (FILRL),HL
LD (FILST1),HL
LD HL,0
LD (LOWADR),HL
LD (HIGADR),HL
LD (STKSIZ),HL
LD (FILSMT),HL
LD (FILSMT+2),HL
LD (FILSMT+4),HL
LD (FILSMT+6),HL
OPNF: XOR A
LD (FILSPV),A
LD (FILPRP),A
CALL ISNAME
RET NZ
LD A,(IX+1)
OR A
JR Z,OPN0
PUSH IX
LD IY,FILINI ;I REQUEST BEI WRITE
CALL SYSTEM
POP IX
BIT 6,(IY+0AH)
RET NZ
OPN0: PUSH IX
LD IY,FILASV ;ASSIGN REQUEST
CALL SYSTEM
POP IX
BIT 6,(IY+0AH)
RET NZ
LD A,'*'
LD (FILSPV+1),A
LD IY,FILOPN ;OPEN REQUEST
LD A,(IX+1)
LD (FILSPV),A
LD A,(FLGBYT)
BIT FILDES,A
JR Z,OPN1
BIT BINARY,A ;DESCRIPTOR TRANSFER ONLY
JR Z,OPN3 ;TYPE BINARY
JR OPN2
OPN1: LD A,(IX)
LD (FILPRM),A
OPN2: LD (IY+4),74H
CALL SYSTEM
LD A,(FLGBYT)
BIT FILDES,A
JR NZ,OPN4
LD A,(FLP)
AND 20H
LD B,A
LD A,(FILPRM)
LD (FLP),A
AND 20H
CP B
JR Z,OPN4
OPN3: LD (IY+0AH),48H ;INVALID FILE TYPE
OPN4: LD A,(IY+0AH)
BIT 6,A
JR Z,FILOKM
CP 0D0H ;DUPLICATE FILE ERROR ?
RET
;++++++++++
;FILE OK
FILOKM:
LD HL,FILOK1
CALL PUTSTR ;"FILE "
LD HL,NAMLEN
CALL PUTSTR ; "..(NAME).."
LD HL,FILOK2 ; " OF TYPE "
CALL PUTSTR
LD IX,FLP
LD HL,PROTYP
BIT 7,(IX)
JR NZ,PUTTYP
LD HL,ASTYP
BIT 5,(IX)
JR NZ,PUTTYP
LD HL,BNTYP
PUTTYP:
CALL PUTSTR
LD HL,OPENED
CALL PUTSTR
XOR A
RET
;++++++++++
;FILE NAME OK ?
ISNAME:
LD HL,NAMBUF
LD C,0 ;COUNT
LD A,(HL)
CP 0DH
JR Z,NAMERR
NAMLOP:
LD A,(HL)
CP 0DH ;CR ERREICHT
JR Z,ENDLEN
CP ';'
JR Z,NAMERR
CP ' '
JR Z,NAMERR
CP 09H
JR Z,NAMERR
INC HL
INC C
LD A,C
CP 33
JR NZ,NAMLOP
LD (HL),0DH
ENDLEN:
LD HL,NAMLEN
LD (HL),C
INC HL ;NAMBUF
XOR A
RET
NAMERR: LD A,46H ;INVALID FILE NAME
OR A
RET
;******************************************************
;READ CON
RDCON:
LD HL,33
LD (CONLEN),HL
LD IY,CONVEC
CALL SYSTEM
CALL INIPTY
RET
;******************************************************
;VECTORS FOR SYSTEM CALLS
CONVEC: ;READ CON
DEFB 01
DEFB 0CH
DEFW NAMBUF
CONLEN: DEFS 2
DEFW 0
DEFW 0
DEFB 0
DEFW 0
FILVEC: ;FILE WRITE BIN
DEFB 05
DEFB 0EH
DEFW FILBFR
FILDL: DEFS 2
DEFW 0
DEFW 0
DEFB 0
DEFW 0
FILRDV: ;FILE READ BIN
DEFB 05
DEFB 0AH
DEFW FILBFR
RDVLEN: DEFS 2
DEFW 0
DEFW 0
DEFB 0
DEFW 0
FILCLS: ;FILE CLOSE
DEFB 05
DEFB 06
DEFW FILPRM
DEFW 74H
DEFW 0
DEFW 0
DEFB 0
DEFW 0
FILINI: ;DOS INIT
DEFB 05
DEFB 00
DEFW 0
DEFW 0
DEFW 0
DEFW 0
DEFB 0
DEFW 0
FILASV: ;FILE ASSIGN
DEFB 05
DEFB 02
DEFW NAMBUF
DEFW 0
DEFW 0
DEFW 0
DEFB 0
DEFW FILSPV
FILOPN: ;FILE OPEN
DEFB 05
DEFB 04
DEFW FILPRM
DEFW 0074H
DEFW 0
DEFW 0
DEFB 0
DEFW FILSPV
RPLMSG:
DEFB 24
DEFB 0DH
DEFM 'REPLACE THE FILENAME : '
QUEMSG:
DEFB 13
DEFM ' (Y/N) ? >>> '
NAMQUE:
DEFB 35
DEFB 'Y'
DEFB 0DH
DEFB 0DH
DEFM 'ENTER THE NEW FILENAME HERE >>> '
FILOK1:
DEFB 6
DEFB 0DH
DEFM 'FILE '
FILOK2:
DEFB 9
DEFM ' OF TYPE '
PROTYP:
DEFB 9
DEFM 'PROCEDURE'
ASTYP:
DEFB 5
DEFM 'ASCII'
BNTYP:
DEFB 6
DEFM 'BINARY'
OPENED:
DEFB 23
DEFM ' IS OPEN FOR TRANSFER '
DEFB 0DH
PUNKT:
DEFB 1
DEFM '.'
LOGOUT:
DEFM 'logout'
DEFB 0AH
DEFB 80H
NODES: DEFB NODESL
DEFM 'INVALID DESCRIPTOR'
DEFB 0DH
NODESL: EQU $-NODES-1
NORL: DEFB NORLL
DEFM 'RECORD LENGTH TO LARGE'
DEFB 0DH
NORLL: EQU $-NORL-1
;******************************************************
;FILE DESCRIPTOR
FILPRM: DEFB 0
DEFW 0
FILRL: DEFW 0
FILSTO: DEFS 2
FILPRP: DEFS 1
FILSA: DEFW 0
FILST1: DEFS 18
FILSMT: DEFS 82
LOWADR: DEFS 2
HIGADR: DEFS 2
STKSIZ: DEFS 2
PROP: DEFS 1
DARRAY: DEFS 8
;******************************************************
ACTFLG: DEFS 1
CHKSUM: DEFS 1
FLGBYT: DEFS 1
FLP: DEFS 2
BUFPOI: DEFS 2
BFCNT: DEFS 2
CCOUNT: DEFS 2
NAMLEN: DEFS 1
NAMBUF: DEFS 33
FILSPV: DEFS 35
AFILBFR DEFS 2
ABFRLEN DEFS 2
CHKBFR: DEFS XFERSZ+1
FILBFR: DEFS BFRLEN