wearmouth:version_1
; Disassembly of the file "C:\lab\if1-1.rom"
;
; CPU Type: Z80
;
; Created with dZ80 1.50
;
; on Sunday, 28 of April 2002 at 12:33 PM
;
; ---
;
; Last Updated: 14-JAN-2004
;
; Credits: John Hutcheson Documentation.
; Geoff Wearmouth Current Maintainer
#define DEFB .BYTE
#define DEFW .WORD
#define DEFM .TEXT
#define EQU .EQU
#define ORG .ORG
ORG $0000
; --------------------------------
; THE 'RETURN TO MAIN ROM' ROUTINE
; --------------------------------
;
;; MAIN-ROM
L0000: POP HL
LD (IY+$7C),$00 ; sv FLAGS_3
JP L0700 ; jump forward to UNPAGE
; -------------------
; THE 'START' ROUTINE
; -------------------
;
;; ST-SHADOW
L0008: LD HL,($5C5D) ; sv CH_ADD
POP HL
PUSH HL
JP L009A ; jump forward to START-2
; -----------------------------
; THE 'CALL A MAIN ROM' ROUTINE
; -----------------------------
;
;; CALBAS
L0010: LD ($5CBA),HL ; sv SBRT
POP HL
PUSH DE
JR L0081 ; forward to CALBAS-2
DEFB $FF ; unused
; ---------------------------------------------
; THE 'TEST IF SYNTAX IS BEING CHECKED' ROUTINE
; ---------------------------------------------
;
;; CHKSYNTAX
L0018: BIT 7,(IY+$01) ; sv FLAGS
RET
DEFB $FF ; unused
DEFB $FF ; unused
DEFB $FF ; unused
; --------------------------
; THE 'SHADOW-ERROR' ROUTINE
; --------------------------
;
;; SH-ERR
L0020: RST 18H
JR Z,L0068 ; forward to ST-ERROR
JR L003A ; forward to TEST-SP
DEFB $FF ; unused
DEFB $FF ; unused
DEFB $FF ; unused
; ------------------------------------
; THE 'MAIN ROM ERROR RESTART' ROUTINE
; ------------------------------------
;
;; ROMERR
L0028: RES 3,(IY+$02) ; sv TV_FLAG
JR L0040 ; forward to RMERR-2
DEFB $FF ; unused
DEFB $FF ; unused
; -------------------------------------------------
; THE 'CREATE NEW SYSTEM VARIABLES RESTART' ROUTINE
; -------------------------------------------------
; This restart is used twice to create the new system variables.
;; NEWVARS
L0030: JP L01F7 ; jump forward to CRT-VARS
DEFB $FF ; unused
DEFB $FF ; unused
DEFB $FF ; unused
DEFB $FF ; unused
DEFB $FF ; unused
; --------------------------------
; THE 'MASKABLE INTERRUPT' ROUTINE
; --------------------------------
;
;; INT-SERV
L0038: EI
RET
; ---------------------
; THE 'TEST-SP' ROUTINE
; ---------------------
;
;; TEST-SP
L003A: CALL L0077 ; routine CHECK-SP
JP L0258 ; jump forward to REP-MSG
; ----------------------------
; THE 'MAIN ROM ERROR' ROUTINE
; ----------------------------
;
;; RMERR-2
L0040: RST 18H
JR Z,L0068 ; forward to ST-ERROR
CALL L0077 ; routine CHECK-SP
CALL L17B9 ; routine RCL-T-CH
BIT 1,(IY+$7C) ; sv FLAGS_3
JR Z,L0068 ; forward to ST-ERROR
BIT 4,(IY+$7C) ; sv FLAGS_3
JR Z,L0068 ; forward to ST-ERROR
LD A,(IY+$00) ; sv ERR_NR
CP $14
JR NZ,L0068 ; forward to ST-ERROR
LD HL,L0000
PUSH HL
RST 00H
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
; ------------------------------------
; THE 'NON-MASKABLE INTERRUPT' ROUTINE
; ------------------------------------
;
;; NMINT-SRV
L0066: RETN
; ----------------------
; THE 'ST-ERROR' ROUTINE
; ----------------------
;
;; ST-ERROR
L0068: LD HL,($5C5D) ; sv CH_ADD
LD ($5C5F),HL ; sv X_PTR
LD SP,($5C3D) ; sv ERR_SP
LD HL,$16C5
PUSH HL
RST 00H
; ----------------------
; THE 'CHECK-SP' ROUTINE
; ----------------------
;
;; CHECK-SP
L0077: BIT 2,(IY+$7C) ; sv FLAGS_3
RET Z ;
LD SP,($5C3D) ; sv ERR_SP
RST 00H ;
; ----------------------
; THE 'CALBAS-2' ROUTINE
; ----------------------
;
;; CALBAS-2
L0081: LD E,(HL) ;
INC HL ;
LD D,(HL) ;
LD ($5CBD),DE ; sv SBRT
INC HL ;
EX (SP),HL ;
EX DE,HL ;
LD HL,L0000 ;
PUSH HL ;
LD HL,L0008 ;
PUSH HL ;
LD HL,$5CB9 ; sv SBRT
PUSH HL ;
JP L0700 ; jump forward to UNPAGE
; ---------------------
; THE 'CONTROL' ROUTINE
; ---------------------
;
;; START-2
L009A: PUSH AF
LD A,H
OR L
JR NZ,L00A5 ; forward to START-3
POP AF
POP HL
LD HL,($5CBA) ; sv SBRT
RET
; ---
;; START-3
L00A5: PUSH DE
LD DE,$15FE
SBC HL,DE
POP DE
JR NZ,L00BC ; forward to START-4
POP AF
LD HL,L0700
PUSH HL
LD HL,$0004
ADD HL,DE
LD E,(HL)
INC HL
LD D,(HL)
EX DE,HL
JP (HL)
; ---
;; START-4
L00BC: RST 30H ; NEWVARS
LD A,$01
OUT ($F7),A
LD A,$EE
OUT ($EF),A
POP AF
POP HL
PUSH AF
RST 10H ; CALBAS
DEFW $007B ; main TEMP-PTR3
LD ($5C3A),A ; sv ERR_NR
CP $FF
JR NZ,L00E9 ; forward to TEST-CODE
BIT 1,(IY+$7C) ; sv FLAGS_3
JR Z,L00E7 ; forward to NREPORT-0
BIT 7,(IY+$0C) ; sv PPC_hi
JR Z,L00E7 ; forward to NREPORT-0
LD HL,($5C59) ; sv E_LINE
LD A,(HL)
CP $F7
JP Z,L0A95 ; jump forward to LOAD-RUN
;; NREPORT-0
L00E7: RST 20H ; sh_err
DEFB $FF ; 'Program finished'
; ---
;; TEST-CODE
L00E9: SUB $1B
JP NC,L1981 ; jump forward to HOOK-CODE
CP $F0
JR Z,L00FB ; forward to COPYCHADD
CP $F3
JR Z,L00FB ; forward to COPYCHADD
CP $FC
JP NZ,L0028 ; jump to ROMERR
;; COPYCHADD
L00FB: LD HL,($5C5D) ; sv CH_ADD
LD ($5CCB),HL ; sv CHADD_
POP AF
BIT 5,(IY+$37) ; sv FLAGX
JP NZ,L0028 ; jump to ROMERR
BIT 0,(IY+$7C) ; sv FLAGS_3
JP NZ,L0028 ; jump to ROMERR
SET 0,(IY+$7C) ; sv FLAGS_3
RST 18H
JR NZ,L011B ; forward to RUNTIME
LD (IY+$0C),$FF ; sv PPC_hi
;; RUNTIME
L011B: LD B,(IY+$0D) ; sv SUBPPC
LD C,$00
BIT 7,(IY+$0C) ; sv PPC_hi
JR Z,L0130 ; forward to PROG-LINE
PUSH BC
RST 10H ; CALBAS
DEFW $19FB ; main E-LINE-NO
POP BC
RST 10H ; CALBAS
DEFW $0018 ; main GET-CHAR
JR L016F ; forward to S-STAT
; ---
;; PROG-LINE
L0130: LD HL,($5C53) ; sv PROG
;; SC-L-LOOP
L0133: LD A,($5C46) ; sv PPC_hi
CP (HL)
JR NC,L013B ; forward to TEST-LOW
;; NREPORT-1
L0139: RST 20H ; sh_err
DEFB $00 ; 'Nonsense in BASIC'
; ---
;; TEST-LOW
L013B: INC HL
JR NZ,L0144 ; forward to LINE-LEN
LD A,($5C45) ; sv PPC
CP (HL)
JR C,L0139 ; back to NREPORT-1
;; LINE-LEN
L0144: INC HL
LD E,(HL)
INC HL
LD D,(HL)
INC HL
JR Z,L016F ; forward to S-STAT
ADD HL,DE
JR L0133 ; back to SC-L-LOOP
; ---
;; SKIP-NUM
L014E: LD DE,$0006
ADD HL,DE
;; EACH-ST
L0152: LD A,(HL)
CP $0E
JR Z,L014E ; back to SKIP-NUM
INC HL
CP $22
JR NZ,L015D ; forward to CHKEND
DEC C
;; CHKEND
L015D: CP $3A
JR Z,L0165 ; forward to CHKEVEN
CP $CB
JR NZ,L0169 ; forward to CHKEND-L
;; CHKEVEN
L0165: BIT 0,C
JR Z,L016F ; forward to S-STAT
;; CHKEND-L
L0169: CP $0D
JR NZ,L0152 ; back to EACH-ST
JR L0139 ; back to NREPORT-1
; ---
;; S-STAT
L016F: DJNZ L0152 ; back to EACH-ST
DEC HL
LD ($5C5D),HL ; sv CH_ADD
RST 18H
JR NZ,L01AA ; forward to CL-WORK
BIT 7,(IY+$0C) ; sv PPC_hi
JP Z,L01F0 ; jump forward to ERR-6
DEC HL
LD C,$00
;; RCLM-NUM
L0182: INC HL
LD A,(HL)
CP $0E
JR NZ,L01A5 ; forward to NEXTNUM
PUSH BC
LD BC,$0006
RST 10H ; CALBAS
DEFW $19E8 ; main RECLAIM-2
PUSH HL
LD DE,($5CCB) ; sv CHADD_
AND A
SBC HL,DE
JR NC,L01A3 ; forward to NXT-1
EX DE,HL
LD BC,$0006
AND A
SBC HL,BC
LD ($5CCB),HL ; sv CHADD_
;; NXT-1
L01A3: POP HL
POP BC
;; NEXTNUM
L01A5: LD A,(HL)
CP $0D
JR NZ,L0182 ; back to RCLM-NUM
;; CL-WORK
L01AA: RST 10H ; CALBAS
DEFW $16BF ; main SET-WORK
CALL $024D
RST 10H ; CALBAS
DEFW $0020 ; main NEXT-CHAR
SUB $CE
CP $01
JP Z,L0486 ; jump forward to CAT-SYN
CP $02
JP Z,L04B4 ; jump forward to FRTM-SYN
CP $03
JP Z,L053D ; jump forward to MOVE-SYN
CP $04
JP Z,L0531 ; jump forward to ERASE-SYN
CP $05
JP Z,L04ED ; jump forward to OPEN-SYN
CP $2A
JP Z,L082F ; jump forward to SAVE-SYN
CP $21
JP Z,L0894 ; jump forward to LOAD-SYN
CP $08
JP Z,L089E ; jump forward to VERIF-SYN
CP $07
JP Z,L08A8 ; jump forward to MRG-SYN
CP $2D
JP Z,L0559 ; jump forward to CLS#-SYN
CP $2F
JP Z,L057F ; jump forward to CLR#-SYN
; finally if none of these,
LD HL,($5CB7) ; sv VECTOR
JP (HL)
; ---
;; ERR-6
L01F0: LD HL,($5CCB) ; sv CHADD_
LD ($5C5D),HL ; sv CH_ADD
RST 28H ; main romerr
; -----------------------------------------
; THE 'CREATE NEW SYSTEM VARIABLES' ROUTINE
; -----------------------------------------
;
;; CRT-VARS
L01F7: LD HL,($5C4F) ; sv CHANS
LD DE,$A349
ADD HL,DE
JR C,L0235 ; forward to VAR-EXIST
LD HL,L0224 ; Address DEFAULT below
PUSH HL
LD HL,($5C63) ; sv STKBOT
LD ($5C65),HL ; sv STKEND
LD HL,$5C92 ; sv MEM_0
LD ($5C68),HL ; sv MEM
LD HL,$5CB5 ; sv P_RAMT_hi
LD BC,L003A
LD DE,L0000
PUSH DE
LD E,$08
PUSH DE
LD DE,$1655
PUSH DE
JP L0700 ; jump forward to UNPAGE
; and then back here
;; DEFAULT
L0224: LD HL,L023A
LD BC,$0013
LD DE,$5CB6 ; sv FLAGS_3
LDIR
; Note. Accumulator may hold stream to close.
LD A,$01 ;
LD ($5CEF),A ; sv COPIES
RET ;
;; VAR-EXIST
L0235: RES 1,(IY+$7C) ; sv FLAGS_3
RET
; ---------------------------------------------
; THE 'SYSTEM VARIABLES DEFAULT VALUES' ROUTINE
; ---------------------------------------------
;
;; SV_DEFVAL
L023A: DEFB $02
DEFW $01F0 ;
LD HL,$0000
CALL $0000
LD ($5CBA),HL ; sv SBRT
RET
DEFW $000C ;
DEFB $01
DEFB $00
DEFW $0000 ;
; ----------------------------------------
; THE 'RESET NEW SYSTEM VARIABLES' ROUTINE
; ----------------------------------------
;
;; RES-VARS
L024D: LD HL,$5CCD ; sv NTRESP
LD B,$22
;; EACH-VAR
L0252: LD (HL),$FF
INC HL
DJNZ L0252 ; back to EACH-VAR
RET
; ------------------------------------
; THE 'SHADOW REPORT PRINTING' ROUTINE
; ------------------------------------
;
;; REP-MSG
L0258: LD (IY+$7C),$00 ; sv FLAGS_3
EI
HALT
CALL L17B9 ; routine RCL-T-CH
RES 5,(IY+$01) ; sv FLAGS
BIT 1,(IY+$30) ; sv FLAGS2
JR Z,L026E ; forward to FETCH-ERR
RST 10H ; CALBAS
DEFW $0ECD ; main COPY-BUFF
;; FETCH-ERR
L026E: POP HL
LD A,(HL)
LD (IY+$00),A ; sv ERR_NR
INC A
PUSH AF
LD HL,$0000
LD (IY+$37),H ; sv FLAGX
LD (IY+$26),H ; sv X_PTR_hi
LD ($5C0B),HL ; sv DEFADD
INC L
LD ($5C16),HL ; sv STRMS_00
RST 10H ; CALBAS
DEFW $16B0 ; main SET-MIN
RES 5,(IY+$37) ; sv FLAGX
RST 10H ; CALBAS
DEFW $0D6E ; main CLS-LOWER
SET 5,(IY+$02) ; sv TV_FLAG
RES 3,(IY+$02) ; sv TV_FLAG
POP AF
LD HL,$02B7
LD B,$04
CPIR
;; PR-REP-LP
L029F: LD A,(HL)
CP $20
JR C,L02AC ; forward to END-PR-MS
PUSH HL
RST 10H ; CALBAS
DEFW $0010 ; main PRINT-A
POP HL
INC HL
JR L029F ; back to PR-REP-LP
;; END-PR-MS
L02AC: LD SP,($5C3D) ; sv ERR_SP
INC SP
INC SP
LD HL,L1349
PUSH HL
RST 00H
; ------------------------------------
; THE 'SHADOW REPORT MESSAGES' ROUTINE
; ------------------------------------
;
;;
L02B7: DEFB $00
DEFM "Program finished"
DEFB $01
DEFM "Nonsense in BASIC"
DEFB $02
DEFM "Invalid stream number"
DEFB $03
DEFM "Invalid device expression"
DEFB $04
DEFM "Invalid name"
DEFB $05
DEFM "Invalid drive number"
DEFB $06
DEFM "Invalid station number"
DEFB $07
DEFM "Missing name"
DEFB $08
DEFM "Missing station number"
DEFB $09
DEFM "Missing drive number"
DEFB $0A
DEFM "Missing baud rate"
DEFB $0B
DEFM "Header mismatch error" ; not used.
DEFB $0C
DEFM "Stream already open"
DEFB $0D
DEFM "Writing to a 'read' file"
DEFB $0E
DEFM "Reading a 'write' file"
DEFB $0F
DEFM "Drive 'write' protected"
DEFB $10
DEFM "Microdrive full"
DEFB $11
DEFM "Microdrive not present"
DEFB $12
DEFM "File not found"
DEFB $13
DEFM "Hook code error"
DEFB $14
DEFM "CODE error"
DEFB $15
DEFM "MERGE error"
DEFB $16
DEFM "Verification has failed"
DEFB $17
DEFM "Wrong file type"
DEFB $18
; --------------------------------
; THE 'CAT COMMAND SYNTAX' ROUTINE
; --------------------------------
;
;; CAT-SYN
L0486: LD HL,$5CD8 ; sv D_STR1
LD (HL),$02
RST 10H ; CALBAS
DEFW $0020 ; main NEXT-CHAR
CP $0D
JR Z,L0494 ; forward to MISSING-D
CP $3A
;; MISSING-D
L0494: JP Z,L0683 ; jump forward to NREPORT-9
CP $23
JR NZ,L04A6 ; forward to CAT-SCRN
CALL L064E ; routine EXPT-STRM
CALL L05B1 ; routine SEPARATOR
JR NZ,L04B2 ; forward to OREPORT-1
RST 10H ; CALBAS
DEFW $0020 ; main NEXT-CHAR
;; CAT-SCRN
L04A6: CALL L061E ; routine EXPT-NUM
CALL L05B7 ; routine ST-END
CALL L066D ; routine CHECK-M-2
JP L1E70 ; jump forward to CAT-RUN
;; OREPORT-1
L04B2: RST 20H ; sh_err
DEFB $00 ; 'Nonsense in BASIC'
; -----------------------------------
; THE 'FORMAT COMMAND SYNTAX' ROUTINE
; -----------------------------------
;
;; FRTM-SYN
L04B4: CALL L05F2 ; routine EXPT-SPEC
CALL L05B1 ; routine SEPARATOR
JR NZ,L04BF ; forward to NO-FOR-M
CALL L062F ; routine EXPT-NAME
;; NO-FOR-M
L04BF: CALL L05B7 ; routine ST-END
LD A,($5CD9) ; sv D_STR1
CP $54
JR Z,L04CD ; forward to FOR-B-T
CP $42
JR NZ,L04D3 ; forward to NOT-FOR-B
;; FOR-B-T
L04CD: CALL L06B0 ; routine TEST-BAUD
JP L0AC9 ; jump forward to SET-BAUD
;; NOT-FOR-B
L04D3: CP $4E
JR NZ,L04E7 ; forward to FOR-M
CALL L068F ; routine TEST-STAT
LD A,($5CD6) ; sv D_STR1
AND A
JP Z,L069F ; jump forward to NREPORT-6
LD ($5CC5),A ; sv NTSTAT
JP L05C1 ; jump forward to END1
;; FOR-M
L04E7: CALL L0685 ; routine TEST-MNAM
JP L1E75 ; jump forward to IFOR-RUN
; ---------------------------------
; THE 'OPEN COMMAND SYNTAX' ROUTINE
; ---------------------------------
;
;; OPEN-SYN
L04ED: CALL L064E ; routine EXPT-STRM
CALL L05B1 ; routine SEPARATOR
JR NZ,L04B2 ; back to OREPORT-1
CALL L05F2 ; routine EXPT-SPEC
CALL L05B1 ; routine SEPARATOR
JR NZ,L0500 ; forward to NOT-OP-M
CALL L062F ; routine EXPT-NAME
;; NOT-OP-M
L0500: CALL L05B7 ; routine ST-END
LD A,($5CD8) ; sv D_STR1
RST 10H ; CALBAS
DEFW $1727 ; main STR-DATA1
LD HL,$0011
AND A
SBC HL,BC
JR C,L052F ; forward to NREPORT-C
LD A,($5CD9) ; sv D_STR1
CP $54
JR Z,L051C ; forward to OPEN-RS
CP $42
JR NZ,L051F ; forward to NOT-OP-B
;; OPEN-RS
L051C: JP L0B47 ; jump forward to OP-RSCHAN
;; NOT-OP-B
L051F: CP $4E
JR NZ,L0529 ; forward to OP-M-C
CALL L068F ; routine TEST-STAT
JP L0EA3 ; jump forward to OPEN-N-ST
;; OP-M-C
L0529: CALL L0685 ; routine TEST-MNAM
JP L1E7A ; jump forward to OP-RUN
;; NREPORT-C
L052F: RST 20H ; sh_err
DEFB $0B ; 'Stream already open'
; ----------------------------------
; THE 'ERASE COMMAND SYNTAX' ROUTINE
; ----------------------------------
;
;; ERASE-SYN
L0531: CALL L06A3 ; routine EXOT-EXPR
CALL L05B7 ; routine ST-END
CALL L0685 ; routine TEST-MNAM
JP L1E66 ; jump forward to ERASE-RUN
; ---------------------------------
; THE 'MOVE COMMAND SYNTAX' ROUTINE
; ---------------------------------
;
;; MOVE-SYN
L053D: CALL L06B9 ; routine EXPT-EXP1
CALL L059F ; routine EX-D-STR
RST 10H ; CALBAS
DEFW $0018 ; main GET-CHAR
CP $CC
JR NZ,L0584 ; forward to NONSENSE
CALL L06B9 ; routine EXPT-EXP1
CALL L059F ; routine EX-D-STR
RST 10H ; CALBAS
DEFW $0018 ; main GET-CHAR
CALL L05B7 ; routine ST-END
JP L1E6B ; jump forward to MOVE-RUN
; --------------------------
; THE 'CLS# COMMAND' ROUTINE
; --------------------------
;
;; CLS#-SYN
L0559: RST 10H ; CALBAS
DEFW $0020 ; main NEXT-CHAR
CP $23
JR NZ,L0584 ; forward to NONSENSE
RST 10H ; CALBAS
DEFW $0020 ; main NEXT-CHAR
CALL L05B7 ; routine ST-END
LD HL,L0038
LD ($5C8D),HL ; sv ATTR_P
LD ($5C8F),HL ; sv ATTR_T
LD (IY+$0E),L ; sv BORDCR
LD (IY+$57),H ; sv P_FLAG
LD A,$07
OUT ($FE),A
RST 10H ; CALBAS
DEFW $0D6B ; main CLS
JP L05C1 ; jump forward to END1
; ----------------------------
; THE 'CLEAR# COMMAND' ROUTINE
; ----------------------------
;
;; CLR#-SYN
L057F: RST 10H ; CALBAS
DEFW $0020 ; main NEXT-CHAR
CP $23
;; NONSENSE
L0584: JP NZ,L04B2 ; jump to OREPORT-1
RST 10H ; CALBAS
DEFW $0020 ; main NEXT-CHAR
CALL L05B7 ; routine ST-END
XOR A
;; ALL-STRMS
L058E: PUSH AF
SET 1,(IY+$7C) ; sv FLAGS_3
CALL L1718 ; routine CLOSE
POP AF
INC A
CP $10
JR C,L058E ; back to ALL-STRMS
JP L05C1 ; jump forward to END1
; --------------------------------------
; THE 'EXCHANGE FILE SPECIFIERS' ROUTINE
; --------------------------------------
;
;; EX-D-STR
L059F: LD HL,$5CD6 ; sv D_STR1
LD DE,$5CDE ; sv D_STR2
LD B,$08
;; ALL-BYTES
L05A7: LD A,(DE)
LD C,(HL)
LD (HL),A
LD A,C
LD (DE),A
INC HL
INC DE
DJNZ L05A7 ; back to ALL-BYTES
RET
; -----------------------
; THE 'SEPARATOR' ROUTINE
; -----------------------
;
;; SEPARATOR
L05B1: CP $2C ; the ',' character
RET Z
CP $3B ; the ';' character
RET
; ------------------------------
; THE 'END OF STATEMENT' ROUTINE
; ------------------------------
;
;; ST-END
L05B7: CP $0D
JR Z,L05BF ; forward to TEST-RET
CP $3A
JR NZ,L0584 ; back to NONSENSE
;; TEST-RET
L05BF: RST 18H
RET NZ
; --------------------------------------------
; THE 'RETURN TO THE MAIN INTERPRETER' ROUTINE
; --------------------------------------------
;
;; END1
L05C1: LD SP,($5C3D) ; sv
LD (IY+$00),$FF ; sv ERR_NR
LD HL,$1BF4
RST 18H
JR Z,L05E0 ; forward to RETAD-SYN
LD A,$7F
IN A,($FE)
RRA
JR C,L05DD ; forward to RETAD-RUN
LD A,$FE
IN A,($FE)
RRA
JR NC,L05E2 ; forward to BREAK-PGM
;; RETAD-RUN
L05DD: LD HL,$1B7D
;; RETAD-SYN
L05E0: PUSH HL
RST 00H
;; BREAK-PGM
L05E2: LD (IY+$00),$14 ; sv ERR_NR
RST 28H ; romerr
; ----------------------------------------
; THE 'EVALUATE STRING EXPRESSION' ROUTINE
; ----------------------------------------
;
;; EXPT-STR
L05E7: RST 10H ; CALBAS
DEFW $1C8C ; main EXPT-EXP
RST 18H
RET Z
PUSH AF
RST 10H ; CALBAS
DEFW $2BF1 ; main STK-FETCH
POP AF
RET
; -----------------------------------------
; THE 'EVALUATE CHANNEL EXPRESSION' ROUTINE
; -----------------------------------------
;
;; EXPT-SPEC
L05F2: RST 10H ; CALBAS
DEFW $0020 ; main NEXT-CHAR
;; EXP-SPEC2
L05F5: CALL L05E7 ; routine EXPT-STR
JR Z,L060C ; forward to TEST-NEXT
PUSH AF
LD A,C
DEC A
OR B
JR NZ,L062D ; forward to NREPORT-3
LD A,(DE)
RST 10H ; CALBAS
DEFW $2C8D ; main ALPHA
JR NC,L062D ; forward to NREPORT-3
AND $DF
LD ($5CD9),A ; sv D_STR1
POP AF
;; TEST-NEXT
L060C: CP $0D
RET Z
CP $3A
RET Z
CP $A5
RET NC
CALL L05B1 ; routine SEPARATOR
JP NZ,L04B2 ; jump to OREPORT-1
RST 10H ; CALBAS
DEFW $0020 ; main NEXT-CHAR
; -----------------------------------------
; THE 'EVALUATE NUMERIC EXPRESSION' ROUTINE
; -----------------------------------------
;
;; EXPT-NUM
L061E: RST 10H ; CALBAS
DEFW $1C82 ; main EXPT-1NUM
RST 18H
RET Z
PUSH AF
RST 10H ; CALBAS
DEFW $1E99 ; main FIND-INT2
LD ($5CD6),BC ; sv D_STR1
POP AF
RET
;; NREPORT-3
L062D: RST 20H ; sh_err
DEFB $02 ; 'Invalid device expression'
; -------------------------------
; THE 'EVALUATE FILENAME' ROUTINE
; -------------------------------
;
;; EXPT-NAME
L062F: RST 10H ; CALBAS
DEFW $0020 ; main NEXT-CHAR
CALL L05E7 ; routine EXPT-STR
RET Z
PUSH AF
LD A,C
OR B
JR Z,L064C ; forward to NREPORT-4
LD HL,$000A
SBC HL,BC
JR C,L064C ; forward to NREPORT-4
LD ($5CDA),BC ; sv D_STR1
LD ($5CDC),DE ; sv D_STR1
POP AF
RET
;; NREPORT-4
L064C: RST 20H ; sh_err
DEFB $03 ;
; ------------------------------------
; THE 'EVALUATE STREAM NUMBER' ROUTINE
; ------------------------------------
;
;; EXPT-STRM
L064E: RST 10H ; CALBAS
DEFW $0020 ; main NEXT-CHAR
RST 10H ; CALBAS
DEFW $1C82 ; main EXPT-1NUM
RST 18H
RET Z
PUSH AF
RST 10H ; CALBAS
DEFW $1E94 ; main FIND-INT1
CP $10
JR NC,$0663
LD ($5CD8),A ; sv D_STR1
POP AF
RET
RST 20H ; sh_err
DEFB $01 ;
; ----------------------------------
; THE 'CHECK "M" PARAMETERS' ROUTINE
; ----------------------------------
;
;; CHECK-M
L0665: LD A,($5CD9) ; sv D_STR1
CP $4D
JP NZ,L062D ; jump to NREPORT-3
;; CHECK-M-2
L066D: LD DE,($5CD6) ; sv D_STR1
LD A,E
OR D
JR Z,L0681 ; forward to NREPORT-5
INC DE
LD A,E
OR D
JR Z,L0683 ; forward to NREPORT-9
DEC DE
LD HL,L0008
SBC HL,DE
RET NC
;; NREPORT-5
L0681: RST 20H ; sh_err
DEFB $04
;; NREPORT-9
L0683: RST 20H ; sh_err
DEFB $08
; -----------------------------------------------
; THE 'CHECK "M" PARAMETERS AND FILENAME' ROUTINE
; -----------------------------------------------
;
;; TEST-MNAM
L0685: CALL L0665 ; routine CHECK-M
LD A,($5CDB) ; sv D_STR1
AND A
RET Z
RST 20H ; sh_err
DEFB $06
; ----------------------------------
; THE 'CHECK STATION NUMBER' ROUTINE
; ----------------------------------
;
;; TEST-STAT
L068F: LD DE,($5CD6) ; sv D_STR1
INC DE
LD A,E
OR D
JR Z,L06A1 ; forward to NREPORT-8
DEC DE
LD HL,L0040
SBC HL,DE
RET NC
;; NREPORT-6
L069F: RST 20H ; sh_err
DEFB $05
;; NREPORT-8
L06A1: RST 20H ; sh_err
DEFB $07
; -----------------------------------
; THE 'EVALUATE "X";N;"NAME"' ROUTINE
; -----------------------------------
;
;; EXOT-EXPR
L06A3: CALL L05F2 ; routine EXPT-SPEC
CALL L05B1 ; routine SEPARATOR
JP NZ,L04B2 ; jump to OREPORT-1
CALL L062F ; routine EXPT-NAME
RET
; -----------------------------
; THE 'CHECK BAUD RATE' ROUTINE
; -----------------------------
;
;; TEST-BAUD
L06B0: LD HL,($5CD6) ; sv D_STR1
INC HL
LD A,L
OR H
RET NZ
RST 20H ; sh_err
DEFB $09
; -------------------------------------------
; THE 'EVALUATE STREAM OR EXPRESSION' ROUTINE
; -------------------------------------------
;
;; EXPT-EXP1
L06B9: RST 10H ; CALBAS
DEFW $0020 ; main NEXT-CHAR
CP $23
JP Z,L064E ; jump to EXPT-STRM
CALL L05F5 ; routine EXP-SPEC2
CALL L05B1 ; routine SEPARATOR
JR NZ,L06CC ; forward to ENDHERE
CALL L062F ; routine EXPT-NAME
;; ENDHERE
L06CC: RST 18H
RET Z
LD A,($5CD9) ; sv D_STR1
CP $54
RET Z
CP $42
RET Z
CP $4E
JP Z,L068F ; jump to TEST-STAT
JP L0685 ; jump to TEST-MNAM
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
; --------------------
; THE 'UNPAGE' ROUTINE
; --------------------
;
;; UNPAGE
L0700: RET
; ---------------------------------
; THE 'EVALUATE PARAMETERS' ROUTINE
; ---------------------------------
;
;; EXPT-PRMS
L0701: RST 10H ; CALBAS
DEFW $0020 ; main NEXT-CHAR
CP $2A
JR NZ,L073C ; forward to OREP-1-2
RST 10H ; CALBAS
DEFW $0020 ; main NEXT-CHAR
CALL L05F5 ; routine EXP-SPEC2
CALL L05B1 ; routine SEPARATOR
JR NZ,L0716 ; forward to NO-NAME
CALL L062F ; routine EXPT-NAME
;; NO-NAME
L0716: PUSH AF
LD A,($5CD9) ; sv D_STR1
CP $4E
JR NZ,L0722 ; forward to NOT-NET
SET 3,(IY+$7C) ; sv FLAGS_3
;; NOT-NET
L0722: POP AF
CP $0D
JR Z,L0750 ; forward to END-EXPT
CP $3A
JR Z,L0750 ; forward to END-EXPT
CP $AA
JR Z,L0771 ; forward to SCREEN$
CP $AF
JR Z,L0789 ; forward to CODE
CP $CA
JR Z,L073E ; forward to LINE
CP $E4
JP Z,L07D2 ; jump forward to DATA
;; OREP-1-2
L073C: RST 20H ; sh_err
DEFB $00
;; LINE
L073E: RST 10H ; CALBAS
DEFW $0020 ; main NEXT-CHAR
RST 10H ; CALBAS
DEFW $1C82 ; main EXPT-1NUM
CALL L05B7 ; routine ST-END
RST 10H ; CALBAS
DEFW $1E99 ; main FIND-INT2
LD ($5CED),BC ; sv HD_11
JR L0753 ; forward to PROG
;; END-EXPT
L0750: CALL L05B7 ; routine ST-END
;; PROG
L0753: XOR A
LD ($5CE6),A ; sv HD_00
LD HL,($5C59) ; sv E_LINE
LD DE,($5C53) ; sv PROG
LD ($5CE9),DE ; sv HD_0D
SCF
SBC HL,DE
LD ($5CE7),HL ; sv HD_0B
LD HL,($5C4B) ; sv VARS
SBC HL,DE
LD ($5CEB),HL ; sv HD_0F
RET
;; SCREEN$
L0771: RST 10H ; CALBAS
DEFW $0020 ; main NEXT-CHAR
CALL L05B7 ; routine ST-END
LD HL,$1B00
LD ($5CE7),HL ; sv HD_0B
LD HL,$4000
LD ($5CE9),HL ; sv HD_0D
LD A,$03
LD ($5CE6),A ; sv HD_00
RET
;; CODE
L0789: RST 10H ; CALBAS
DEFW $0020 ; main NEXT-CHAR
CP $0D
JR Z,L079A ; forward to DEFLT-0
CP $3A
JR NZ,L079F ; forward to PAR-1
BIT 5,(IY+$7C) ; sv FLAGS_3
JR NZ,L073C ; back to OREP-1-2
;; DEFLT-0
L079A: RST 10H ; CALBAS
DEFW $1CE6 ; main USE-ZERO
JR L07A7 ; forward to TEST-SAVE
;; PAR-1
L079F: RST 10H ; CALBAS
DEFW $1C82 ; main EXPT-1NUM
CALL L05B1 ; routine SEPARATOR
JR Z,L07B2 ; forward to PAR-2
;; TEST-SAVE
L07A7: BIT 5,(IY+$7C) ; sv FLAGS_3
JR NZ,L073C ; back to OREP-1-2
RST 10H ; CALBAS
DEFW $1CE6 ; main USE-ZERO
JR L07B8 ; forward to END-CODE
;; PAR-2
L07B2: RST 10H ; CALBAS
DEFW $0020 ; main NEXT-CHAR
RST 10H ; CALBAS
DEFW $1C82 ; main EXPT-1NUM
;; END-CODE
L07B8: RST 10H ; CALBAS
DEFW $0018 ; main GET-CHAR
CALL L05B7 ; routine ST-END
RST 10H ; CALBAS
DEFW $1E99 ; main FIND-INT2
LD ($5CE7),BC ; sv HD_0B
RST 10H ; CALBAS
DEFW $1E99 ; main FIND-INT2
LD ($5CE9),BC ; sv HD_0D
LD A,$03
LD ($5CE6),A ; sv HD_00
RET
;; DATA
L07D2: BIT 6,(IY+$7C) ; sv FLAGS_3
JR Z,L07DA ; forward to NO-M-ARR
RST 20H ; sh_err
DEFB $14
;; NO-M-ARR
L07DA: RST 10H ; CALBAS
DEFW $0020 ; main NEXT-CHAR
RST 10H ; CALBAS
DEFW $28B2 ; main LOOK-VARS
SET 7,C
JR NC,L07F2 ; forward to EXISTING
LD HL,L0000
BIT 4,(IY+$7C) ; sv FLAGS_3
JR NZ,L080E ; forward to LD-DATA
LD (IY+$00),$01 ; sv ERR_NR
RST 28H ; romerr
;; EXISTING
L07F2: JR Z,L07F6 ; forward to G-TYPE
;; NONS-BSC
L07F4: RST 20H ; sh_err
DEFB $00
;; G-TYPE
L07F6: RST 18H
JR Z,L081C ; forward to END-DATA
BIT 5,(IY+$7C) ; sv FLAGS_3
JR Z,L0803 ; forward to VR-DATA
BIT 7,(HL)
JR Z,L07F4 ; back to NONS-BSC
;; VR-DATA
L0803: INC HL
LD A,(HL)
LD ($5CE7),A ; sv HD_0B
INC HL
LD A,(HL)
LD ($5CE8),A ; sv HD_0B_hi
INC HL
;; LD-DATA
L080E: LD A,C
LD ($5CEB),A ; sv HD_0F
LD A,$01
BIT 6,C
JR Z,L0819 ; forward to NUM-ARR
INC A
;; NUM-ARR
L0819: LD ($5CE6),A ; sv HD_00
;; END-DATA
L081C: EX DE,HL
RST 10H ; CALBAS
DEFW $0020 ; main NEXT-CHAR
CP $29
JR NZ,L07F4 ; back to NONS-BSC
RST 10H ; CALBAS
DEFW $0020 ; main NEXT-CHAR
CALL L05B7 ; routine ST-END
LD ($5CE9),DE ; sv HD_0D
RET
; ---------------------------------
; THE 'SAVE COMMAND SYNTAX' ROUTINE
; ---------------------------------
;
;; SAVE-SYN
L082F: SET 5,(IY+$7C) ; sv FLAGS_3
CALL L0701 ; routine EXPT-PRMS
LD A,($5CD9) ; sv D_STR1
CP $42
JR Z,L084F ; forward to SA-HEADER
CP $4E
JR NZ,L0849 ; forward to SAVE-M
CALL L068F ; routine TEST-STAT
CALL L0EA9 ; routine OP-TEMP-N
JR L084F ; forward to SA-HEADER
;; SAVE-M
L0849: CALL L0685 ; routine TEST-MNAM
JP L1E7F ; jump forward to SAVE-RUN
;; SA-HEADER
L084F: LD B,$09
LD HL,$5CE6 ; sv HD_00
;; HD-LOOP
L0854: CALL L0880 ; routine SA-BYTE
INC HL
DJNZ L0854 ; back to HD-LOOP
LD HL,($5CE9) ; sv HD_0D
BIT 3,(IY+$7C) ; sv FLAGS_3
JR Z,L086E ; forward to SA-BLOCK
LD A,($5CE6) ; sv HD_00
CP $03
JR NC,L086E ; forward to SA-BLOCK
LD DE,$0114
ADD HL,DE
;; SA-BLOCK
L086E: LD BC,($5CE7) ; sv HD_0B
;; SA-BLK-LP
L0872: LD A,C
OR B
JR Z,L087D ; forward to S-BLK-END
CALL L0880 ; routine SA-BYTE
DEC BC
INC HL
JR L0872 ; back to SA-BLK-LP
;; S-BLK-END
L087D: JP L0988 ; jump forward to TST-MR-M
; --------------------------------------------------
; THE 'SAVE A BYTE TO NETWORK OR RS232 LINK' ROUTINE
; --------------------------------------------------
;
;; SA-BYTE
L0880: PUSH HL
PUSH BC
BIT 3,(IY+$7C) ; sv FLAGS_3
LD A,(HL)
JR NZ,L088E ; forward to SA-NET
CALL L0C5A ; routine BCHAN-OUT
JR L0891 ; forward to SA-B-END
;; SA-NET
L088E: CALL L0D6C ; routine NCHAN-OUT
;; SA-B-END
L0891: POP BC
POP HL
RET
; ---------------------------------
; THE 'LOAD COMMAND SYNTAX' ROUTINE
; ---------------------------------
;
;; LOAD-SYN
L0894: SET 4,(IY+$7C) ; sv FLAGS_3
CALL L0701 ; routine EXPT-PRMS
JP L08AF ; jump forward to LD-VF-MR
; -----------------------------------
; THE 'VERIFY COMMAND SYNTAX' ROUTINE
; -----------------------------------
;
;; VERIF-SYN
L089E: SET 7,(IY+$7C) ; sv FLAGS_3
CALL L0701 ; routine EXPT-PRMS
JP L08AF ; jump forward to LD-VF-MR
; ----------------------------------
; THE 'MERGE COMMAND SYNTAX' ROUTINE
; ----------------------------------
;
;; MRG-SYN
L08A8: SET 6,(IY+$7C) ; sv FLAGS_3
CALL L0701 ; routine EXPT-PRMS
; ----------------------------------------
; THE 'LOAD-VERIFY-MERGE COMMANDS' ROUTINE
; ----------------------------------------
;
;; LD-VF-MR
L08AF: LD HL,$5CE6 ; sv HD_00
LD DE,$5CDE ; sv D_STR2
LD BC,$0007
LDIR
LD A,($5CD9) ; sv D_STR1
CP $4E
JR Z,L08CD ; forward to TS-L-NET
CP $42
JR Z,L08D3 ; forward to TS-L-RS
CALL L0685 ; routine TEST-MNAM
CALL L1580 ; routine F-M-HM
JR L08F2 ; forward to TEST-TYPE
;; TS-L-NET
L08CD: CALL L068F ; routine TEST-STAT
CALL L0EA9 ; routine OP-TEMP-N
;; TS-L-RS
L08D3: LD HL,$5CE6 ; sv HD_00
LD B,$09
;; LD-HEADER
L08D8: PUSH HL
PUSH BC
BIT 3,(IY+$7C) ; sv FLAGS_3
JR Z,L08E7 ; forward to LD-HD-RS
;; LD-HD-NET
L08E0: CALL L0D12 ; routine NCHAN-IN
JR NC,L08E0 ; back to LD-HD-NET
JR L08EC ; forward to LD-HDR-2
;; LD-HD-RS
L08E7: CALL L0B81 ; routine BCHAN-IN
JR NC,L08E7 ; back to LD-HD-RS
;; LD-HDR-2
L08EC: POP BC
POP HL
LD (HL),A
INC HL
DJNZ L08D8 ; back to LD-HEADER
;; TEST-TYPE
L08F2: LD A,($5CDE) ; sv D_STR2
LD B,A
LD A,($5CE6) ; sv HD_00
CP B
JR NZ,L0902 ; forward to NREPORT-N
CP $03
JR Z,L0911 ; forward to T-H-CODE
JR C,L0904 ; forward to TST-MERGE
;; NREPORT-N
L0902: RST 20H ; sh_err
DEFB $16
;; TST-MERGE
L0904: BIT 6,(IY+$7C) ; sv FLAGS_3
JR NZ,L0967 ; forward to MERGE-BLK
BIT 7,(IY+$7C) ; sv FLAGS_3
JP Z,L09A3 ; jump to LD-PR-AR
;; T-H-CODE
L0911: BIT 6,(IY+$7C) ; sv FLAGS_3
JR Z,L0919 ; forward to LD-BLOCK
RST 20H ; sh_err
DEFB $14
;; LD-BLOCK
L0919: LD HL,($5CDF) ; sv D_STR2
LD DE,($5CE7) ; sv HD_0B
LD A,H
OR L
JR Z,L0932 ; forward to LD-BLK-2
SBC HL,DE
JR NC,L0932 ; forward to LD-BLK-2
BIT 4,(IY+$7C) ; sv FLAGS_3
JR Z,L0930 ; forward to NREPORT-L
RST 20H ; sh_err
DEFB $13
;; NREPORT-L
L0930: RST 20H ; sh_err
DEFB $15
;; LD-BLK-2
L0932: LD HL,($5CE1) ; sv D_STR2
LD A,(IX+$04)
CP $CD
JR NZ,L0941 ; forward to LD-BLK-3
LD HL,($5CE4) ; sv D_STR2
JR L0952 ; forward to LD-BLK-4
;; LD-BLK-3
L0941: BIT 3,(IY+$7C) ; sv FLAGS_3
JR Z,L0952 ; forward to LD-BLK-4
LD A,($5CE6) ; sv HD_00
CP $03
JR Z,L0952 ; forward to LD-BLK-4
LD BC,$0114
ADD HL,BC
;; LD-BLK-4
L0952: LD A,H
OR L
JR NZ,L0959 ; forward to LD-BLK-5
LD HL,($5CE9) ; sv HD_0D
;; LD-BLK-5
L0959: LD A,($5CE6) ; sv HD_00
AND A
JR NZ,L0962 ; forward to LD-NO-PGM
LD HL,($5C53) ; sv PROG
;; LD-NO-PGM
L0962: CALL L0A5C ; routine LV-ANY
JR L0988 ; forward to TST-MR-M
;; MERGE-BLK
L0967: LD A,($5CEE) ; sv HD_11_hi
AND $C0
JR NZ,L0973 ; forward to NO-AUTOST
CALL L17B9 ; routine RCL-T-CH
RST 20H ; sh_err
DEFB $14
;; NO-AUTOST
L0973: LD BC,($5CE7) ; sv HD_0B
PUSH BC
INC BC
RST 10H ; CALBAS
DEFW $0030 ; main BC-SPACES
LD (HL),$80
EX DE,HL
POP DE
PUSH HL
CALL L0A5C ; routine LV-ANY
POP HL
RST 10H ; CALBAS
DEFW $08CE ; main ME-CTRLX
;; TST-MR-M
L0988: LD A,(IX+$04)
CP $CD
JR NZ,L0994 ; forward to TST-MR-N
CALL L12A9 ; routine CLOSE-M2
JR L09A0 ; forward to MERGE-END
;; TST-MR-N
L0994: BIT 3,(IY+$7C) ; sv FLAGS_3
JR Z,L09A0 ; forward to MERGE-END
CALL L0EF5 ; routine SEND-NEOF
CALL L17B9 ; routine RCL-T-CH
;; MERGE-END
L09A0: JP L05C1 ; jump to END1
;; LD-PR-AR
L09A3: LD DE,($5CE7) ; sv HD_0B
LD HL,($5CE1) ; sv D_STR2
PUSH HL
LD A,H
OR L
JR NZ,L09B5 ; forward to LD-PROG
INC DE
INC DE
INC DE
EX DE,HL
JR L09BE ; forward to TST-SPACE
;; LD-PROG
L09B5: LD HL,($5CDF) ; sv D_STR2
EX DE,HL
SCF
SBC HL,DE
JR C,L09C7 ; forward to TST-TYPE
;; TST-SPACE
L09BE: LD DE,$0005
ADD HL,DE
LD B,H
LD C,L
RST 10H ; CALBAS
DEFW $1F05 ; main TEST-ROOM
;; TST-TYPE
L09C7: POP HL
LD A,($5CE6) ; sv HD_00
AND A
JR Z,L0A15 ; forward to SET-PROG
LD A,H
OR L
JR Z,L09F3 ; forward to CRT-NEW
LD A,(IX+$04)
CP $CD
JR NZ,L09DE ; forward to T-LD-NET
LD HL,($5CE4) ; sv D_STR2
JR L09E8 ; forward to RCLM-OLD
;; T-LD-NET
L09DE: BIT 3,(IY+$7C) ; sv FLAGS_3
JR Z,L09E8 ; forward to RCLM-OLD
LD DE,$0114
ADD HL,DE
;; RCLM-OLD
L09E8: DEC HL
LD B,(HL)
DEC HL
LD C,(HL)
DEC HL
INC BC
INC BC
INC BC
RST 10H ; CALBAS
DEFW $19E8 ; main RECLAIM-2
;; CRT-NEW
L09F3: LD HL,($5C59) ; sv E_LINE
DEC HL
LD BC,($5CE7) ; sv HD_0B
PUSH BC
INC BC
INC BC
INC BC
LD A,($5CE3) ; sv D_STR2
PUSH AF
RST 10H ; CALBAS
DEFW $1655 ; main MAKE-ROOM
INC HL
POP AF
LD (HL),A
POP DE
INC HL
LD (HL),E
INC HL
LD (HL),D
INC HL
;; END-LD-PR
L0A0F: CALL L0A5C ; routine LV-ANY
JP L0988 ; jump to TST-MR-M
;; SET-PROG
L0A15: RES 1,(IY+$7C) ; sv FLAGS_3
LD DE,($5C53) ; sv PROG
LD HL,($5C59) ; sv E_LINE
DEC HL
RST 10H ; CALBAS
DEFW $19E5 ; main RECLAIM-1
LD BC,($5CE7) ; sv HD_0B
LD HL,($5C53) ; sv PROG
RST 10H ; CALBAS
DEFW $1655 ; main MAKE-ROOM
INC HL
LD BC,($5CEB) ; sv HD_0F
ADD HL,BC
LD ($5C4B),HL ; sv VARS
LD A,($5CEE) ; sv HD_11_hi
LD H,A
AND $C0
JR NZ,L0A4E ; forward to NO-AUTO
SET 1,(IY+$7C) ; sv FLAGS_3
LD A,($5CED) ; sv HD_11
LD L,A
LD ($5C42),HL ; sv NEWPPC
LD (IY+$0A),$00 ; sv NSPPC
;; NO-AUTO
L0A4E: LD HL,($5C53) ; sv PROG
LD DE,($5CE7) ; sv HD_0B
DEC HL
LD ($5C57),HL ; sv DATADD
INC HL
JR L0A0F ; back to END-LD-PR
; ----------------------------
; THE 'LOAD OR VERIFY' ROUTINE
; ----------------------------
;
;; LV-ANY
L0A5C: LD A,D
OR E
RET Z
LD A,(IX+$04)
CP $CD
JR NZ,L0A6A ; forward to LV-BN
CALL L15A9 ; routine LV-MCH
RET
;; LV-BN
L0A6A: PUSH HL
PUSH DE
BIT 3,(IY+$7C) ; sv FLAGS_3
JR Z,L0A79 ; forward to LV-B
;; LV-N
L0A72: CALL L0D12 ; routine NCHAN-IN
JR NC,L0A72 ; back to LV-N
JR L0A7E ; forward to LV-BN-E
;; LV-B
L0A79: CALL L0B81 ; routine BCHAN-IN
JR NC,L0A79 ; back to LV-B
;; LV-BN-E
L0A7E: POP DE
DEC DE
POP HL
BIT 7,(IY+$7C) ; sv FLAGS_3
JR NZ,L0A8A ; forward to VR-BN
LD (HL),A
JR L0A8F ; forward to LVBN-END
;; VR-BN
L0A8A: CP (HL)
JR Z,L0A8F ; forward to LVBN-END
RST 20H ; sh_err
DEFB $15
;; LVBN-END
L0A8F: INC HL
LD A,E
OR D
JR NZ,L0A6A ; back to LV-BN
RET
; --------------------------------
; THE 'LOAD "RUN" PROGRAM' ROUTINE
; --------------------------------
;
;; LOAD-RUN
L0A95: LD BC,$0001
LD ($5CD6),BC ; sv D_STR1
LD BC,$0003
LD ($5CDA),BC ; sv D_STR1
LD BC,$0AC6
LD ($5CDC),BC ; sv D_STR1
SET 4,(IY+$7C) ; sv FLAGS_3
CALL L0753 ; routine PROG
LD HL,$5CE6 ; sv HD_00
LD DE,$5CDE ; sv D_STR2
LD BC,$0009
LDIR
SET 7,(IY+$0A) ; sv NSPPC
CALL L1580 ; routine F-M-HM
JP L08F2 ; jump to TEST-TYPE
LD (HL),D
LD (HL),L
LD L,(HL)
; -----------------------------------------
; THE 'SET "BAUD"- SYSTEM VARIABLE' ROUTINE
; -----------------------------------------
;
;; SET-BAUD
L0AC9: LD BC,($5CD6) ; sv D_STR1
LD HL,$0AEF
;; NXT-ENTRY
L0AD0: LD E,(HL)
INC HL
LD D,(HL)
INC HL
EX DE,HL
LD A,H
CP $4B
JR NC,L0AE4 ; forward to END-SET
AND A
SBC HL,BC
JR NC,L0AE4 ; forward to END-SET
EX DE,HL
INC HL
INC HL
JR L0AD0 ; back to NXT-ENTRY
;; END-SET
L0AE4: EX DE,HL
LD E,(HL)
INC HL
LD D,(HL)
LD ($5CC3),DE ; sv BAUD
JP L05C1 ; jump to END1
; ------------------------------------
; THE 'RS232 TIMING CONSTANTS' ROUTINE
; ------------------------------------
;
;;
L0AEF: DEFW $0032 ;
DEFW $0A82 ;
DEFW $006E ;
DEFW $04C5 ;
DEFW $012C ;
DEFW $01BE ;
DEFW $0258 ;
DEFW $00DE ;
DEFW $04B0 ;
DEFW $006E ;
DEFW $0960 ;
DEFW $0036 ;
DEFW $12C0 ;
DEFW $001A ;
DEFW $2580 ;
DEFW $000C ;
DEFW $4B00 ;
DEFW $0005 ;
; ----------------------------------------------
; THE 'OPEN RS232 CHANNEL IN CHANS AREA' ROUTINE
; ----------------------------------------------
;
;; OP-RS-CH
L0B13: LD HL,($5C53) ; sv PROG
DEC HL
LD BC,$000B
PUSH BC
RST 10H ; CALBAS
DEFW $1655 ; main MAKE-ROOM
POP BC
PUSH DE
CALL L1691 ; routine REST-N-AD
POP DE
LD HL,$0B6E
LD BC,$000B
LDDR
INC DE
LD A,($5CD9) ; sv D_STR1
CP $42
RET NZ
PUSH DE
LD HL,$0005
ADD HL,DE
LD DE,L0C5A
LD (HL),E
INC HL
LD (HL),D
INC HL
LD DE,$0B75
LD (HL),E
INC HL
LD (HL),D
POP DE
RET
; ----------------------------------------
; THE 'ATTACH CHANNEL TO A STREAM' ROUTINE
; ----------------------------------------
;
;; OP-RSCHAN
L0B47: CALL L0B13 ; routine OP-RS-CH
;; OP-STREAM
L0B4A: LD HL,($5C4F) ; sv CHANS
DEC HL
EX DE,HL
AND A
SBC HL,DE
EX DE,HL
LD HL,$5C16 ; sv STRMS_00
LD A,($5CD8) ; sv D_STR1
RLCA
LD C,A
LD B,$00
ADD HL,BC
LD (HL),E
INC HL
LD (HL),D
JP L05C1 ; jump to END1
; ------------------------------
; THE '"T" CHANNEL DATA' ROUTINE
; ------------------------------
;
;;
L0B64: DEFW $0008 ; main ERROR-1
DEFW $0008 ; main ERROR-1
DEFB $54
DEFW $0C3C ;
DEFW $0B6F ;
DEFW $000B ;
; -------------------------------
; THE '"T" CHANNEL INPUT' ROUTINE
; -------------------------------
;
;; T-INPUT
L0B6F: LD HL,$0B7B
JP L0CBD ; jump to CALL-INP
; -------------------------------
; THE '"B" CHANNEL INPUT' ROUTINE
; -------------------------------
;
;; B-INPUT
L0B75: LD HL,L0B81
JP L0CBD ; jump to CALL-INP
; ---------------------------------------
; THE '"T" CHANNEL INPUT SERVICE' ROUTINE
; ---------------------------------------
;
;; TCHAN-IN
L0B7B: CALL L0B81 ; routine BCHAN-IN
RES 7,A
RET
; ---------------------------------------
; THE '"B" CHANNEL INPUT SERVICE' ROUTINE
; ---------------------------------------
;
;; BCHAN-IN
L0B81: LD HL,$5CC7 ; sv SER_FL
LD A,(HL)
AND A
JR Z,L0B8E ; forward to REC-BYTE
LD (HL),$00
INC HL
LD A,(HL)
SCF
RET
;; REC-BYTE
L0B8E: LD A,$7F
IN A,($FE)
RRCA
JR C,L0B9A ; forward to REC-PROC
LD (IY+$00),$14 ; sv ERR_NR
RST 28H ; romerr
;; REC-PROC
L0B9A: DI
LD A,($5CC6) ; sv IOBORD
OUT ($FE),A
LD DE,($5CC3) ; sv BAUD
LD HL,$0320
LD B,D
LD C,E
SRL B
RR C
LD A,$FE
OUT ($EF),A
;; READ-RS
L0BB1: IN A,($F7)
RLCA
JR NC,L0BC5 ; forward to TST-AGAIN
IN A,($F7)
RLCA
JR NC,L0BC5 ; forward to TST-AGAIN
IN A,($F7)
RLCA
JR NC,L0BC5 ; forward to TST-AGAIN
IN A,($F7)
RLCA
JR C,L0BD1 ; forward to START-BIT
;; TST-AGAIN
L0BC5: DEC HL
LD A,H
OR L
JR NZ,L0BB1 ; back to READ-RS
PUSH AF
LD A,$EE
OUT ($EF),A
JR L0BF0 ; forward to WAIT-1
;; START-BIT
L0BD1: LD H,B
LD L,C
LD B,$80
DEC HL
DEC HL
DEC HL
;; SERIAL-IN
L0BD8: ADD HL,DE
NOP
;; BD-DELAY
L0BDA: DEC HL
LD A,H
OR L
JR NZ,L0BDA ; back to BD-DELAY
ADD A,$00
IN A,($F7)
RLCA
RR B
JR NC,L0BD8 ; back to SERIAL-IN
LD A,$EE
OUT ($EF),A
LD A,B
CPL
SCF
PUSH AF
;; WAIT-1
L0BF0: ADD HL,DE
;; WAIT-2
L0BF1: DEC HL
LD A,L
OR H
JR NZ,L0BF1 ; back to WAIT-2
ADD HL,DE
ADD HL,DE
ADD HL,DE
;; T-FURTHER
L0BF9: DEC HL
LD A,L
OR H
JR Z,L0C36 ; forward to END-RS-IN
IN A,($F7)
RLCA
JR NC,L0BF9 ; back to T-FURTHER
IN A,($F7)
RLCA
JR NC,L0BF9 ; back to T-FURTHER
IN A,($F7)
RLCA
JR NC,L0BF9 ; back to T-FURTHER
IN A,($F7)
RLCA
JR NC,L0BF9 ; back to T-FURTHER
LD H,D
LD L,E
SRL H
RR L
LD B,$80
DEC HL
DEC HL
DEC HL
;; SER-IN-2
L0C1D: ADD HL,DE
NOP
;; BD-DELAY2
L0C1F: DEC HL
LD A,H
OR L
JR NZ,L0C1F ; back to BD-DELAY2
ADD A,$00
IN A,($F7)
RLCA
RR B
JR NC,L0C1D ; back to SER-IN-2
LD HL,$5CC7 ; sv SER_FL
LD (HL),$01
INC HL
LD A,B
CPL
LD (HL),A
;; END-RS-IN
L0C36: CALL L0CA9 ; routine BORD-REST
POP AF
EI
RET
; --------------------------------
; THE '"T" CHANNEL OUTPUT' ROUTINE
; --------------------------------
;
;; TCHAN-OUT
L0C3C: CP $A5
JR C,L0C46 ; forward to NOT-TOKEN
SUB $A5
RST 10H ; CALBAS
DEFW $0C10 ; main PO-TOKENS
RET
;; NOT-TOKEN
L0C46: CP $7F
JR C,L0C4C ; forward to NOT-GRAPH
LD A,$3F
;; NOT-GRAPH
L0C4C: CP $0D
JR NZ,L0C57 ; forward to NOT-CR
CALL L0C5A ; routine BCHAN-OUT
LD A,$0A
JR L0C5A ; forward to BCHAN-OUT
;; NOT-CR
L0C57: CP $20
RET C
; --------------------------------
; THE '"B" CHANNEL OUTPUT' ROUTINE
; --------------------------------
;
;; BCHAN-OUT
L0C5A: LD B,$0B
CPL
LD C,A
LD A,($5CC6) ; sv IOBORD
OUT ($FE),A
LD A,$EF
OUT ($EF),A
CPL
OUT ($F7),A
LD HL,($5CC3) ; sv BAUD
LD D,H
LD E,L
;; BD-DEL-1
L0C6F: DEC DE
LD A,D
OR E
JR NZ,L0C6F ; back to BD-DEL-1
;; TEST-DTR
L0C74: LD A,$7F
IN A,($FE)
OR $FE
IN A,($FE)
RRA
JP NC,L0CB4 ; jump to BRK-INOUT
IN A,($EF)
AND $08
JR Z,L0C74 ; back to TEST-DTR
SCF
DI
;; SER-OUT-L
L0C88: ADC A,$00
OUT ($F7),A
LD D,H
LD E,L
;; BD-DEL-2
L0C8E: DEC DE
LD A,D
OR E
JR NZ,L0C8E ; back to BD-DEL-2
DEC DE
XOR A
SRL C
DJNZ L0C88 ; back to SER-OUT-L
EI
LD A,$01
LD C,$EF
LD B,$EE
OUT ($F7),A
OUT (C),B
;; BD-DEL-3
L0CA4: DEC HL
LD A,L
OR H
JR NZ,L0CA4 ; back to BD-DEL-3
; -----------------------------------
; THE 'BORDER COLOUR RESTORE' ROUTINE
; -----------------------------------
;
;; BORD-REST
L0CA9: LD A,($5C48) ; sv BORDCR
AND $38
RRCA
RRCA
RRCA
OUT ($FE),A
RET
; --------------------------------------
; THE 'BREAK INTO I/O OPERATION' ROUTINE
; --------------------------------------
;
;; BRK-INOUT
L0CB4: EI
CALL L0CA9 ; routine BORD-REST
LD (IY+$00),$14 ; sv ERR_NR
RST 28H ; romerr
; ----------------------
; THE 'CALL-INP' ROUTINE
; ----------------------
;
;; CALL-INP
L0CBD: RES 3,(IY+$02) ; sv TV_FLAG
PUSH HL
LD HL,($5C3D) ; sv ERR_SP
LD E,(HL)
INC HL
LD D,(HL)
AND A
LD HL,$107F
SBC HL,DE
JR NZ,L0CFB ; forward to INKEY$
POP HL
LD SP,($5C3D) ; sv ERR_SP
POP DE
POP DE
LD ($5C3D),DE ; sv ERR_SP
;; IN-AGAIN
L0CDB: PUSH HL
LD DE,$0CE1
PUSH DE
JP (HL)
JR C,L0CED ; forward to ACC-CODE
JR Z,L0CEA ; forward to NO-READ
;; OREPORT-8
L0CE5: LD (IY+$00),$07 ; sv ERR_NR
RST 28H ; romerr
;; NO-READ
L0CEA: POP HL
JR L0CDB ; back to IN-AGAIN
;; ACC-CODE
L0CED: CP $0D
JR Z,L0CF7 ; forward to END-INPUT
RST 10H ; CALBAS
DEFW $0F85 ; main ADD-CHRX
POP HL
JR L0CDB ; back to IN-AGAIN
;; END-INPUT
L0CF7: POP HL
JP L0700 ; jump to UNPAGE
;; INKEY$
L0CFB: POP HL
LD DE,$0D01
PUSH DE
JP (HL)
RET C
RET Z
BIT 4,(IY+$7C) ; sv FLAGS_3
JR Z,L0CE5 ; back to OREPORT-8
OR $01
RET
; -------------------------------
; THE '"N" CHANNEL INPUT' ROUTINE
; -------------------------------
;
;; N-INPUT
L0D0C: LD HL,L0D12
JP L0CBD ; jump to CALL-INP
; ---------------------------------------
; THE '"N" CHANNEL INPUT SERVICE' ROUTINE
; ---------------------------------------
;
;; NCHAN-IN
L0D12: LD IX,($5C51) ; sv CURCHL
LD A,(IX+$10)
AND A
JR Z,L0D1E ; forward to TEST-BUFF
RST 20H ; sh_err
DEFB $0D
;; TEST-BUFF
L0D1E: LD A,(IX+$14)
AND A
JR Z,L0D38 ; forward to TST-N-EOF
LD E,(IX+$13)
DEC A
SUB E
JR C,L0D38 ; forward to TST-N-EOF
LD D,$00
INC E
LD (IX+$13),E
ADD IX,DE
LD A,(IX+$14)
SCF
RET
;; TST-N-EOF
L0D38: LD A,(IX+$0F)
AND A
JR Z,L0D3F ; forward to GET-N-BUF
RET
;; GET-N-BUF
L0D3F: LD A,($5CC6) ; sv IOBORD
OUT ($FE),A
DI
;; TRY-AGAIN
L0D45: CALL L0F1E ; routine WT-SCOUT
JR NC,L0D5F ; forward to TIME-OUT
CALL L0E18 ; routine GET-NBLK
JR NZ,L0D5F ; forward to TIME-OUT
EI
CALL L0CA9 ; routine BORD-REST
LD (IX+$13),$00
LD A,($5CD2) ; sv NTTYPE
LD (IX+$0F),A
JR L0D1E ; back to TEST-BUFF
;; TIME-OUT
L0D5F: LD A,(IX+$0B)
AND A
JR Z,L0D45 ; back to TRY-AGAIN
EI
CALL L0CA9 ; routine BORD-REST
AND $00
RET
; --------------------------------
; THE '"N" CHANNEL OUTPUT' ROUTINE
; --------------------------------
;
;; NCHAN-OUT
L0D6C: LD IX,($5C51) ; sv CURCHL
LD B,A
LD A,(IX+$14)
AND A
LD A,B
JR Z,L0D7A ; forward to TEST-OUT
RST 20H ; sh_err
DEFB $0C
;; TEST-OUT
L0D7A: LD E,(IX+$10)
INC E
JR NZ,L0D88 ; forward to ST-BF-LEN
PUSH AF
XOR A
CALL L0DAB ; routine S-PACK-1
POP AF
LD E,$01
;; ST-BF-LEN
L0D88: LD (IX+$10),E
LD D,$00
ADD IX,DE
LD (IX+$14),A
RET
; -----------------------
; THE 'OUT-BLK-N' ROUTINE
; -----------------------
;
;; OUT-BLK-N
L0D93: CALL L0FC5 ; routine OUTPAK
LD A,(IX+$0B)
AND A
RET Z
LD HL,$5CCD ; sv NTRESP
LD (HL),$00
LD E,$01
CALL L0F92 ; routine INPAK
RET NZ
LD A,($5CCD) ; sv NTRESP
DEC A
RET
; ----------------------
; THE 'S-PACK-1' ROUTINE
; ----------------------
;
;; S-PACK-1
L0DAB: CALL L0DB2 ; routine SEND-PACK
RET NZ
JP L0E0F ; jump to BR-DELAY
; -----------------------
; THE 'SEND-PACK' ROUTINE
; -----------------------
;
;; SEND-PACK
L0DB2: LD (IX+$0F),A
LD B,(IX+$10)
LD A,($5CC6) ; sv IOBORD
OUT ($FE),A
PUSH IX
POP DE
LD HL,$0015
ADD HL,DE
XOR A
;; CHKS1
L0DC5: ADD A,(HL)
INC HL
DJNZ L0DC5 ; back to CHKS1
LD (IX+$11),A
LD HL,$000B
ADD HL,DE
PUSH HL
LD B,$07
XOR A
;; CHKS2
L0DD4: ADD A,(HL)
INC HL
DJNZ L0DD4 ; back to CHKS2
LD (HL),A
DI
;; SENDSCOUT
L0DDA: CALL L0F61 ; routine SEND-SC
POP HL
PUSH HL
LD E,$08
CALL L0D93 ; routine OUT-BLK-N
JR NZ,L0DDA ; back to SENDSCOUT
PUSH IX
POP HL
LD DE,$0015
ADD HL,DE
LD E,(IX+$10)
LD A,E
AND A
JR Z,L0DFD ; forward to INC-BLKN
LD B,$20
;; SP-DL-1
L0DF6: DJNZ L0DF6 ; back to SP-DL-1
CALL L0D93 ; routine OUT-BLK-N
JR NZ,L0DDA ; back to SENDSCOUT
;; INC-BLKN
L0DFD: INC (IX+$0D)
JR NZ,L0E05 ; forward to SP-N-END
INC (IX+$0E)
;; SP-N-END
L0E05: POP HL
CALL L0CA9 ; routine BORD-REST
EI
LD A,(IX+$0B)
AND A
RET
; ----------------------
; THE 'BR-DELAY' ROUTINE
; ----------------------
;
;; BR-DELAY
L0E0F: LD DE,$1500
;; DL-LOOP
L0E12: DEC DE
LD A,E
OR D
JR NZ,L0E12 ; back to DL-LOOP
RET
; ---------------------------------------------
; THE 'HEADER AND DATA BLOCK RECEIVING' ROUTINE
; ---------------------------------------------
;
;; GET-NBLK
L0E18: LD HL,$5CCE ; sv NTDEST
LD E,$08
CALL L0F92 ; routine INPAK
RET NZ
LD HL,$5CCE ; sv NTDEST
XOR A
LD B,$07
;; CHKS3
L0E27: ADD A,(HL)
INC HL
DJNZ L0E27 ; back to CHKS3
CP (HL)
RET NZ
LD A,($5CCE) ; sv NTDEST
AND A
JR Z,L0E40 ; forward to BRCAST
CP (IX+$0C)
RET NZ
LD A,($5CCF) ; sv NTSRCE
CP (IX+$0B)
RET NZ
JR L0E45 ; forward to TEST-BLKN
;; BRCAST
L0E40: LD A,(IX+$0B)
OR A
RET NZ
;; TEST-BLKN
L0E45: LD HL,($5CD0) ; sv NTNUMB
LD E,(IX+$0D)
LD D,(IX+$0E)
AND A
SBC HL,DE
JR Z,L0E65 ; forward to GET-NBUFF
DEC HL
LD A,H
OR L
RET NZ
CALL L0E65 ; routine GET-NBUFF
; Note. The DEC instruction does not affect the carry flag.
DEC (IX+$0D)
JR NC,L0E62 ; forward, with no carry, to GETNB-END !!
DEC (IX+$0E)
;; GETNB-END
L0E62: OR $01
RET
;; GET-NBUFF
L0E65: LD A,($5CCE) ; sv NTDEST
OR A
CALL NZ,L0FBE ; routine SEND-RESP
LD A,($5CD3) ; sv NTLEN
AND A
JR Z,L0E93 ; forward to STORE-LEN
PUSH IX
POP HL
LD DE,$0015
ADD HL,DE
PUSH HL
LD E,A
CALL L0F92 ; routine INPAK
POP HL
RET NZ
LD A,($5CD3) ; sv NTLEN
LD B,A
LD A,($5CD4) ; sv NTDCS
;; CHKS4
L0E87: SUB (HL)
INC HL
DJNZ L0E87 ; back to CHKS4
RET NZ
LD A,($5CCE) ; sv NTDEST
AND A
CALL NZ,L0FBE ; routine SEND-RESP
;; STORE-LEN
L0E93: LD A,($5CD3) ; sv NTLEN
LD (IX+$14),A
INC (IX+$0D)
JR NZ,L0EA1 ; forward to GETNBF-END
INC (IX+$0E)
;; GETNBF-END
L0EA1: CP A
RET
; --------------------------------------
; THE 'OPEN "N" CHANNEL COMMAND' ROUTINE
; --------------------------------------
;
;; OPEN-N-ST
L0EA3: CALL L0EB5 ; routine OP-PERM-N
JP L0B4A ; jump to OP-STREAM
; ----------------------------------------
; THE 'OPEN TEMPORARY "N" CHANNEL' ROUTINE
; ----------------------------------------
;
;; OP-TEMP-N
L0EA9: CALL L0EB5 ; routine OP-PERM-N
LD IX,($5C51) ; sv CURCHL
SET 7,(IX+$04)
RET
; ----------------------------------------
; THE 'OPEN PERMANENT "N" CHANNEL' ROUTINE
; ----------------------------------------
;
;; OP-PERM-N
L0EB5: LD HL,($5C53) ; sv PROG
DEC HL
LD BC,$0114
PUSH BC
RST 10H ; CALBAS
DEFW $1655 ; main MAKE-ROOM
INC HL
POP BC
CALL L1691 ; routine REST-N-AD
LD ($5C51),HL ; sv CURCHL
EX DE,HL
LD HL,$0EEA
LD BC,$000B
LDIR
LD A,($5CD6) ; sv D_STR1
LD (DE),A
INC DE
LD A,($5CC5) ; sv NTSTAT
LD (DE),A
INC DE
XOR A
LD (DE),A
LD H,D
LD L,E
INC DE
LD BC,$0106
LDIR
LD DE,($5C51) ; sv CURCHL
RET
; ------------------------------
; THE '"N" CHANNEL DATA' ROUTINE
; ------------------------------
;
;;
L0EEA: DEFW $0008 ; main ERROR-1
DEFW $0008 ; main ERROR-1
DEFB $4E
DEFW $0D6C ;
DEFW $0D0C ;
DEFW $0114 ;
; ---------------------------------------
; THE 'SEND EOF BLOCK TO NETWORK' ROUTINE
; ---------------------------------------
;
;; SEND-NEOF
L0EF5 LD IX,($5C51) ; sv CURCHL
LD A,(IX+$10)
AND A
RET Z
LD A,$01
JP L0DAB ; jump to S-PACK-1
; ---------------------------
; THE 'NETWORK STATE' ROUTINE
; ---------------------------
;
;; NET-STATE
L0F03: LD A,R
OR $C0
LD B,A
CALL L0F0E ; routine CHK-REST
JR C,L0F03 ; back to NET-STATE
RET
; ---------------------------
; THE 'CHECK-RESTING' ROUTINE
; ---------------------------
;
;; CHK-REST
L0F0E: LD A,$7F
IN A,($FE)
RRCA
JR NC,L0F4D ; forward to E-READ-N
;; MAKESURE
L0F15: PUSH BC
POP BC
IN A,($F7)
RRCA
RET C
DJNZ L0F15 ; back to MAKESURE
RET
; ------------------------
; THE 'WAIT-SCOUT' ROUTINE
; ------------------------
;
;; WT-SCOUT
L0F1E: LD HL,$01C2
;; CLAIMED
L0F21: LD B,$80
CALL L0F0E ; routine CHK-REST
JR NC,L0F35 ; forward to WT-SYNC
DEC HL
DEC HL
LD A,H
OR L
JR NZ,L0F21 ; back to CLAIMED
LD A,(IX+$0B)
AND A
JR Z,L0F21 ; back to CLAIMED
RET
;; WT-SYNC
L0F35: IN A,($F7)
RRCA
JR C,L0F56 ; forward to SCOUT-END
LD A,$7F
IN A,($FE)
RRCA
JR NC,L0F4D ; forward to E-READ-N
DEC HL
LD A,H
OR L
JR NZ,L0F35 ; back to WT-SYNC
LD A,(IX+$0B)
AND A
JR Z,L0F35 ; back to WT-SYNC
RET
;; E-READ-N
L0F4D: EI
CALL L0CA9 ; routine BORD-REST
LD (IY+$00),$14 ; sv ERR_NR
RST 28H ; romerr
;; SCOUT-END
L0F56: LD L,$09
;; LP-SCOUT
L0F58: DEC L
SCF
RET Z
LD B,$0E
;; DELAY-SC
L0F5D: DJNZ L0F5D ; back to DELAY-SC
JR L0F58 ; back to LP-SCOUT
; ------------------------
; THE 'SEND-SCOUT' ROUTINE
; ------------------------
;
;; SEND-SC
L0F61: CALL L0F03 ; routine NET-STATE
LD C,$F7
LD HL,$0009
LD A,($5CC5) ; sv NTSTAT
LD E,A
IN A,($F7)
RRCA
JR C,L0F61 ; back to SEND-SC
;; ALL-BITS
L0F72: OUT (C),H
LD D,H
LD H,$00
RLC E
RL H
LD B,$08
;; S-SC-DEL
L0F7D: DJNZ L0F7D ; back to S-SC-DEL
IN A,($F7)
AND $01
CP D
JR Z,L0F61 ; back to SEND-SC
DEC L
JR NZ,L0F72 ; back to ALL-BITS
LD A,$01
OUT ($F7),A
LD B,$0E
;; END-S-DEL
L0F8F: DJNZ L0F8F ; back to END-S-DEL
RET
; -------------------
; THE 'INPAK' ROUTINE
; -------------------
;
;; INPAK
L0F92: LD B,$FF
;; N-ACTIVE
L0F94: IN A,($F7)
RRA
JR C,L0F9D ; forward to INPAK-2
DJNZ L0F94 ; back to N-ACTIVE
INC B
RET
;; INPAK-2
L0F9D: LD B,E
;; INPAK-L
L0F9E: LD E,$80
LD A,$CE
OUT ($EF),A
NOP
NOP
INC IX
DEC IX
INC IX
DEC IX
;; UNTIL-MK
L0FAE: LD A,$00
IN A,($F7)
RRA
RR E
JP NC,L0FAE ; jump to UNTIL-MK
LD (HL),E
INC HL
DJNZ L0F9E ; back to INPAK-L
CP A
RET
; --------------------------------
; THE 'SEND RESPONSE BYTE' ROUTINE
; --------------------------------
;
;; SEND-RESP
L0FBE: LD A,$01
LD HL,$5CCD ; sv NTRESP
LD (HL),A
LD E,A
; --------------------
; THE 'OUTPAK' ROUTINE
; --------------------
;
;; OUTPAK
L0FC5: XOR A
OUT ($F7),A
LD B,$04
;; DEL-D-1
L0FCA: DJNZ L0FCA ; back to DEL-D-1
;; OUTPAK-L
L0FCC: LD A,(HL)
CPL
SCF
RLA
LD B,$0A
;; UNT-MARK
L0FD2: OUT ($F7),A
RRA
AND A
DEC B
LD D,$00
JP NZ,L0FD2 ; jump to UNT-MARK
INC HL
DEC E
PUSH HL
POP HL
JP NZ,L0FCC ; jump to OUTPAK-L
LD A,$01
OUT ($F7),A
RET
; -----------------------------------------
; THE 'SET A TEMPORARY "M" CHANNEL' ROUTINE
; -----------------------------------------
;
;; SET-T-MCH
L0FE8: EXX
LD HL,L0000
EXX
LD IX,($5C4F) ; sv CHANS
LD DE,$0014
ADD IX,DE
;; CHK-LOOP
L0FF6: LD A,(IX+$00)
CP $80
JR Z,L1034 ; forward to CHAN-SPC
LD A,(IX+$04)
AND $7F
CP $4D
JR NZ,L102A ; forward to NEXT-CHAN
LD A,($5CD6) ; sv D_STR1
CP (IX+$19)
JR NZ,L102A ; forward to NEXT-CHAN
EXX
LD L,(IX+$1A)
LD H,(IX+$1B)
EXX
LD BC,($5CDA) ; sv D_STR1
LD HL,($5CDC) ; sv D_STR1
CALL L131E ; routine CHK-NAME
JR NZ,L102A ; forward to NEXT-CHAN
BIT 0,(IX+$18)
JR Z,L102A ; forward to NEXT-CHAN
RST 20H ; sh_err
DEFB $0D
;; NEXT-CHAN
L102A: LD E,(IX+$09)
LD D,(IX+$0A)
ADD IX,DE
JR L0FF6 ; back to CHK-LOOP
;; CHAN-SPC
L1034: LD HL,($5C53) ; sv PROG
DEC HL
PUSH HL
LD BC,$0253
RST 10H ; CALBAS
DEFW $1655 ; main MAKE-ROOM
POP DE
PUSH DE
LD HL,$13CC
LD BC,$0019
LDIR
LD A,($5CD6) ; sv D_STR1
LD (IX+$19),A
LD BC,$0253
PUSH IX
POP HL
CALL L1691 ; routine REST-N-AD
EX DE,HL
LD BC,($5CDA) ; sv D_STR1
BIT 7,B
JR NZ,L106F ; forward to TEST-MAP
;; T-CH-NAME
L1061: LD A,B
OR C
JR Z,L106F ; forward to TEST-MAP
LD A,(HL)
LD (IX+$0E),A
INC HL
INC IX
DEC BC
JR L1061 ; back to T-CH-NAME
;; TEST-MAP
L106F: POP IX
EXX
LD A,H
OR L
JR NZ,L108A ; forward to ST-MAP-AD
LD HL,($5C4F) ; sv CHANS
PUSH HL
DEC HL
LD BC,L0020
RST 10H ; CALBAS
DEFW $1655 ; main MAKE-ROOM
POP HL
LD BC,L0020
ADD IX,BC
CALL L1691 ; routine REST-N-AD
;; ST-MAP-AD
L108A: LD (IX+$1A),L
LD (IX+$1B),H
LD A,$FF
LD B,$20
;; FILL-14AP
L1094: LD (HL),A
INC HL
DJNZ L1094 ; back to FILL-14AP
PUSH IX
POP HL
LD DE,$001C
ADD HL,DE
EX DE,HL
LD HL,$13E5
LD BC,$000C
LDIR
PUSH IX
POP HL
LD DE,$0037
LD BC,$000C
ADD HL,DE
EX DE,HL
LD HL,$13E5
LDIR
PUSH IX
POP HL
LD DE,($5C4F) ; sv CHANS
OR A
SBC HL,DE
INC HL
RET
; ---------------------------------
; THE 'RECLAIM "M" CHANNEL' ROUTINE
; ---------------------------------
;
;; DEL-M-BUF
L10C4: LD L,(IX+$1A)
LD H,(IX+$1B)
PUSH HL
LD A,(IX+$19)
PUSH AF
PUSH IX
POP HL
LD BC,$0253
RST 10H ; CALBAS
DEFW $19E8 ; main RECLAIM-2
PUSH IX
POP HL
LD DE,($5C4F) ; sv CHANS
OR A
SBC HL,DE
INC HL
LD BC,$0253
CALL L135F ; routine RE-ST-STRM
POP AF
POP HL
LD B,A
LD IX,($5C4F) ; sv CHANS
LD DE,$0014
ADD IX,DE
;; TEST-MCHL
L10F5: LD A,(IX+$00)
CP $80
JR Z,L1114 ; forward to RCLM-MAP
LD A,(IX+$04)
AND $7F
CP $4D
JR NZ,L110A ; forward to NXTCHAN
LD A,(IX+$19)
CP B
RET Z
;; NXTCHAN
L110A: LD E,(IX+$09)
LD D,(IX+$0A)
ADD IX,DE
JR L10F5 ; back to TEST-MCHL
;; RCLM-MAP
L1114: LD BC,L0020
PUSH HL
PUSH BC
RST 10H ; CALBAS
DEFW $19E8 ; main RECLAIM-2
POP BC
POP HL
CALL L1391 ; routine REST-MAP
RET
; -------------------------------
; THE '"M" CHANNEL INPUT' ROUTINE
; -------------------------------
;
;; M-INPUT
L1122: LD IX,($5C51) ; sv CURCHL
LD HL,$112C
JP L0CBD ; jump to CALL-INP
; ---------------------------------------
; THE '"M" CHANNEL INPUT SERVICE' ROUTINE
; ---------------------------------------
;
;; MCHAN-IN
L112C: BIT 0,(IX+$18)
JR Z,L1134 ; forward to TEST-M-BF
RST 20H ; sh_err
DEFB $0D
;; TEST-M-BF
L1134: LD E,(IX+$0B)
LD D,(IX+$0C)
LD L,(IX+$45)
LD H,(IX+$46)
SCF
SBC HL,DE
JR C,L1158 ; forward to CHK-M-EOF
INC DE
LD (IX+$0B),E
LD (IX+$0C),D
DEC DE
PUSH IX
ADD IX,DE
LD A,(IX+$52)
POP IX
SCF
RET
;; CHK-M-EOF
L1158: BIT 1,(IX+$43)
JR Z,L1162 ; forward to NEW-BUFF
XOR A
ADD A,$0D
RET
;; NEW-BUFF
L1162: LD DE,L0000
LD (IX+$0B),E
LD (IX+$0C),D
INC (IX+$0D)
CALL L1177 ; routine GET-RECD
XOR A
CALL L17F7 ; routine SEL-DRIVE
JR L1134 ; back to TEST-M-BF
; --------------------------
; THE 'GET A RECORD' ROUTINE
; --------------------------
;
;; GET-RECD
L1177: LD A,(IX+$19)
CALL L17F7 ; routine SEL-DRIVE
;; GET-R-2
L117D: LD BC,$04FB
LD ($5CC9),BC ; sv SECTOR
;; GET-R-LP
L1184: CALL L11A5 ; routine G-RD-RC
JR C,L119E ; forward to NXT-SCT
JR Z,L119E ; forward to NXT-SCT
LD A,(IX+$44)
CP (IX+$0D)
JR NZ,L119E ; forward to NXT-SCT
PUSH IX
POP HL
LD DE,$0052
ADD HL,DE
CALL L1346 ; routine CHKS-BUFF
RET Z
;; NXT-SCT
L119E: CALL L1312 ; routine DEC-SECT
JR NZ,L1184 ; back to GET-R-LP
RST 20H ; sh_err
DEFB $11
; ---------------------------------------
; THE 'GET HEADER AND DATA BLOCK' ROUTINE
; ---------------------------------------
;
;; G-RD-RC
L11A5: CALL $12C4
LD DE,$001B
ADD HL,DE
CALL L18A9 ; routine GET-M-BUF
CALL L1341 ; routine CHKS-HD-R
JR NZ,L11D6 ; forward to G-REC-ERR
BIT 0,(IX+$43)
JR NZ,L11D6 ; forward to G-REC-ERR
LD A,(IX+$43)
OR (IX+$46)
AND $02
RET Z
PUSH IX
POP HL
LD DE,$0047
ADD HL,DE
LD BC,$000A
CALL L131E ; routine CHK-NAME
JR NZ,L11D6 ; forward to G-REC-ERR
LD A,$FF
OR A
RET
;; G-REC-ERR
L11D6: SCF
RET
; --------------------------------
; THE '"M" CHANNEL OUTPUT' ROUTINE
; --------------------------------
;
;; MCHAN-OUT
L11D8: LD IX,$FFFA
ADD IX,DE
BIT 0,(IX+$18)
JR NZ,L11E6 ; forward to NOREAD
RST 20H ; sh_err
DEFB $0C
;; NOREAD
L11E6: LD E,(IX+$0B)
LD D,(IX+$0C)
PUSH IX
ADD IX,DE
LD (IX+$52),A
POP IX
INC DE
LD (IX+$0B),E
LD (IX+$0C),D
BIT 1,D
RET Z
; ------------------------------------------
; THE 'WRITE RECORD ONTO MICRODRIVE' ROUTINE
; ------------------------------------------
;
;; WR-RECD
L11FF: LD A,(IX+$19)
CALL L17F7 ; routine SEL-DRIVE
CALL L120D ; routine WRITE-PRC
XOR A
CALL L17F7 ; routine SEL-DRIVE
RET
;; WRITE-PRC
L120D: CALL L1264 ; routine CHK-FULL
JR NZ,L121B ; forward to NOFULL
CALL L10C4 ; routine DEL-M-BUF
XOR A
CALL L17F7 ; routine SEL-DRIVE
RST 20H ; sh_err
DEFB $0F
;; NOFULL
L121B: PUSH IX
LD B,$0A
;; CP-NAME
L121F: LD A,(IX+$0E)
LD (IX+$47),A
INC IX
DJNZ L121F ; back to CP-NAME
POP IX
LD C,(IX+$0B)
LD (IX+$45),C
LD A,(IX+$0C)
LD (IX+$46),A
LD A,(IX+$0D)
LD (IX+$44),A
PUSH IX
POP HL
LD DE,$0043
ADD HL,DE
CALL L1341 ; routine CHKS-HD-R
LD DE,$000F
ADD HL,DE
CALL L1346 ; routine CHKS-BUFF
PUSH IX
POP HL
LD DE,$0047
CALL L1275 ; routine SEND-BLK
LD DE,L0000
LD (IX+$0B),E
LD (IX+$0C),D
INC (IX+$0D)
RET
; ----------------------
; THE 'CHK-FULL' ROUTINE
; ----------------------
;
;; CHK-FULL
L1264: LD L,(IX+$1A)
LD H,(IX+$1B)
LD B,$20
;; NXT-B-MAP
L126C: LD A,(HL)
CP $FF
RET NZ
INC HL
DJNZ L126C ; back to NXT-B-MAP
XOR A
RET
; ----------------------
; THE 'SEND-BLK' ROUTINE
; ----------------------
;
;; SEND-BLK
L1275: PUSH IX
POP HL
LD DE,$0037
ADD HL,DE
PUSH HL
;; FAILED
L127D: CALL L12C4 ; routine GET-M-RD2
CALL L12DF ; routine CHECK-MAP
JR NZ,L127D ; back to FAILED
EX (SP),HL
PUSH BC
IN A,($EF)
AND $01
JR NZ,L128F ; forward to NO-PRT
RST 20H ; sh_err
DEFB $0E
;; NO-PRT
L128F: LD A,$E6
OUT ($EF),A
LD BC,$0168
CALL L18FA ; routine DELAY-BC
CALL L1878 ; routine OUT-H-BUF
LD A,$EE
OUT ($EF),A
POP BC
POP HL
LD A,B
OR (HL)
LD (HL),A
RET
; ------------------------
; THE 'CLOSE FILE' ROUTINE
; ------------------------
;
;; CLOSE-M
L12A6: PUSH HL
POP IX
;; CLOSE-M2
L12A9: BIT 0,(IX+$18)
JR Z,L12B6 ; forward to NOEMP
SET 1,(IX+$43)
CALL L11FF ; routine WR-RECD
;; NOEMP
L12B6: XOR A
CALL L17F7 ; routine SEL-DRIVE
CALL L10C4 ; routine DEL-M-BUF
RET
; --------------------
; THE 'ERR-RS' ROUTINE
; --------------------
;
;; ERR-RS
L12BE: POP HL
LD A,(HL)
LD ($5C3A),A ; sv ERR_NR
RST 28H ; romerr
; ------------------------------------------
; THE 'FETCH HEADER FROM MICRODRIVE' ROUTINE
; ------------------------------------------
;
;; GET-M-RD2
L12C4: PUSH IX
POP HL
LD DE,L0028
ADD HL,DE
CALL L18A3 ; routine GET-M-HD
CALL L1341 ; routine CHKS-HD-R
JR NZ,L12C4 ; back to GET-M-RD2
BIT 0,(IX+$28)
JR Z,L12C4 ; back to GET-M-RD2
RET
; ---------------------------------
; THE 'CHECK MAP BIT STATE' ROUTINE
; ---------------------------------
;
;; CHK-MAP-2
L12DA: LD E,(IX+$44)
JR L12E2 ; forward to ENTRY
;; CHECK-MAP
L12DF: LD E,(IX+$29)
;; ENTRY
L12E2: LD L,(IX+$1A)
LD H,(IX+$1B)
;; ENTRY-2
L12E8: XOR A
LD D,A
LD A,E
AND $07
SRL E
SRL E
SRL E
ADD HL,DE
LD B,A
INC B
XOR A
SCF
;; ROTATE
L12F8: RLA
DJNZ L12F8 ; back to ROTATE
LD B,A
AND (HL)
RET
; -----------------------------------
; THE 'RESET BIT IN MAP AREA' ROUTINE
; -----------------------------------
;
;; RES-B-HAP
L12FE: CALL L12DF ; routine CHECK-MAP
LD A,B
CPL
AND (HL)
LD (HL),A
RET
; ------------------------------------------
; THE 'CHECK 'PSEUDO-MAP' BIT STATE' ROUTINE
; ------------------------------------------
;
;; TEST-PHAP
L1306: PUSH IX
POP HL
LD DE,$0052
ADD HL,DE
LD E,(IX+$29)
JR L12E8 ; back to ENTRY-2
; -------------------------------------
; THE 'DECREASE SECTOR COUNTER' ROUTINE
; -------------------------------------
;
;; DEC-SECT
L1312: LD BC,($5CC9) ; sv SECTOR
DEC BC
LD ($5CC9),BC ; sv SECTOR
LD A,B
OR C
RET
; ------------------------
; THE 'CHECK-NAME' ROUTINE
; ------------------------
;
;; CHK-NAME
L131E: PUSH IX
LD B,$0A
;; ALL-CHARS
L1322: LD A,(HL)
CP (IX+$0E)
JR NZ,L133E ; forward to CHKNAM-END
INC HL
INC IX
DEC B
DEC C
JR NZ,L1322 ; back to ALL-CHARS
LD A,B
OR A
JR Z,L133E ; forward to CHKNAM-END
;; ALLCHR-2
L1333: LD A,(IX+$0E)
CP $20
JR NZ,L133E ; forward to CHKNAM-END
INC IX
DJNZ L1333 ; back to ALLCHR-2
;; CHKNAM-END
L133E: POP IX
RET
; -----------------------------------------
; THE 'CALCULATE/COMPARE CHECKSUMS' ROUTINE
; -----------------------------------------
;
;; CHKS-HD-R
L1341: LD BC,$000E
JR L1349 ; forward to CNKS-ALL
;; CHKS-BUFF
L1346: LD BC,$0200
;; CNKS-ALL
L1349: PUSH HL
LD E,$00
;; NXT-BYTE
L134C: LD A,E
ADD A,(HL)
INC HL
ADC A,$01
JR Z,L1354 ; forward to STCHK
DEC A
;; STCHK
L1354: LD E,A
DEC BC
LD A,B
OR C
JR NZ,L134C ; back to NXT-BYTE
LD A,E
CP (HL)
LD (HL),A
POP HL
RET
; ---------------------------------
; THE 'RESTORE STREAM DATA' ROUTINE
; ---------------------------------
;
;; RE-ST-STRM
L135F: PUSH HL
LD A,$10
LD HL,$5C16 ; sv STRMS_00
;; NXT-STRM
L1365: LD ($5C5F),HL ; sv X_PTR
LD E,(HL)
INC HL
LD D,(HL)
POP HL
PUSH HL
OR A
SBC HL,DE
JR NZ,L1377 ; forward to NOTRIGHT
LD DE,L0000
JR L137E ; forward to STO-DISP
;; NOTRIGHT
L1377: JR NC,L1384 ; forward to UPD-POINT
EX DE,HL
OR A
SBC HL,BC
EX DE,HL
;; STO-DISP
L137E: LD HL,($5C5F) ; sv X_PTR
LD (HL),E
INC HL
LD (HL),D
;; UPD-POINT
L1384: LD HL,($5C5F) ; sv X_PTR
INC HL
INC HL
DEC A
JR NZ,L1365 ; back to NXT-STRM
LD ($5C5F),A ; sv X_PTR
POP HL
RET
; -----------------------------------
; THE 'RESTORE MAP ADDRESSES' ROUTINE
; -----------------------------------
;
;; REST-MAP
L1391: LD BC,L0020
LD IX,($5C4F) ; sv CHANS
LD DE,$0014
ADD IX,DE
;; LCHAN
L139D: LD A,(IX+$00)
CP $80
RET Z
PUSH HL
LD A,(IX+$04)
AND $7F
CP $4D
JR NZ,L13C1 ; forward to LPEND
LD E,(IX+$1A)
LD D,(IX+$1B)
SBC HL,DE
JR NC,L13C1 ; forward to LPEND
EX DE,HL
OR A
SBC HL,BC
LD (IX+$1A),L
LD (IX+$1B),H
;; LPEND
L13C1: POP HL
LD E,(IX+$09)
LD D,(IX+$0A)
ADD IX,DE
JR L139D ; back to LCHAN
; ------------------------------
; THE '"M" CHANNEL DATA' ROUTINE
; ------------------------------
;
;;
L13CC: DEFW $0008 ; main ERROR-1
DEFW $0008 ; main ERROR-1
DEFB $CD
DEFW $11D8 ;
DEFW $1122 ;
DEFW $0253 ;
DEFW $0000 ;
DEFB $00
DEFM " " ; 10 spaces
DEFB $FF
; ---------------------------
; THE 'PREAMBLE DATA' ROUTINE
; ---------------------------
;
;;
L13E5: DEFB $00, $00, $00
DEFB $00, $00, $00
DEFB $00, $00, $00
DEFB $00, $FF, $FF
; --------------------------
; THE 'MOVE COMMAND' ROUTINE
; --------------------------
;
;; MOVE
L13F1: SET 4,(IY+$7C) ; sv FLAGS_3
CALL L1455 ; routine OP-STRM
LD HL,($5C4F) ; sv CHANS
PUSH HL
CALL L14C7 ; routine EX-DSTR2
CALL L1455 ; routine OP-STRM
CALL L14C7 ; routine EX-DSTR2
POP DE
LD HL,($5C4F) ; sv CHANS
OR A
SBC HL,DE
LD DE,($5CDA) ; sv D_STR1
ADD HL,DE
LD ($5CDA),HL ; sv D_STR1
;; M-AGAIN
L1414: LD HL,($5CDA) ; sv D_STR1
LD ($5C51),HL ; sv CURCHL
;; I-AGAIN
L141A: RST 10H ; CALBAS
DEFW $15E6 ; main INPUT-AD
JR C,L1423 ; forward to MOVE-OUT
JR Z,L141A ; back to I-AGAIN
JR L142E ; forward to MOVE-EOF
;; MOVE-OUT
L1423: LD HL,($5CE2) ; sv D_STR2
LD ($5C51),HL ; sv CURCHL
RST 10H ; CALBAS
DEFW $0010 ; main PRINT-A
JR L1414 ; back to M-AGAIN
;; MOVE-EOF
L142E: RES 4,(IY+$7C) ; sv FLAGS_3
LD HL,($5C4F) ; sv CHANS
PUSH HL
CALL L14C7 ; routine EX-DSTR2
CALL L14A4 ; routine CL-CHAN
CALL L14C7 ; routine EX-DSTR2
POP DE
LD HL,($5C4F) ; sv CHANS
OR A
SBC HL,DE
LD DE,($5CDA) ; sv D_STR1
ADD HL,DE
LD ($5CDA),HL ; sv D_STR1
CALL L14A4 ; routine CL-CHAN
CALL L17B9 ; routine RCL-T-CH
RET
; ---------------------------------------------
; THE 'USE STREAM OR TEMPORARY CHANNEL' ROUTINE
; ---------------------------------------------
;
;; OP-STRM
L1455: LD A,($5CD8) ; sv D_STR1
INC A
JR Z,L1466 ; forward to OP-CHAN
DEC A
RST 10H ; CALBAS
DEFW $1601 ; main CHAN-OPEN
LD HL,($5C51) ; sv CURCHL
LD ($5CDA),HL ; sv D_STR1
RET
;; OP-CHAN
L1466: LD A,($5CD9) ; sv D_STR1
CP $4D
JR NZ,L147F ; forward to CHECK-N
CALL L1B29 ; routine OP-TEMP-M
XOR A
CALL L17F7 ; routine SEL-DRIVE
LD ($5CDA),IX ; sv D_STR1
BIT 2,(IX+$43)
RET Z
RST 20H ; sh_err
DEFB $16
;; CHECK-N
L147F: CP $4E
JR NZ,L148B ; forward to CHECK-R
CALL L0EA9 ; routine OP-TEMP-N
LD ($5CDA),IX ; sv D_STR1
RET
;; CHECK-R
L148B: CP $54
JR Z,L1495 ; forward to USE-R
CP $42
JR Z,L1495 ; forward to USE-R
RST 20H ; sh_err
DEFB $00
;; USE-R
L1495: CALL L0B13 ; routine OP-RS-CH
LD ($5CDA),DE ; sv D_STR1
PUSH DE
POP IX
SET 7,(IX+$04)
RET
; ----------------------------------
; THE 'CLOSE 'MOVE' CHANNEL' ROUTINE
; ----------------------------------
;
;; CL-CHAN
L14A4: LD A,($5CD8) ; sv D_STR1
INC A
RET NZ
LD A,($5CD9) ; sv D_STR1
CP $4D
JR NZ,L14B8 ; forward to CL-CHK-N
LD IX,($5CDA) ; sv D_STR1
CALL L12A9 ; routine CLOSE-M2
RET
;; CL-CHK-N
L14B8: CP $4E
RET NZ
LD IX,($5CDA) ; sv D_STR1
LD ($5C51),IX ; sv CURCHL
CALL L0EF5 ; routine SEND-NEOF
RET
; ----------------------------------------------
; THE 'EXCHANGE DSTRI AND STR2 CONTENTS' ROUTINE
; ----------------------------------------------
;
;; EX-DSTR2
L14C7: LD DE,$5CD6 ; sv D_STR1
LD HL,$5CDE ; sv D_STR2
LD B,$08
;; ALL-BYT-2
L14CF: LD A,(DE)
LD C,(HL)
EX DE,HL
LD (HL),C
LD (DE),A
EX DE,HL
INC HL
INC DE
DJNZ L14CF ; back to ALL-BYT-2
RET
; ---------------------------------------------
; THE 'SAVE DATA BLOCK INTO MICRODRIVE' ROUTINE
; ---------------------------------------------
;
;; SA-DRIVE
L14DA: LD A,($5CD6) ; sv D_STR1
CALL L17F7 ; routine SEL-DRIVE
IN A,($EF)
AND $01
JR NZ,L14E8 ; forward to START-SA
RST 20H ; sh_err
DEFB $0E
;; START-SA
L14E8: LD HL,($5CE9) ; sv HD_0D
LD ($5CE4),HL ; sv D_STR2
CALL L1B29 ; routine OP-TEMP-M
BIT 0,(IX+$18)
JR NZ,L14FC ; forward to NEW-NAME
CALL L12A9 ; routine CLOSE-M2
RST 20H ; sh_err
DEFB $0C
;; NEW-NAME
L14FC: SET 2,(IX+$43)
LD A,(IX+$19)
CALL L17F7 ; routine SEL-DRIVE
PUSH IX
POP HL
LD DE,$0052
ADD HL,DE
EX DE,HL
LD HL,$5CE6 ; sv HD_00
LD BC,$0009
LD (IX+$0B),C
LDIR
PUSH DE
LD HL,$0009
LD BC,($5CE7) ; sv HD_0B
ADD HL,BC
SRL H
INC H
PUSH HL
CALL L1D38 ; routine FREESECT
POP HL
LD A,E
CP H
JR NC,L1530 ; forward to SA-DRI-2
RST 20H ; sh_err
DEFB $0F
;; SA-DRI-2
L1530: POP DE
LD HL,($5CE4) ; sv D_STR2
LD BC,($5CE7) ; sv HD_0B
;; SA-DRI-3
L1538: LD A,B
OR C
JR Z,L155E ; forward to SA-DRI-4
LD A,(IX+$0C)
CP $02
JR NZ,L1552 ; forward to SA-DRI-WR
PUSH HL
PUSH BC
CALL L120D ; routine WRITE-PRC
POP BC
PUSH IX
POP HL
LD DE,$0052
ADD HL,DE
EX DE,HL
POP HL
;; SA-DRI-WR
L1552: LDI
INC (IX+$0B)
JR NZ,L1538 ; back to SA-DRI-3
INC (IX+$0C)
JR L1538 ; back to SA-DRI-3
;; SA-DRI-4
L155E: SET 1,(IX+$43)
CALL L120D ; routine WRITE-PRC
LD A,($5CEF) ; sv COPIES
DEC A
JR Z,L1579 ; forward to END-SA-DR
LD ($5CEF),A ; sv COPIES
RES 1,(IX+$43)
LD A,$00
LD (IX+$0D),A
JR L14FC ; back to NEW-NAME
;; END-SA-DR
L1579: XOR A
CALL L17F7 ; routine SEL-DRIVE
JP L10C4 ; jump to DEL-M-BUF
; ----------------------------------------------------
; THE 'GET HEADER INFORMATION FROM MICRODRIVE' ROUTINE
; ----------------------------------------------------
;
;; F-M-HM
L1580: LD HL,($5CE1) ; sv D_STR2
LD ($5CE4),HL ; sv D_STR2
CALL L1B29 ; routine OP-TEMP-M
BIT 0,(IX+$18)
JR Z,L1591 ; forward to F-HD-2
RST 20H ; sh_err
DEFB $11
;; F-HD-2
L1591: BIT 2,(IX+$43) ;
JR NZ,L1599 ; forward to F-HD-3
RST 20H ; sh_err
DEFB $16
;; F-HD-3
L1599: PUSH IX
POP HL
LD DE,$0052
ADD HL,DE
LD DE,$5CE6 ; sv HD_00
LD BC,$0009
LDIR
RET
; --------------------------------------------------
; THE 'LOAD OR VERIFY BLOCK FROM MICRODRIVE' ROUTINE
; --------------------------------------------------
;
;; LV-MCH
L15A9: LD ($5CE9),HL ; sv HD_0D
LD E,(IX+$53)
LD D,(IX+$54)
LD HL,L0008
ADD HL,DE
SRL H
INC H
LD A,H
LD ($5CE7),A ; sv HD_0B
CALL L1613 ; routine SA-MAP
LD DE,$0009
LD L,(IX+$45)
LD H,(IX+$46)
OR A
SBC HL,DE
LD (IX+$45),L
LD (IX+$46),H
PUSH IX
POP HL
LD DE,$005B
ADD HL,DE
LD DE,($5CE9) ; sv HD_0D
JR L15F9 ; forward to LOOK-MAP
;; USE-REC
L15DF: CALL L166C ; routine F-REC2
LD A,(IX+$44)
OR A
JR Z,L15DF ; back to USE-REC
RLA
DEC A
LD D,A
LD E,$F7
LD HL,($5CE9) ; sv HD_0D
ADD HL,DE
EX DE,HL
PUSH IX
POP HL
LD BC,$0052
ADD HL,BC
;; LOOK-MAP
L15F9: EXX
CALL L12DA ; routine CHK-MAP-2
JR NZ,L15DF ; back to USE-REC
LD A,(HL)
OR B
LD (HL),A
EXX
CALL L1648 ; routine LD-VE-M
LD A,($5CE7) ; sv HD_0B
DEC A
LD ($5CE7),A ; sv HD_0B
JR NZ,L15DF ; back to USE-REC
CALL L162D ; routine RE-MAP
RET
; ------------------------------------------
; THE 'SAVE MICRODRIVE MAP CONTENTS' ROUTINE
; ------------------------------------------
;
;; SA-MAP
L1613: POP HL
LD ($5CC9),HL ; sv SECTOR
LD L,(IX+$1A)
LD H,(IX+$1B)
LD BC,$1000
;; SA-HAP-LP
L1620: LD E,(HL)
LD (HL),C
INC HL
LD D,(HL)
LD (HL),C
INC HL
PUSH DE
DJNZ L1620 ; back to SA-HAP-LP
LD HL,($5CC9) ; sv SECTOR
JP (HL)
; ---------------------------------------------
; THE 'RESTORE MICRODRIVE MAP CONTENTS' ROUTINE
; ---------------------------------------------
;
;; RE-MAP
L162D: POP HL
LD ($5CC9),HL ; sv SECTOR
LD L,(IX+$1A)
LD H,(IX+$1B)
LD DE,$001F
ADD HL,DE
LD B,$10
;; RE-MAP-LP
L163D: POP DE
LD (HL),D
DEC HL
LD (HL),E
DEC HL
DJNZ L163D ; back to RE-MAP-LP
LD HL,($5CC9) ; sv SECTOR
JP (HL)
; ---------------------
; THE 'LD-VE-M' ROUTINE
; ---------------------
;
;; LD-VE-M
L1648: LD C,(IX+$45)
LD B,(IX+$46)
LD A,($5CB6) ; sv FLAGS_3
BIT 7,A
JR NZ,L1658 ; forward to VE-M-E
LDIR
RET
;; VE-M-E
L1658: LD A,(DE)
CP (HL)
JR NZ,L1664 ; forward to VE-FAIL
INC HL
INC DE
DEC BC
LD A,B
OR C
JR NZ,L1658 ; back to VE-M-E
RET
;; VE-FAIL
L1664: RST 20H ; sh_err
DEFB $15
; -------------------------------------------
; THE 'FETCH RECORD FROM MICRODRIVE.' ROUTINE
; -------------------------------------------
;
;; F-REC1
L1666: LD A,(IX+$19)
CALL L17F7 ; routine SEL-DRIVE
;; F-REC2
L166C: LD BC,$04FB
LD ($5CC9),BC ; sv SECTOR
;; UNTILFIVE
L1673: CALL L11A5 ; routine G-RD-RC
JR C,L168A ; forward to F-ERROR
JR Z,L168A ; forward to F-ERROR
CALL L12DA ; routine CHK-MAP-2
JR NZ,L168A ; forward to F-ERROR
PUSH IX
POP HL
LD DE,$0052
ADD HL,DE
CALL L1346 ; routine CHKS-BUFF
RET Z
;; F-ERROR
L168A: CALL L1312 ; routine DEC-SECT
JR NZ,L1673 ; back to UNTILFIVE
RST 20H ; sh_err
DEFB $11
; -----------------------------------------
; THE 'RESTORE ADDRESS OF FILENAME' ROUTINE
; -----------------------------------------
;
;; REST-N-AD
L1691: PUSH HL
PUSH HL
LD DE,($5CE4) ; sv D_STR2
CALL L16AC ; routine TST-PLACE
LD ($5CE4),DE ; sv D_STR2
POP HL
LD DE,($5CDC) ; sv D_STR1
CALL L16AC ; routine TST-PLACE
LD ($5CDC),DE ; sv D_STR1
POP HL
RET
;; TST-PLACE
L16AC: SCF
SBC HL,DE
RET NC
LD HL,($5C65) ; sv STKEND
SBC HL,DE
RET C
EX DE,HL
ADD HL,BC
EX DE,HL
RET
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
; --------------------------
; THE 'CLOSE STREAM' ROUTINE
; --------------------------
;
;; CLOSE-CH
L1708: INC HL
RST 30H ; NEWVARS
SRL A
SUB $03
RES 1,(IY+$7C) ; sv FLAGS_3
CALL L1718 ; routine CLOSE
JP L05C1 ; jump to END1
; ---------------------------
; THE 'CLOSE COMMAND' ROUTINE
; ---------------------------
;
;; CLOSE
L1718: RST 10H ; CALBAS
DEFW $1727 ; main STR-DATA1
LD A,C
OR B
RET Z
PUSH BC
PUSH HL
LD HL,($5C4F) ; sv CHANS
DEC HL
ADD HL,BC
EX (SP),HL
RST 10H ; CALBAS
DEFW $16EB ; main CLOSEX
LD HL,($5C4F) ; sv CHANS
LD DE,$0014
ADD HL,DE
POP DE
SCF
SBC HL,DE
POP BC
RET NC
PUSH BC
PUSH DE
EX DE,HL
LD ($5C51),HL ; sv CURCHL
INC HL
INC HL
INC HL
INC HL
LD A,(HL)
LD DE,$0005
ADD HL,DE
LD E,(HL)
INC HL
LD D,(HL)
PUSH DE
CP $42
JR Z,L1751 ; forward to CL-RS-CH
CP $54
JR NZ,L175E ; forward to CL-N-CH
;; CL-RS-CH
L1751: BIT 1,(IY+$7C) ; sv FLAGS_3
JR NZ,L177F ; forward to RCLM-CH
LD A,$0D
CALL L0C5A ; routine BCHAN-OUT
JR L177F ; forward to RCLM-CH
;; CL-N-CH
L175E: CP $4E
JR NZ,L176D ; forward to CL-M-CN
BIT 1,(IY+$7C) ; sv FLAGS_3
JR NZ,L177F ; forward to RCLM-CH
CALL L0EF5 ; routine SEND-NEOF
JR L177F ; forward to RCLM-CH
;; CL-M-CN
L176D: CP $4D
JR NZ,L177F ; forward to RCLM-CH
POP DE
POP IX
POP DE
BIT 1,(IY+$7C) ; sv FLAGS_3
JP Z,L12A9 ; jump to CLOSE-M2
JP L10C4 ; jump to DEL-M-BUF
;; RCLM-CH
L177F: POP BC
POP HL
PUSH BC
RST 10H ; CALBAS
DEFW $19E8 ; main RECLAIM-2
XOR A
LD HL,$5C16 ; sv STRMS_00
;; UPD-STRM
L1789: LD E,(HL)
INC HL
LD D,(HL)
DEC HL
LD ($5C5F),HL ; sv X_PTR
POP BC
POP HL
PUSH HL
PUSH BC
AND A
SBC HL,DE
JR NC,L17A4 ; forward to UPD-NXT-S
EX DE,HL
AND A
SBC HL,BC
EX DE,HL
LD HL,($5C5F) ; sv X_PTR
LD (HL),E
INC HL
LD (HL),D
;; UPD-NXT-S
L17A4: LD HL,($5C5F) ; sv X_PTR
INC HL
INC HL
INC A
CP $10
JR C,L1789 ; back to UPD-STRM
LD (IY+$26),$00 ; sv X_PTR_hi
POP HL
POP HL
RES 1,(IY+$7C) ; sv FLAGS_3
RET
; ----------------------------------------
; THE 'RECLAIM TEMPORARY CHANNELS' ROUTINE
; ----------------------------------------
;
;; RCL-T-CH
L17B9: LD IX,($5C4F) ; sv CHANS
LD DE,$0014
ADD IX,DE
;; EX-CHANS
L17C2: LD A,(IX+$00)
CP $80
JR NZ,L17D2 ; forward to CHK-TEMPM
LD A,$EE
OUT ($EF),A
XOR A
JP L17F7 ; jump to SEL-DRIVE
; ---
RET
;; CHK-TEMPM
L17D2: LD A,(IX+$04)
CP $CD
JR NZ,L17DE ; forward to CHK-TEMPN
CALL L10C4 ; routine DEL-M-BUF
JR L17B9 ; back to RCL-T-CH
;; CHK-TEMPN
L17DE: CP $CE
JR NZ,L17ED ; forward to PT-N-CHAN
LD BC,$0114
PUSH IX
POP HL
RST 10H ; CALBAS
DEFW $19E8 ; main RECLAIM-2
JR L17B9 ; back to RCL-T-CH
;; PT-N-CHAN
L17ED: LD E,(IX+$09)
LD D,(IX+$0A)
ADD IX,DE
JR L17C2 ; back to EX-CHANS
; --------------------------------
; THE 'SELECT DRIVE MOTOR' ROUTINE
; --------------------------------
;
;; SEL-DRIVE
L17F7: PUSH HL
CP $00
JR NZ,L1802 ; forward to TURN-ON
CALL L182A ; routine SW-MOTOR
EI
POP HL
RET
;; TURN-ON
L1802: DI
CALL L182A ; routine SW-MOTOR
LD HL,$1388
;; TON-DELAY
L1809: DEC HL
LD A,H
OR L
JR NZ,L1809 ; back to TON-DELAY
LD HL,$1388
;; REPTEST
L1811: LD B,$06
;; CHK-PRES
L1813: CALL L18E9 ; routine TEST-BRK
IN A,($EF)
AND $04
JR NZ,L1820 ; forward to NOPRES
DJNZ L1813 ; back to CHK-PRES
POP HL
RET
;; NOPRES
L1820: DEC HL
LD A,H
OR L
JR NZ,L1811 ; back to REPTEST
CALL L17F7 ; routine SEL-DRIVE
RST 20H ; sh_err
DEFB $10
;; SW-MOTOR
L182A: PUSH DE
LD DE,$0100
NEG
ADD A,$09
LD C,A
LD B,$08
;; ALL-MOTRS
L1835: DEC C
JR NZ,L184B ; forward to OFF-MOTOR
LD A,D
OUT ($F7),A
LD A,$EE
OUT ($EF),A
CALL L1867 ; routine DEL-S-1
LD A,$EC
OUT ($EF),A
CALL L1867 ; routine DEL-S-1
JR L185C ; forward to NXT-MOTOR
;; OFF-MOTOR
L184B: LD A,$EF
OUT ($EF),A
LD A,E
OUT ($F7),A
CALL L1867 ; routine DEL-S-1
LD A,$ED
OUT ($EF),A
CALL L1867 ; routine DEL-S-1
;; NXT-MOTOR
L185C: DJNZ L1835 ; back to ALL-MOTRS
LD A,D
OUT ($F7),A
LD A,$EE
OUT ($EF),A
POP DE
RET
; ---------------------------------
; THE '1 MILLISECOND DELAY' ROUTINE
; ---------------------------------
;
;; DEL-S-1
L1867: PUSH BC
PUSH AF
LD BC,$0087
CALL L18FA ; routine DELAY-BC
POP AF
POP BC
RET
; ------------------------------------------------
; THE 'SEND DATA BLOCK TO MICRODRIVE HEAD' ROUTINE
; ------------------------------------------------
;
;; OUT-M-HD
L1872: PUSH HL
LD DE,$001E
JR L187C ; forward to OUT-M-BLK
;; OUT-H-BUF
L1878: PUSH HL
LD DE,$021F
;; OUT-M-BLK
L187C: IN A,($EF)
AND $01
JR NZ,L1884 ; forward to NOT-PROT
RST 20H ; sh_err
DEFB $0E
;; NOT-PROT
L1884 LD A,($5CC6) ; sv IOBORD
OUT ($FE),A
LD A,$E2
OUT ($EF),A
INC D
LD A,D
LD B,E
LD C,$E7
NOP
NOP
NOP
;; OUT-M-BYT
L1895: OTIR
DEC A
JR NZ,L1895 ; back to OUT-M-BYT
LD A,$E6
OUT ($EF),A
CALL L0CA9 ; routine BORD-REST
POP HL
RET
; ------------------------------------------------
; THE 'RECEIVE BLOCK FROM MICRODRIVE HEAD' ROUTINE
; ------------------------------------------------
;
;; GET-M-HD
L18A3: PUSH HL
LD DE,$000F
JR L18AD ; forward to GET-M-BLK
;; GET-M-BUF
L18A9: PUSH HL
LD DE,$0210
;; GET-M-BLK
L18AD: LD B,E
LD C,D
INC C
PUSH BC
;; CHK-AGAIN
L18B1: LD B,$08
;; CHKLOOP
L18B3: CALL L18E9 ; routine TEST-BRK
IN A,($EF)
AND $04
JR Z,L18B1 ; back to CHK-AGAIN
DJNZ L18B3 ; back to CHKLOOP
;; CHK-AC-2
L18BE: LD B,$06
;; CHK-LP-2
L18C0: CALL L18E9 ; routine TEST-BRK
IN A,($EF)
AND $04
JR NZ,L18BE ; back to CHK-AC-2
DJNZ L18C0 ; back to CHK-LP-2
POP BC
LD A,$EE
OUT ($EF),A
POP HL
PUSH HL
;; DR-READY
L18D2: IN A,($EF)
AND $02
JR NZ,L18D2 ; back to DR-READY
CALL L18E9 ; routine TEST-BRK
LD A,C
LD C,$E7
;; IN-M-BLK
L18DE: INIR
DEC A
JR NZ,L18DE ; back to IN-M-BLK
LD A,$EE
OUT ($EF),A
POP HL
RET
; ----------------------
; THE 'TEST-BRK' ROUTINE
; ----------------------
;
;; TEST-BRK
L18E9: LD A,$7F
IN A,($FE)
RRA
RET C
LD A,$FE
IN A,($FE)
RRA
RET C
LD (IY+$00),$14 ; sv ERR_NR
RST 28H ; romerr
; ----------------------
; THE 'DELAY-BC' ROUTINE
; ----------------------
;
;; DELAY-BC
L18FA: PUSH AF
;; DELAY-BC1
L18FB: DEC BC
LD A,B
OR C
JR NZ,L18FB ; back to DELAY-BC1
POP AF
RET
; -------------------------------------------------
; THE '32-BIT CYCLICAL REDUNDANCY CHECKSUM' ROUTINE
; -------------------------------------------------
; This routine calculates and then checks and inserts a CRC-32 checksum
; in the four bytes following the 512 bytes of data. There is only one
; byte allocated for the checksum in production models and this routine
; was removed from the second Interface 1 ROM.
;; CRC-32
L1902: PUSH HL
PUSH IX
POP HL
LD BC,$0052
ADD HL,BC
LD B,H ; BC=&CHDATA
LD C,L
LD HL,L0000 ; HL=0
LD DE,L0000 ; DE=0
EXX
LD BC,$0200 ; BC'=512
LD HL,L0000 ; HL'=0
LD DE,L0000 ; DE'=0
;; CRC-32a
L191C: EXX
LD A,(BC) ; Get CHDATA byte
INC BC ; point to next byte
ADD A,E ; Accumulate in E
LD E,A
JR NC,L1929 ; forward to CRC-32b
INC D ; overflow into D
JR NZ,L1929 ; forward to CRC-32b
EXX
INC DE ; overflow into DE'
EXX
;; CRC-32b
L1929: ADD HL,DE ; accumulate DED'E' in HLH'L'
EXX
ADC HL,DE
DEC BC ; count down
LD A,B
OR C
JR NZ,L191C ; back to CRC-32a
LD D,E ; bits 0-7 move to 8-15
EXX
LD A,D ; copy to A
LD E,$00 ; clear bits 0-7
SLA D ; move 8-14 to 9-15, 15 to cy
EXX
LD E,A ; 8-15 to 0-7
RL E ; cy to 0 0-6 to 1-7,7 to cy
RL D ; cy to 8 8-14 to 9-15,15 to cy
EXX
ADD HL,DE ; accumulate 0-15 in HL
EXX
ADC HL,DE ; accumulate 16-31 in H'L'
PUSH HL ; save CRC 16-31
EXX
PUSH HL ; swap CRC 0-15 w/ CHDATA
PUSH BC
POP HL
POP BC
LD E,$00 ; say data 'Ok'
LD A,C
CP (HL) ; test CRC-ll on data
JR Z,L1952 ; forward to CRC-32c
INC E ; say data 'corrupted'
LD (HL),A ; set correct CRC-ll
;; CRC-32c
L1952: INC HL ; point to high byte
LD A,B
CP (HL) ; test CRC-lh on data
JR Z,L1959 ; forward to CRC-32d
INC E ; say data 'corrupted'
LD (HL),A ; set CRC-lh
;; CRC-32d
;; UNKN-5
L1959: INC HL
POP BC ; pop CRC 15-31
LD A,C
CP (HL) ; test CRC-hl on data
JR Z,L1961 ; forward to CRC-32e
INC E ; say data 'corrupted'
LD (HL),A ; set CRC-hl
;; CRC-32e
L1961: INC HL
LD A,B
CP (HL) ; test CRC-hh on data
JR Z,L1968 ; forward to CRC-32f
INC E ; say data 'corrupted'
LD (HL),A ; set CRC-hh
;; CRC-32f
L1968: LD A,E ;set Z Flag when data OK
OR A
POP HL
RET ; return.
; ------------------------------------------
; THE 'ENCRYPT/DECRYPT CHANNEL DATA' ROUTINE
; ------------------------------------------
; This subroutine encrypts the 512 bytes of the microdrive buffer on the
; first call and decrypyts the contents if they are already encrytped.
;; ENCR-CHDAT
L196C: PUSH IX
POP HL
LD DE,$0052 ; CHDATA
ADD HL,DE ; set hl to ix+CHDATA
LD BC,$0200 ; 512 bytes
;; ENCR-CHD1
L1976: LD A,(HL) ; get a byte
XOR $55 ; smash some bits
LD (HL),A ; set the byte
INC HL ; next byte
DEC BC ; count down
LD A,B ; test for BC=0
OR C
JR NZ,L1976 ; back to ENCR-CHD1
RET ; return.
; -----------------------
; THE 'HOOK-CODE' ROUTINE
; -----------------------
;
;; HOOK-CODE
L1981: CP $18
JR C,L1987 ; forward to CLR-ERR
RST 20H ; sh_err
DEFB $12
;; CLR-ERR
L1987: LD (IY+$00),$FF ; sv ERR_NR
SET 2,(IY+$01) ; sv FLAGS
INC HL
EX (SP),HL
PUSH HL
ADD A,A
LD D,$00
LD E,A
LD HL,$19A9
ADD HL,DE
LD E,(HL)
INC HL
LD D,(HL)
POP AF
LD HL,L0700
PUSH HL
EX DE,HL
JP (HL)
; ---------------------------
; THE 'HOOK CODE +32' ROUTINE
; ---------------------------
;
;; HOOK-32
L19A4: LD HL,($5CED) ; sv HD_11
JP (HL)
; ---------------------------
; THE 'HOOK CODE +31' ROUTINE
; ---------------------------
;
;; HOOK-31
L19A8: RET
; ---------------------------------
; THE 'HOOK CODE ADDRESSES' ROUTINE
; ---------------------------------
;
;;
L19A9: DEFW L19D9 ; CONS-IN
DEFW L19EC ;
DEFW L0B81 ;
DEFW L0C5A ;
DEFW L19FC ;
DEFW L1A01 ;
DEFW L17F7 ;
DEFW L1B29 ;
DEFW L12A9 ;
DEFW L1D6E ;
DEFW L1A09 ;
DEFW L11FF ;
DEFW L1A17 ;
DEFW L1A4B ;
DEFW L1A86 ;
DEFW L1A91 ;
DEFW L1B29 ;
DEFW L10C4 ;
DEFW L0EA9 ;
DEFW L1A24 ;
DEFW L1A31 ;
DEFW L0DB2 ;
DEFW L19A8 ;
DEFW L19A4 ;
; ---------------------------
; THE 'CONSOLE INPUT' ROUTINE
; ---------------------------
;
;; CONS-IN
L19D9: EI
RES 5,(IY+$01) ; sv FLAGS
;; WTKEY
L19DE: HALT
RST 10H ; CALBAS
DEFW $02BF ; main KEYBOARD
BIT 5,(IY+$01) ; sv FLAGS
JR Z,L19DE ; back to WTKEY
LD A,($5C08) ; sv LASTK
RET
; ----------------------------
; THE 'CONSOLE OUTPUT' ROUTINE
; ----------------------------
;
;; CONS-OUT
L19EC: PUSH AF
LD A,$FE
;; OUT-CODE
L19EF: LD HL,$5C8C ; sv SCR_CT
LD (HL),$FF
RST 10H ; CALBAS
DEFW $1601 ; main CHAN-OPEN
POP AF
RST 10H ; CALBAS
DEFW $0010 ; main PRINT-A
RET
; ----------------------------
; THE 'PRINTER OUTPUT' ROUTINE
; ----------------------------
;
;; PRT-OUT
L19FC: PUSH AF
LD A,$03
JR L19EF ; back to OUT-CODE
; ---------------------------
; THE 'KEYBOARD TEST' ROUTINE
; ---------------------------
;
;; KBD-TEST
L1A01: XOR A
IN A,($FE)
AND $1F
SUB $1F
RET
; -----------------------------
; THE 'READ SEQUENTIAL' ROUTINE
; -----------------------------
;
;; READ-SEQ
L1A09: BIT 1,(IX+$43)
JR Z,L1A14 ; forward to INCREC
LD (IY+$00),$07 ; sv ERR_NR
RST 28H ; romerr
;; INCREC
L1A14: INC (IX+$0D)
; -------------------------
; THE 'READ RANDOM' ROUTINE
; -------------------------
;
;; RD-RANDOM
L1A17: CALL L1177 ; routine GET-RECD
BIT 2,(IX+$43)
RET Z
CALL L10C4 ; routine DEL-M-BUF
RST 20H ; sh_err
DEFB $16
; -----------------------------------
; THE 'CLOSE NETWORK CHANNEL' ROUTINE
; -----------------------------------
;
;; CLOSE-NET
L1A24: CALL $0EF5
PUSH IX
POP HL
LD BC,$0114
RST 10H ; CALBAS
DEFW $19E8 ; main RECLAIM-2
RET
; -------------------------------------
; THE 'GET PACKET FROM NETWORK' ROUTINE
; -------------------------------------
;
;; GET-PACK
L1A31: LD A,($5CC6) ; sv IOBORD
OUT ($FE),A
DI
CALL L0F1E ; routine WT-SCOUT
JR NC,L1A46 ; forward to GP-ERROR
CALL L0E18 ; routine GET-NBLK
JR NZ,L1A46 ; forward to GP-ERROR
EI
AND A
JP L0CA9 ; jump to BORD-REST
;; GP-ERROR
L1A46: SCF
EI
JP L0CA9 ; jump to BORD-REST
; -------------------------
; THE 'READ SECTOR' ROUTINE
; -------------------------
;
;; RD-SECTOR
L1A4B: LD HL,$00F0 ; counts 240 sectors.
LD ($5CC9),HL ; sv SECTOR
;; NO-GOOD
L1A51: CALL L12C4 ; routine GET-M-RD2
LD A,(IX+$29)
CP (IX+$0D)
JR Z,L1A63 ; forward to USE-C-RC
CALL L1312 ; routine DEC-SECT
JR NZ,L1A51 ; back to NO-GOOD
RST 20H ; sh_err
DEFB $11
;; USE-C-RC
L1A63: PUSH IX
POP HL
LD DE,$0043
ADD HL,DE
CALL L18A9 ; routine GET-M-BUF
CALL L1341 ; routine CHKS-HD-R
JR NZ,L1A81 ; forward to DEL-B-CT
LD DE,$000F
ADD HL,DE
CALL L1346 ; routine CHKS-BUFF
JR NZ,L1A81 ; forward to DEL-B-CT
OR A
BIT 2,(IX+$43)
RET Z
;; DEL-B-CT
L1A81: CALL L1AE0 ; routine CLR-BUFF
SCF
RET
; ------------------------------
; THE 'READ NEXT SECTOR' ROUTINE
; ------------------------------
;
;; RD-NEXT
L1A86: LD HL,$00F0 ; counts 240 sectors.
LD ($5CC9),HL ; sv SECTOR
CALL L12C4 ; routine GET-M-RD2
JR L1A63 ; back to USE-C-RC
; --------------------------
; THE 'WRITE SECTOR' ROUTINE
; --------------------------
;
;; WR-SECTOR
L1A91: LD HL,$00F0 ; counts 240 sectors.
LD ($5CC9),HL ; sv SECTOR
PUSH IX
POP HL
LD DE,$0037
ADD HL,DE
PUSH HL
LD DE,$000C
ADD HL,DE
CALL L1341 ; routine CHKS-HD-R
LD DE,$000F
ADD HL,DE
CALL L1346 ; routine CHKS-BUFF
;; WR-S-1
L1AAD: CALL L12C4 ; routine GET-M-RD2
LD A,(IX+$29)
CP (IX+$0D)
JR Z,L1ABF ; forward to WR-S-2
CALL L1312 ; routine DEC-SECT
JR NZ,L1AAD ; back to WR-S-1
RST 20H ; sh_err
DEFB $11
;; WR-S-2
L1ABF: IN A,($EF)
AND $01
JR NZ,L1AC7 ; forward to WR-S-3
RST 20H ; sh_err
DEFB $0E
;; WR-S-3
L1AC7: LD A,$E6
OUT ($EF),A
LD BC,$0168
CALL L18FA ; routine DELAY-BC
POP HL
CALL L1878 ; routine OUT-H-BUF
LD A,$EE
OUT ($EF),A
CALL L12DF ; routine CHECK-MAP
LD A,B
OR (HL)
LD (HL),A
RET
; -----------------------------------
; THE 'CLEAR BUFFER CONTENTS' ROUTINE
; -----------------------------------
;
;; CLR-BUFF
L1AE0: PUSH IX
POP HL
LD DE,$0052
ADD HL,DE
LD D,H
LD E,L
INC DE
LD BC,$01FF
LDIR
RET
; ------------------------------------------
; THE 'OPEN A PERMANENT "M" CHANNEL' ROUTINE
; ------------------------------------------
;
;; OP-M-STRM
L1AF0: LD A,($5CD8) ; sv D_STR1
ADD A,A
LD HL,$5C16 ; sv STRMS_00
LD E,A
LD D,$00
ADD HL,DE
PUSH HL
CALL L1B29 ; routine OP-TEMP-M
BIT 0,(IX+$18)
JR Z,L1B0D ; forward to MAKE-PERM
IN A,($EF)
AND $01
JR NZ,L1B0D ; forward to MAKE-PERM
RST 20H ; sh_err
DEFB $0E
;; MAKE-PERM
L1B0D: RES 7,(IX+$04)
XOR A
CALL L17F7 ; routine SEL-DRIVE
BIT 0,(IX+$18)
JR NZ,L1B23 ; forward to STORE-DSP
BIT 2,(IX+$43)
JR Z,L1B23 ; forward to STORE-DSP
RST 20H ; sh_err
DEFB $16
;; STORE-DSP
L1B23: EX DE,HL
POP HL
LD (HL),E
INC HL
LD (HL),D
RET
; ------------------------------------------
; THE 'OPEN A TEMPORARY "M" CHANNEL' ROUTINE
; ------------------------------------------
;
;; OP-TEMP-M
L1B29: CALL L0FE8 ; routine SET-T-MCH
PUSH HL
LD A,(IX+$19)
CALL L17F7 ; routine SEL-DRIVE
LD BC,$00FF
LD ($5CC9),BC ; sv SECTOR
;; OP-F-1
L1B3A: CALL L11A5 ; routine G-RD-RC
JR C,L1B5F ; forward to OP-P-4
JR Z,L1B5C ; forward to OP-F-3
RES 0,(IX+$18)
LD A,(IX+$44)
OR A
JR NZ,L1B57 ; forward to OP-F-2
PUSH IX
POP HL
LD DE,$0052
ADD HL,DE
CALL L1346 ; routine CHKS-BUFF
JR Z,L1B6C ; forward to OP-F-5
;; OP-F-2
L1B57: CALL L117D ; routine GET-R-2
JR L1B6C ; forward to OP-F-5
;; OP-F-3
L1B5C: CALL L12FE ; routine RES-B-HAP
;; OP-P-4
L1B5F: CALL L1312 ; routine DEC-SECT
JR NZ,L1B3A ; back to OP-F-1
RES 1,(IX+$43)
RES 2,(IX+$43)
;; OP-F-5
L1B6C: POP HL
RET
; --------------------------------
; THE 'FORMAT "M" COMMAND' ROUTINE
; --------------------------------
;
;; FORMAT
L1B6E: CALL L0FE8 ; routine SET-T-MCH
LD A,(IX+$19)
CALL L182A ; routine SW-MOTOR
LD BC,$32C8
CALL L18FA ; routine DELAY-BC
DI
IN A,($EF)
AND $01
JR NZ,L1B86 ; forward to FORMAT-1
RST 20H ; sh_err
DEFB $0E
;; FORMAT-1
L1B86 LD A,$E6
OUT ($EF),A
LD BC,$00FF
LD ($5CC9),BC ; sv SECTOR
PUSH IX
POP HL
LD DE,$002C
ADD HL,DE
EX DE,HL
LD HL,$FFE2
ADD HL,DE
LD BC,$000A
LDIR
XOR A
LD (IX+$47),A
SET 0,(IX+$28)
RES 0,(IX+$43)
SET 1,(IX+$43)
PUSH IX
POP HL
LD DE,$0052
ADD HL,DE
LD B,$00
LD A,$FC
;; FILL-B-F
L1BBD: LD (HL),A
INC HL
DJNZ L1BBD ; back to FILL-B-F
;; FILL-B-F2
L1BC1: LD (HL),A
INC HL
DJNZ L1BC1 ; back to FILL-B-F2
PUSH IX
POP DE
LD HL,$0043
ADD HL,DE
CALL L1341 ; routine CHKS-HD-R
LD DE,$000F
ADD HL,DE
CALL L1346 ; routine CHKS-BUFF
;; WR-F-TEST
L1BD6: CALL L1312 ; routine DEC-SECT
JR Z,L1C0A ; forward to TEST-SCT
LD (IX+$29),C
PUSH IX
POP HL
LD DE,L0028
ADD HL,DE
CALL L1341 ; routine CHKS-HD-R
LD DE,$FFF4
ADD HL,DE
CALL L1872 ; routine OUT-M-HD
LD BC,$01B2
CALL L18FA ; routine DELAY-BC
PUSH IX
POP HL
LD DE,$0037
ADD HL,DE
CALL L1878 ; routine OUT-H-BUF
LD BC,$033F
CALL L18FA ; routine DELAY-BC
CALL L18E9 ; routine TEST-BRK
JR L1BD6 ; back to WR-F-TEST
;; TEST-SCT
L1C0A: LD A,$EE
OUT ($EF),A
LD A,(IX+$19)
CALL L17F7 ; routine SEL-DRIVE
LD BC,$00FF
LD ($5CC9),BC ; sv SECTOR
;; CHK-SCT
L1C1B: CALL L12C4 ; routine GET-M-RD2
CALL L12DF ; routine CHECK-MAP
JR Z,L1C3E ; forward to CHK-NSECT
PUSH IX
POP HL
LD DE,$0043
ADD HL,DE
CALL L18A9 ; routine GET-M-BUF
CALL L1341 ; routine CHKS-HD-R
JR NZ,L1C3E ; forward to CHK-NSECT
LD DE,$000F
ADD HL,DE
CALL L1346 ; routine CHKS-BUFF
JR NZ,L1C3E ; forward to CHK-NSECT
CALL L12FE ; routine RES-B-HAP
;; CHK-NSECT
L1C3E: CALL L1312 ; routine DEC-SECT
JR NZ,L1C1B ; back to CHK-SCT
CALL L1E3E ; routine IN-CHK
;; MARK-FREE
L1C46: CALL L1264 ; routine CHK-FULL
JR NZ,L1C53 ; forward to MK-BLK
XOR A
CALL L17F7 ; routine SEL-DRIVE
CALL L10C4 ; routine DEL-M-BUF
RET
;; MK-BLK
L1C53: CALL L1275 ; routine SEND-BLK
JR L1C46 ; back to MARK-FREE
; -------------------------
; THE 'CAT COMMAND' ROUTINE
; -------------------------
;
;; CAT
L1C58: LD A,($5CD8) ; sv D_STR1
RST 10H ; CALBAS
DEFW $1601 ; main CHAN-OPEN
CALL $0FE8
LD A,(IX+$19)
CALL L17F7 ; routine SEL-DRIVE
LD BC,$00FF
LD ($5CC9),BC ; sv SECTOR
;; CAT-LP
L1C6E: CALL L12C4 ; routine GET-M-RD2
CALL L1E53 ; routine G-RDES
JR NZ,L1C6E ; back to CAT-LP
LD A,(IX+$43)
OR (IX+$46)
AND $02
JR NZ,L1C85 ; forward to IN-NAME
CALL L12FE ; routine RES-B-HAP
JR L1CEE ; forward to F-N-SCT
;; IN-NAME
L1C85: LD A,(IX+$47)
OR A
JR Z,L1CEE ; forward to F-N-SCT
PUSH IX
POP HL
LD DE,$0052
ADD HL,DE
LD DE,$000A
LD B,$00
LD C,(IX+$0D)
;; SE-NAME
L1C9A: LD A,C
OR A
JR Z,L1CD4 ; forward to INS-NAME
PUSH HL
PUSH IX
PUSH BC
LD B,$0A
;; T-MA-1
L1CA4: LD A,(HL)
CP (IX+$47)
JR NZ,L1CAF ; forward to T-NA-2
INC HL
INC IX
DJNZ L1CA4 ; back to T-MA-1
;; T-NA-2
L1CAF: POP BC
POP IX
POP HL
JR Z,L1CEE ; forward to F-N-SCT
JR NC,L1CBB ; forward to ORD-NAM
ADD HL,DE
DEC C
JR L1C9A ; back to SE-NAME
;; ORD-NAM
L1CBB: PUSH HL
PUSH DE
PUSH BC
PUSH HL
SLA C
LD H,B
LD L,C
ADD HL,BC
ADD HL,BC
ADD HL,BC
ADD HL,BC
LD B,H
LD C,L
POP HL
DEC HL
ADD HL,BC
EX DE,HL
ADD HL,DE
EX DE,HL
LDDR
POP BC
POP DE
POP HL
;; INS-NAME
L1CD4: PUSH IX
LD B,$0A
;; MOVE-NA
L1CD8: LD A,(IX+$47)
LD (HL),A
INC IX
INC HL
DJNZ L1CD8 ; back to MOVE-NA
POP IX
LD A,(IX+$0D)
INC A
LD (IX+$0D),A
CP $32
JR Z,L1CF4 ; forward to BF-FILLED
;; F-N-SCT
L1CEE: CALL L1312 ; routine DEC-SECT
JP NZ,L1C6E ; jump to CAT-LP
;; BF-FILLED
L1CF4: PUSH IX
XOR A
CALL L17F7 ; routine SEL-DRIVE
PUSH IX
POP HL
LD DE,$002C
ADD HL,DE
CALL L1D50 ; routine PRNAME
LD A,$0D
CALL L1D66 ; routine PRCHAR
PUSH IX
POP HL
LD DE,$0052
ADD HL,DE
LD B,(IX+$0D)
LD A,B
OR A
JR Z,L1D1C ; forward to NONAMES
;; OT-NAMS
L1D17: CALL L1D50 ; routine PRNAME
DJNZ L1D17 ; back to OT-NAMS
;; NONAMES
L1D1C: CALL L1D38 ; routine FREESECT
LD A,E
SRL A
RST 10H ; CALBAS
DEFW $2D28 ; main STACK-A
LD A,$0D
CALL L1D66 ; routine PRCHAR
RST 10H ; CALBAS
DEFW $2DE3 ; main PRINT-FP
LD A,$0D
CALL L1D66 ; routine PRCHAR
POP IX
CALL L10C4 ; routine DEL-M-BUF
RET
; ----------------------
; THE 'FREESECT' ROUTINE
; ----------------------
;
;; FREESECT
L1D38: LD L,(IX+$1A)
LD H,(IX+$1B)
LD E,$00
LD C,$20
;; FR-SC-LP
L1D42: LD A,(HL)
INC HL
LD B,$08
;; FR-S-LPB
L1D46: RRA
JR C,L1D4A ; forward to FR-S-RES
INC E
;; FR-S-RES
L1D4A: DJNZ L1D46 ; back to FR-S-LPB
DEC C
JR NZ,L1D42 ; back to FR-SC-LP
RET
; --------------------
; THE 'PRNAME' ROUTINE
; --------------------
;
;; PRNAME
L1D50: PUSH BC
LD B,$0A
;; PRNM-LP
L1D53: LD A,(HL)
CALL L1D66 ; routine PRCHAR
INC HL
DJNZ L1D53 ; back to PRNM-LP
LD A,$0D
CALL L1D66 ; routine PRCHAR
PUSH HL
RST 10H ; CALBAS
DEFW $0D4D ; main TEMPS
POP HL
POP BC
RET
; --------------------
; THE 'PRCHAR' ROUTINE
; --------------------
;
;; PRCHAR
L1D66: PUSH IX
RST 10H ; CALBAS
DEFW $0010 ; main PRINT-A
POP IX
RET
; ---------------------------
; THE 'ERASE COMMAND' ROUTINE
; ---------------------------
;
;; ERASE
L1D6E: CALL L0FE8 ; routine SET-T-MCH
LD A,(IX+$19)
CALL L17F7 ; routine SEL-DRIVE
IN A,($EF)
AND $01
JR NZ,L1D7F ; forward to ERASE-1
RST 20H ; sh_err
DEFB $0E
;; ERASE-1
L1D7F PUSH IX
POP HL
LD DE,$0052
ADD HL,DE
PUSH HL
POP DE
INC DE
LD BC,$001F
XOR A
LD (HL),A
LDIR
LD A,$FF
LD (IX+$0D),A
LD BC,$04FB
LD ($5CC9),BC ; sv SECTOR
;; ERASE-LP
L1D9C: CALL L1312 ; routine DEC-SECT
JR Z,L1DF8 ; forward to ERASE-MK
CALL L12C4 ; routine GET-M-RD2
CALL L1E53 ; routine G-RDES
JR NZ,L1DDA ; forward to TST-NUM
LD A,(IX+$43)
OR (IX+$46)
AND $02
JR NZ,L1DB8 ; forward to ERASE-2
CALL L12FE ; routine RES-B-HAP
JR L1DDA ; forward to TST-NUM
;; ERASE-2
L1DB8: PUSH IX
POP HL
LD DE,$0047
ADD HL,DE
LD BC,$000A
CALL L131E ; routine CHK-NAME
JR NZ,L1DDA ; forward to TST-NUM
CALL L1306 ; routine TEST-PHAP
LD A,B
OR (HL)
LD (HL),A
BIT 1,(IX+$43)
JR Z,L1DDA ; forward to TST-NUM
LD A,(IX+$44)
INC A
LD (IX+$0D),A
;; TST-NUM
L1DDA: PUSH IX
POP HL
LD DE,$0052
ADD HL,DE
LD E,$00
LD C,$20
;; LP-P-HAP
L1DE5: LD A,(HL)
INC HL
LD B,$08
;; LP-B-HAP
L1DE9: RRA
JR NC,L1DED ; forward to NOINC-C
INC E
;; NOINC-C
L1DED: DJNZ L1DE9 ; back to LP-B-HAP
DEC C
JR NZ,L1DE5 ; back to LP-P-HAP
LD A,(IX+$0D)
CP E
JR NZ,L1D9C ; back to ERASE-LP
;; ERASE-MK
L1DF8: CALL L1E3E ; routine IN-CHK
;; ERASE-MK2
L1DFB: CALL L12C4 ; routine GET-M-RD2
CALL L1306 ; routine TEST-PHAP
JR Z,L1E26 ; forward to T-OTHER
PUSH HL
PUSH BC
LD A,$E6
OUT ($EF),A
LD BC,$0168
CALL L18FA ; routine DELAY-BC
PUSH IX
POP HL
LD DE,$0037
ADD HL,DE
CALL L1878 ; routine OUT-H-BUF
LD A,$EE
OUT ($EF),A
CALL L12FE ; routine RES-B-HAP
POP BC
POP HL
LD A,B
CPL
AND (HL)
LD (HL),A
;; T-OTHER
L1E26: PUSH IX
POP HL
LD DE,$0052
ADD HL,DE
LD B,$20
;; CHK-W-MAP
L1E2F: LD A,(HL)
OR A
JR NZ,L1DFB ; back to ERASE-MK2
INC HL
DJNZ L1E2F ; back to CHK-W-MAP
XOR A
CALL L17F7 ; routine SEL-DRIVE
CALL L10C4 ; routine DEL-M-BUF
RET
; ----------------------------------
; THE 'SIGNAL 'FREE SECTOR'' ROUTINE
; ----------------------------------
;
;; IN-CHK
L1E3E: XOR A
LD (IX+$43),A
LD (IX+$45),A
LD (IX+$46),A
PUSH IX
POP HL
LD DE,$0043
ADD HL,DE
CALL L1341 ; routine CHKS-HD-R
RET
; --------------------------------------
; THE 'OBTAIN RECORD DESCRIPTOR' ROUTINE
; --------------------------------------
;
;; G-RDES
L1E53: PUSH IX
POP HL
LD DE,$0043
ADD HL,DE
CALL L18A3 ; routine GET-M-HD
CALL L1341 ; routine CHKS-HD-R
RET NZ
BIT 0,(IX+$43)
RET
; ------------------------------------
; THE 'CALLS TO THE COMMAND S' ROUTINE
; ------------------------------------
;
;; ERASE-RUN
L1E66: CALL L1D6E ; routine ERASE
JR L1E84 ; forward to ENDC
;; MOVE-RUN
L1E6B: CALL L13F1 ; routine MOVE
JR L1E84 ; forward to ENDC
;; CAT-RUN
L1E70: CALL L1C58 ; routine CAT
JR L1E84 ; forward to ENDC
;; IFOR-RUN
L1E75: CALL L1B6E ; routine FORMAT
JR L1E84 ; forward to ENDC
;; OP-RUN
L1E7A: CALL L1AF0 ; routine OP-M-STRM
JR L1E84 ; forward to ENDC
;; SAVE-RUN
L1E7F: CALL L14DA ; routine SA-DRIVE
JR L1E84 ; forward to ENDC
;; ENDC
L1E84: JP L05C1 ; jump to END1
; ----------------------
; THE 'DISP-HEX' ROUTINE
; ----------------------
;
;; DISP-HEX
L1E87: PUSH AF
RRA
RRA
RRA
RRA
CALL L1E90 ; routine DISP-NIB
POP AF
;; DISP-NIB
L1E90: AND $0F
CP $0A
JR C,L1E98 ; forward to CDNV-L
ADD A,$07
;; CDNV-L
L1E98: ADD A,$30
CALL L1EA9 ; routine DISP-CH
RET
; -----------------------
; THE 'DISP-HEX2' ROUTINE
; -----------------------
;
;; DISP-HEX2
L1E9E: PUSH AF
CALL L1E87 ; routine DISP-HEX
LD A,$20
CALL L1EA9 ; routine DISP-CH
POP AF
RET
; ---------------------
; THE 'DISP-CH' ROUTINE
; ---------------------
;
;; DISP-CH
L1EA9: PUSH HL
PUSH DE
PUSH BC
PUSH AF
EXX
PUSH HL
PUSH DE
PUSH BC
PUSH AF
LD HL,($5C51) ; sv CURCHL
PUSH HL
PUSH AF
LD A,$02
RST 10H ; CALBAS
DEFW $1601 ; main CHAN-OPEN
POP AF
RST 10H ; CALBAS
DEFW $0010 ; main PRINT-A
POP HL
LD ($5C51),HL ; sv CURCHL
POP AF
POP BC
POP DE
POP HL
EXX
POP AF
POP BC
POP DE
POP HL
RET
; ----------------------
; THE 'HEX-LINE' ROUTINE
; ----------------------
;
;; HEX-LINE
L1ECE: PUSH HL
PUSH BC
PUSH AF
LD B,$0A
;; HEX-LINE2
L1ED3: LD A,(HL)
CALL L1E9E ; routine DISP-HEX2
INC HL
DJNZ L1ED3 ; back to HEX-LINE2
LD A,$0D
CALL L1EA9 ; routine DISP-CH
POP AF
POP BC
POP HL
RET
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
DEFB $FF
;;
LEND DEFB $FF
.END
;
wearmouth/version_1.txt · Last modified: 2022/03/22 09:33 by 127.0.0.1
