home *** CD-ROM | disk | FTP | other *** search
- ORG 0F000H
- ; CUTS SOURCE
- ; R.J.S. 08/27/77
- ;
- START MOV A,A
- INIT JMP STRTA
- RETRN JMP COMND
- FOPEN JMP BOPEN
- FCLOS JMP PCLOS
- RDBYT JMP RTBYT
- WRBYT JMP WTBYT
- RDBLK JMP RTAPE
- WRBLK JMP WTAPE
- ;
- SOUT LDA OPORT
- AOUT JMP OUTPR
- SINP LDA IPORT
- AINP EQU $
- ;
- PUSH H
- LXI H,ITAB
- IOPRC ANI 3
- RLC
- ADD L
- MOV L,A
- JMP DISPT
- ;
- OUTPR EQU $
- PUSH H
- LXI H,OTAB
- JMP IOPRC
- ;
- KREA1 EQU $
- IN STAPT
- CMA
- ANI KDR
- RZ
- IN KDATA
- RET
- ;
- SREA1 EQU $
- IN STAPT
- ANI SDR
- RZ
- IN SDATA
- ANI 7FH
- RET
- ;
- SEROT EQU $
- IN STAPT
- RAL
- JC SEROT
- MOV A,B
- OUT SDATA
- RET
- ;
- PARIT EQU $
- IN STAPT
- CMA
- ANI PDR
- RZ
- IN PDATA
- RET
- ;
- PAROT EQU $
- IN STAPT
- ANI PXDR
- JNZ PAROT
- MOV A,B
- OUT PDATA
- RET
- ;
- ERRIT EQU $
- PUSH H
- LHLD UIPRT
- JMP ERRO1
- ERROT EQU $
- PUSH H
- LHLD UOPRT
- ERRO1 EQU $
- MOV A,L
- ORA H
- JNZ DISP1
- JMP STRTD
- ;
- ;
- VDMO1 EQU $
- PUSH H
- PUSH D
- PUSH B
- ;
- LDA ESCFL
- ORA A
- JNZ ESCS
- MOV A,B
- ANI 7FH
- MOV B,A
- JZ GOBK
- LXI H,TBL
- CALL TSRCH
- GOBACK EQU $
- CALL VDADD
- MOV A,M
- ORI 80H
- MOV M,A
- LHLD SPEED-1
- INR L
- XRA A
- TIMER DCX H
- CMP H
- JNZ TIMER
- GOBK POP B
- POP D
- POP H
- RET
- ;
- NEXT EQU $
- INX H
- INX H
- ;
- TSRCH MOV A,M
- ORA A
- JZ CHAR
- CMP B
- INX H
- JNZ NEXT
- PUSH H
- CALL CREM
- XTHL
- JMP DISPT
- ;
- CHAR EQU $
- MOV A,B
- CPI 7FH
- RZ
- ;
- OCHAR CALL VDADD
- MOV M,B
- LDA NCHAR
- CPI 63
- JC OK
- LDA LINE
- CPI 15
- JNZ OK
- ; END OF SCREEN-ROLL UP 1
- SCROLL XRA A
- STA NCHAR
- SROL MOV C,A
- CALL VDAD
- XRA A
- CALL CLIN1
- LDA BOT
- INR A
- ANI 0FH
- JMP ERAS3
- ;INCREMENT LINE COUNTER IF NECESSARY
- OK LDA NCHAR
- INR A
- ANI 03FH
- STA NCHAR
- RNZ
- PDOWN EQU $
- LDA LINE
- INR A
- CURSC ANI 0FH
- CUR STA LINE
- RET
- ;ERASE LINE
- PERSE LXI H,VDMEM
- MVI M,80H+' '
- INX H
- ERAS1 EQU $
- MVI M,' '
- INX H
- MOV A,H
- CPI 0D0H
- JC ERAS1
- STC
- PHOME EQU $
- MVI A,0
- STA LINE
- STA NCHAR
- RNC
- ERAS3 OUT DSTAT
- STA BOT
- RET
- CLIN2 EQU $
- LDA OPORT
- ORA A
- RNZ
- CLINE CALL VDADD
- LDA NCHAR
- CLIN1 CPI 64
- RNC
- MVI M,' '
- INX H
- INR A
- JMP CLIN1
- ; ROUT TO MOVE CURSOR UP 1 LINE
- PUP LDA LINE
- DCR A
- JMP CURSC
- ; MOVE CUR LEFT 1
- PLEFT LDA NCHAR
- DCR A
- PCUR EQU $
- ANI 03FH
- STA NCHAR
- RET
- ; CURSOR RIGHT 1
- PRIT LDA NCHAR
- INR A
- JMP PCUR
- ; ROUTINE TO CALCULATE SCREEN ADDR
- VDADD LDA NCHAR
- MOV C,A
- VDAD2 LDA LINE
- VDAD MOV L,A
- LDA BOT
- ADD L
- RRC
- RRC
- MOV L,A
- ANI 3
- ADI VDMEM1
- MOV H,A
- MOV A,L
- ANI 0C0H
- ADD C
- MOV L,A
- RET
- ; ROUTINT TO REMOVE CURSOR
- CREM CALL VDADD
- MOV A,M
- ANI 07FH
- MOV M,A
- RET
- ; ROUTINE TO BACKKSPACE
- PBACK CALL PLEFT
- CALL VDADD
- MVI M,' '
- RET
- ; PROCESS CARRIAGE RETURN
- PCR CALL CLINE
- JMP PCUR
- ; PROCESS LF
- PLF LDA LINE
- INR A
- ANI 15
- JNZ CUR
- JMP SROL
- ; SET1 ESCAPE PROCESS FLAG
- PESC MVI A,-1
- STA ESCFL
- RET
- ; PROCESS ESCAPE SEQUENCE
- ESCS CALL CREM
- CALL ESCSP
- JMP GOBACK
- ESCSP LDA ESCFL
- CPI -1
- JZ SECOND
- ; PROCESS THIRD CHR OF ESC SEQUENCE
- LXI H,ESCFL
- MVI M,0
- CPI 2
- JC SET1X
- JZ SET1Y
- CPI 8
- JZ STSPD
- CPI 9
- JC OCHAR
- RNZ
- ; TAB ABSOLUTE TO VALUE IN REG B
- SET1X MOV A,B
- JMP PCUR
- ; SET1 CUR TO LINE "B"
- SET1Y MOV A,B
- JMP CURSC
- ; PROC SECOND CHR OF ESC SEQUENCE
- SECOND MOV A,B
- CPI 3
- JZ CURET
- CPI 4
- JNZ ARET2
- ARET MOV B,H
- MOV C,L
- ARET1 POP H
- POP D
- PUSH B
- PUSH H
- XRA A
- ARET2 STA ESCFL
- RET
- ; RET PRESENT SCREEN PARAMETERS IN BC
- CURET LXI H,NCHAR
- MOV B,M
- INX H
- MOV C,M
- JMP ARET1
- ;
- ; START UP SYSTEM
- ;
- STRTA XRA A
- MOV C,A
- LXI H,DFLTS
- CLERA MOV M,A
- INX H
- INR C
- JNZ CLERA
- ; DETERMINE DEFAULT PORTS
- IN SENSE
- MOV B,A
- ANI 3
- STA DFLTS+1
- ORA A
- JNZ STRTB
- LXI SP,SYSTP
- CALL PERSE
- STRTB EQU $
- LXI H,0
- CPI 3
- JZ STRTC
- SHLD UOPRT
- STRTC EQU $
- MOV A,B
- RAR
- RAR
- ANI 3
- STA DFLTS
- CPI 3
- JZ STRTD
- SHLD UIPRT
- STRTD EQU $
- LHLD DFLTS
- SHLD IPORT
- COMN1 EQU $
- XRA A
- OUT TAPPT
- ;
- ; COMMAND MODE
- ;
- ; PROCESS COMANDS
- ;
- COMND LXI SP,SYSTP
- CALL PROMPT
- CALL GCLIO
- CALL COPRC
- JMP COMND
- ; READS COMMAND LINE
- GCLIO EQU $
- LXI H,INLIN-1
- MVI M,7
- INX H
- SHLD INPTR
- MVI M,80
- GCLI1 EQU $
- MVI M,' '
- INX H
- DCR A
- JNZ GCLI1
- GCLIN CALL SINP
- JZ GCLIN
- ANI 7FH
- JZ STRTD
- MOV B,A
- CPI CR
- JZ CLIN2
- CPI LF
- RZ
- LHLD INPTR
- CPI 7FH
- JNZ GCLI2
- MVI B,BACKS
- DCX H
- MVI A,'G'-40H
- CMP M
- JNZ GCLI3
- MOV B,A
- GCLI2 EQU $
- MOV M,B
- INX H
- GCLI3 EQU $
- SHLD INPTR
- CONT CALL SOUT
- JMP GCLIN
- ; FIND AND PROCESS COMAND
- COPRC EQU $
- CALL STUP
- XCHG
- LXI H,START
- PUSH H
- CALL SCHR
- JZ ERR1
- XCHG
- LXI D,COMTAB
- CALL FDCOM
- CZ FDCOU
- DISPO EQU $
- JZ ERR2
- INX D
- XCHG
- ; GOES TO CONTENTS HL
- DISPT EQU $
- MOV A,M
- INX H
- MOV H,M
- MOV L,A
- DISP1 EQU $
- XTHL
- MOV A,L
- RET
- ;
- ;
- FDCOU EQU $
- LXI D,CUTAB
- FDCOM LDAX D
- ORA A
- RZ
- PUSH H
- CMP M
- INX D
- JNZ NCOM
- INX H
- LDAX D
- CMP M
- JNZ NCOM
- POP H
- ORA A
- RET
- NCOM INX D
- INX D
- INX D
- POP H
- JMP FDCOM
- ; SET1 UP TO PROCESS INPUT LINE
- STUP EQU $
- LXI H,INLIN
- SHLD INPTR
- LDA OPORT
- ORA A
- RNZ
- CALL CREM
- MVI C,1
- JMP VDAD2
- ; COMMAND TABLE
- COMTAB EQU $
- DB 'DU'
- DW DUMP
- DB 'EN'
- DW ENTER
- DB 'EX'
- DW EXEC
- DB 'GE'
- DW TLOAD
- DB 'SA'
- DW TSAVE
- DB 'XE'
- DW TXEQ
- DB 'CA'
- DW TLIST
- DB 'SE'
- DW SET1
- DB 'CU'
- DW CUSET1
- DB 0
- ; DISPLAY DRIVER COMMAND TABLE
- TBL DB CLEAR
- DW PERSE
- DB UP
- DW PUP
- DB DOWN
- DW PDOWN
- DB LEFT
- DW PLEFT
- DB RIGHT
- DW PRIT
- DB HOME
- DW PHOME
- DB CR
- DW PCR
- DB LF
- DW PLF
- DB BACKS
- DW PBACK
- DB ESC
- DW PESC
- DB 0
- ; OUTPUT DEVICE TABLE
- OTAB DW VDMO1
- DW SEROT
- DW PAROT
- DW ERROT
- ; INPUT DEVICE TABLE
- ITAB DW KREA1
- DW SREA1
- DW PARIT
- DW ERRIT
- ; SECONDARY COMMAND TABLE FOR SET1
- SETAB DB 'TA'
- DW TASPD
- DB 'S='
- DW DISPD
- DB 'I='
- DW SET1IN
- DB 'O='
- DW SET1OT
- DB 'CI'
- DW SET1CI
- DB 'CO'
- DW SET1CO
- DB 'XE'
- DW SET1XQ
- DB 'TY'
- DW SET1TY
- DB 'N='
- DW SET1NU
- DB 'CR'
- DW SET1CR
- DB 0
- ; OUT A CR FOLLOWED BY PROMPT
- PROMPT CALL CRLF
- MVI B,'>'
- JMP SOUT
- CRLF MVI B,LF
- CALL SOUT
- MVI B,CR
- CALL SOUT
- LDA NUCNT
- MOV C,A
- NULOT DCR C
- RM
- XRA A
- CALL OUTH
- JMP NULOT
- ; SCAN OVER UP TO 12 CHARS LOOKINF FOR BLANK
- SBLK MVI C,12
- SBLK1 LDAX D
- CPI BLANK
- JZ SCHR
- INX D
- CPI '='
- JZ SCHR
- DCR C
- JNZ SBLK1
- RET
- ; SCAN PAST UP TO 10 BLANK CHARS FO A NON BLANK CHAR
- SCHR MVI C,10
- SCHR1 LDAX D
- CPI SPACE
- RNZ
- INX D
- DCR C
- RZ
- JMP SCHR1
- ;
- SCONV CALL SBLK
- JZ ERR1
- ; ASCII TO BINARY
- SHEX LXI H,0
- SHE1 LDAX D
- CPI 20H
- RZ
- CPI '/'
- RZ
- CPI ':'
- RZ
- HCONV DAD H
- DAD H
- DAD H
- DAD H
- CALL HCOV1
- JNC ERR1
- ADD L
- MOV L,A
- INX D
- JMP SHE1
- HCOV1 SUI 48
- CPI 10
- RC
- SUI 7
- CPI 10H
- RET
- ;
- PSCAN EQU $
- CALL SBLK
- RZ
- CALL SHEX
- RET
- ;
- ; DUMP COMMAND
- ;
- DUMP EQU $
- CALL SCONV
- PUSH H
- CALL PSCAN
- POP D
- XCHG
- DLOOP CALL CRLF
- CALL ADOUT
- CALL BOUT
- MVI C,16
- DLP1 MOV A,M
- PUSH B
- CALL HBOUT
- MOV A,H
- CMP D
- JC DLP1A
- MOV A,L
- CMP E
- JNC COMND
- DLP1A EQU $
- POP B
- INX H
- DCR C
- JNZ DLP1
- JMP DLOOP
- ; OUT HL AS HEX 16 BIT VALUE
- ADOUT MOV A,H
- CALL HEOUT
- MOV A,L
- HBOUT CALL HEOUT
- CALL SINP
- JZ BOUT
- ANI 7FH
- JZ COMND
- CPI ' '
- JNZ BOUT
- WTLP1 CALL SINP
- JZ WTLP1
- BOUT MVI B,' '
- JMP SOUT
- HEOUT MOV C,A
- RRC
- RRC
- RRC
- RRC
- CALL HEOU1
- MOV A,C
- HEOU1 ANI 0FH
- ADI 48
- CPI 58
- JC OUTH
- ADI 7
- OUTH MOV B,A
- JMP SOUT
- ; ENTR COMMAND
- ENTER CALL SCONV
- PUSH H
- ENLOP CALL CRLF
- MVI B,':'
- CALL SOUT
- CALL GCLIO
- CALL STUP
- XCHG
- ENLO1 MVI C,3
- CALL SCHR1
- JZ ENLOP
- CPI '/'
- JZ COMND
- CALL SHEX
- CPI ':'
- JZ ENLO3
- MOV A,L
- POP H
- MOV M,A
- INX H
- PUSH H
- JMP ENLO1
- ENLO3 XTHL
- INX D
- JMP ENLO1
- ; EXECUTE COMMAND
- EXEC CALL SCONV
- EXEC1 EQU $
- PUSH H
- LXI H,START
- RET
- ;
- NAMEO EQU $
- LXI H,THEAD
- NAME CALL SBLK
- MVI B,6
- NAME1 LDAX D
- CPI ' '
- JZ NFIL
- CPI '/'
- JZ NFIL
- MOV M,A
- INX D
- INX H
- DCR B
- JNZ NAME1
- ; ERROR HANDLER
- ERR1 XCHG
- ERR2 MVI M,'?'
- LDA OPORT
- ORA A
- JZ COMND
- CALL CRLF
- MVI B,'?'
- CALL SOUT
- JMP COMND
- ;
- NFIL MVI M,0
- INX H
- DCR B
- JNZ NFIL
- CPI '/'
- MVI A,1
- JNZ DEFLT
- INX D
- CALL SCHR
- SUI '0'
- DEFLT EQU $
- ANI 1
- MVI A,TAPE1
- JNZ STUNT
- RAR
- STUNT STA FNUMF
- RET
- ; XEQ & GET
- TXEQ DB 3EH
- TLOAD XRA A
- PUSH PSW
- LXI H,DHEAD
- CALL NAME
- LXI H,0
- CALL PSCAN
- TLOA2 XCHG
- LXI H,DHEAD
- MOV A,M
- ORA A
- JNZ TLOA3
- LXI H,THEAD
- TLOA3 PUSH H
- CALL ALOAD
- POP H
- CALL RTAPE
- JC TAERR
- CALL NAOUT
- POP PSW
- ORA A
- RZ
- LDA HTYPE
- ORA A
- JM TAERR
- LDA THEAD+5
- ORA A
- JNZ TAERR
- LHLD XEQAD
- JMP EXEC1
- ; SAVE PROGRAMS ON CASSET1TE
- TSAVE EQU $
- CALL NAMEO
- CALL SCONV
- PUSH H
- CALL SCONV
- XTHL
- PUSH H
- CALL PSCAN
- SHLD LOADR
- POP H
- POP D
- PUSH H
- MOV A,E
- SUB L
- MOV L,A
- MOV A,D
- SBI 0
- SUB H
- MOV H,A
- INX H
- SHLD BLOCK
- PUSH H
- CALL ALOAD
- LXI H,THEAD
- CALL WHEAD
- POP D
- POP H
- JMP WTAP1
- ; OUTPUT ERROR AND HEADER
- TAERR CALL CRLF
- MVI D,6
- LXI H,ERRM
- CALL NLOOP
- CALL NAOUT
- JMP COMN1
- ERRM DB 'ERROR !'
- ; CAT COMMAND
- TLIST EQU $
- CALL NAMEO
- CALL CRLF
- LLIST CALL ALOAD
- MVI B,1
- CALL TON
- LIST1 CALL RHEAD
- JC COMN1
- JNZ LIST1
- CALL NAOUT
- JMP LLIST
- ;
- ALOAD LXI H,FNUMF
- LDA TSPD
- ORA M
- RET
- ;
- NAOUT MVI D,8
- LXI H,THEAD-1
- CALL NLOOP
- CALL BOUT
- LHLD LOADR
- CALL ADOUT
- LHLD BLOCK
- CALL ADOUT
- JMP CRLF
- NLOOP MOV A,M
- ORA A
- JNZ CHRLI
- MVI A,' '
- CHRLI EQU $
- CALL OUTH
- INX H
- DCR D
- JNZ NLOOP
- RET
- ; SET1 COMMAND
- SET1 CALL SBLK
- JZ ERR1
- PUSH D
- CALL SCONV
- XTHL
- LXI D,SETAB
- CALL FDCOM
- JMP DISPO
- ; TAPE SPEED
- TASPD EQU $
- ORA A
- JZ SET1SP
- MVI A,32
- SET1SP STA TSPD
- RET
- STSPD EQU $
- MOV A,B
- DISPD EQU $
- STA SPEED
- RET
- SET1IN EQU $
- STA IPORT
- RET
- SET1OT EQU $
- STA OPORT
- RET
- SET1CI EQU $
- SHLD UIPRT
- RET
- SET1CO EQU $
- SHLD UOPRT
- RET
- SET1TY EQU $
- STA HTYPE
- RET
- SET1XQ EQU $
- SHLD XEQAD
- RET
- SET1NU EQU $
- STA NUCNT
- RET
- SET1CR EQU $
- STA IGNCR
- RET
- CUSET1 EQU $
- CALL NAMEO
- LXI H,COMND
- CALL PSCAN
- PUSH H
- LXI H,THEAD
- CALL FDCOU
- JZ CUSE2
- DCX D
- MVI M,0
- CUSE2 EQU $
- MOV A,M
- STAX D
- INX D
- INX H
- MOV A,M
- STAX D
- INX D
- POP H
- XCHG
- MOV M,E
- INX H
- MOV M,D
- RET
- ; CUTTER TAPE ROUTINES
- ;
- BOPEN PUSH H
- CALL LFCB
- JNZ TERE2
- MVI M,1
- INX H
- MOV M,A
- INX H
- MOV M,A
- LXI D,FBUF1
- LDA FNUMF
- ADD D
- MOV D,A
- UBUF POP B
- ORA A
- JMP PSTOR
- ; ERROR RETURNS
- TERE2 POP H
- TERE1 POP D
- TEREO XRA A
- STC
- RET
- EOFER DCR A
- STC
- POP D
- RET
- ;
- ;
- PCLOS CALL LFCB
- RZ
- ORA A
- INR A
- MVI M,0
- RZ
- ;
- INX H
- INX H
- MOV A,M
- CALL PLOAD
- PUSH B
- LXI H,BLKOF
- DAD B
- ORA A
- JZ EOFW
- ;
- PUSH H
- MOV M,A
- INX H
- MVI M,0
- INX H
- MOV M,E
- INX H
- MOV M,D
- MOV H,B
- MOV L,C
- CALL WFBLK
- POP H
- EOFW XRA A
- MOV M,A
- INX H
- MOV M,A
- POP H
- JMP WFBLK
- ;
- LFCB LXI H,FCBAS
- RAR
- ANI 1
- STA FNUMF
- JZ LFCB1
- LXI H,FCBA2
- LFCB1 EQU $
- MOV A,M
- ORA A
- STC
- RET
- ; READ TAPE BYTE
- RTBYT CALL LFCB
- RZ
- INR A
- JM TEREO
- MVI M,-1
- INX H
- MOV A,M
- PUSH H
- INX H
- CALL PLOAD
- POP H
- ORA A
- JNZ GTBYT
- ;
- RDNBLK PUSH D
- PUSH H
- INX H
- CALL PHEAD
- CALL RFBLK
- JC TERE2
- POP H
- MOV A,E
- ORA D
- JZ EOFER
- MOV M,E
- INX H
- MVI M,0
- DCX H
- MOV A,E
- POP D
- ;
- GTBYT DCR A
- MOV M,A
- INX H
- MOV A,M
- INR M
- ADD E
- MOV E,A
- JNC RT1
- INR D
- RT1 LDAX D
- ORA A
- RET
- ; WRITE BYTE
- WTBYT CALL LFCB
- RZ
- INR A
- RZ
- MVI M,0FEH
- INX H
- INX H
- MOV A,B
- PUSH PSW
- PUSH H
- ;
- CALL PLOAD
- POP H
- MOV A,M
- ADD E
- MOV E,A
- JNC WT1
- INR D
- WT1 POP PSW
- STAX D
- ORA A
- INR M
- RNZ
- ;
- CALL PHEAD
- JMP WFBLK
- ;
- PHEAD CALL PLOAD
- PUSH B
- LXI H,BLKOF-1
- DAD B
- LXI B,256
- CALL PSTOR
- POP H
- RET
- PSTOR INX H
- MOV M,C
- INX H
- MOV M,B
- INX H
- MOV M,E
- INX H
- MOV M,D
- RET
- PLOAD INX H
- MOV C,M
- INX H
- MOV B,M
- INX H
- MOV E,M
- INX H
- MOV D,M
- RET
- ;
- RFBLK CALL GTUNT
- RTAPE PUSH D
- MVI B,3
- CALL TON
- IN TDATA
- PTAP1 PUSH H
- CALL RHEAD
- POP H
- JC TERR
- JNZ PTAP1
- PUSH H
- LXI D,THEAD
- CALL DHCMP
- POP H
- JNZ PTAP1
- POP D
- MOV A,D
- ORA E
- LHLD BLOCK
- XCHG
- JNZ RTAP
- LHLD LOADR
- RTAP PUSH D
- RTAP2 EQU $
- CALL DCRCT
- JZ RTOFF
- CALL RHED1
- JC TERR
- JZ RTAP2
- ; ERROR RET
- TERR XRA A
- STC
- JMP RTOF1
- TOFF MVI B,1
- CALL DELAY
- RTOFF XRA A
- RTOF1 OUT TAPPT
- POP D
- RET
- DCRCT EQU $
- XRA A
- MOV B,A
- ORA D
- JNZ DCRC2
- ORA E
- RZ
- MOV B,E
- MOV E,D
- RET
- DCRC2 EQU $
- DCR D
- ORA A
- RET
- ;
- RHEAD MVI B,10
- RHEA1 CALL STAT
- RC
- IN TDATA
- ORA A
- JNZ RHEAD
- DCR B
- JNZ RHEA1
- SOHL CALL TAPIN
- RC
- CPI 1
- JC SOHL
- JNZ RHEAD
- LXI H,THEAD
- MVI B,HLEN
- RHED1 EQU $
- MVI C,0
- RHED2 EQU $
- CALL TAPIN
- RC
- MOV M,A
- INX H
- CALL DOCRC
- DCR B
- JNZ RHED2
- ;
- CALL TAPIN
- XRA C
- RZ
- LDA IGNCR
- INR A
- RET
- ;
- STAT IN TAPPT
- ANI TDR
- RNZ
- CALL SINP
- JZ STAT
- ANI 7FH
- JNZ STAT
- STC
- RET
- TAPIN CALL STAT
- RC
- TREDY IN TAPPT
- ANI TFE+TOE
- IN TDATA
- RZ
- STC
- RET
- WFBLK CALL GTUNT
- WTAPE EQU $
- PUSH H
- CALL WHEAD
- POP H
- LXI D,BLKOF
- DAD D
- MOV E,M
- INX H
- MOV D,M
- INX H
- MOV A,M
- INX H
- MOV H,M
- MOV L,A
- ;
- WTAP1 EQU $
- PUSH H
- WTAP2 EQU $
- CALL DCRCT
- JZ TOFF
- CALL WTBL
- JMP WTAP2
- WRTAP PUSH PSW
- WRWAT IN TAPPT
- ANI TTBE
- JZ WRWAT
- POP PSW
- OUT TDATA
- DOCRC EQU $
- SUB C
- MOV C,A
- XRA C
- CMA
- SUB C
- MOV C,A
- RET
- ;
- WHEAD EQU $
- CALL WTON
- MVI D,50
- NULOP XRA A
- CALL WRTAP
- DCR D
- JNZ NULOP
- MVI A,1
- CALL WRTAP
- MVI B,HLEN
- WTBL MVI C,0
- WLOOP MOV A,M
- CALL WRTAP
- DCR B
- INX H
- JNZ WLOOP
- MOV A,C
- JMP WRTAP
- DHCMP MVI B,5
- DHLOP LDAX D
- CMP M
- RNZ
- DCR B
- RZ
- INX H
- INX D
- JMP DHLOP
- GTUNT EQU $
- LDA FNUMF
- ORA A
- LDA TSPD
- JNZ GTUN2
- ADI TAPE2
- GTUN2 ADI TAPE2
- RET
- WTON MVI B,4
- TON EQU $
- OUT TAPPT
- DELAY LXI D,0
- DLOP1 DCX D
- MOV A,D
- ORA E
- JNZ DLOP1
- DCR B
- JNZ DELAY
- RET
- ;
- ; END
- ;
- VDMEM EQU 0E000H
- DOWN EQU 1AH
- UP EQU 17H
- LEFT EQU 01H
- RIGHT EQU 13H
- CLEAR EQU 0BH
- HOME EQU 0EH
- MODE EQU 03 ;CONTROL C FOR RANDY
- BACKS EQU 5FH
- LF EQU 10
- CR EQU 13
- BLANK EQU ' '
- SPACE EQU BLANK
- CX EQU 'X'-40H
- ESC EQU 1BH
- ;
- ; PORT ASSIGNMENTS
- ;
- STAPT EQU 0
- SDATA EQU 1
- PDATA EQU 2
- KDATA EQU 1
- DSTAT EQU 0E0H
- TAPPT EQU 0EAH
- TDATA EQU 0EBH
- SENSE EQU 0FFH
- SCD EQU 1
- SDSR EQU 2
- SPE EQU 4
- SFE EQU 8
- SOE EQU 16
- SCTS EQU 32
- SDR EQU 64
- STBE EQU 128
- KDR EQU 1
- PDR EQU 2
- PXDR EQU 4
- TFE EQU 8
- TOE EQU 16
- TDR EQU 64
- TTBE EQU 128
- SOK EQU 1
- TAPE1 EQU 80H
- TAPE2 EQU 40H
- ;
- ; SYSTEM GLOBAL EREA
- ;
- ORG START+800H
- SYSRAM EQU $
- SYSTP EQU SYSRAM+3FFH
- ;
- UIPRT DS 2
- UOPRT DS 2
- DFLTS DS 2
- IPORT DS 1
- OPORT DS 1
- NCHAR DS 1
- LINE DS 1
- BOT DS 1
- SPEED DS 1
- ESCFL DS 1
- TSPD DS 1
- INPTR DS 2
- NUCNT DS 1
- IGNCR DS 1
- DS 10
- ;
- THEAD DS 5
- DS 1
- HTYPE DS 1
- BLOCK DS 2
- LOADR DS 2
- XEQAD DS 2
- HSPR DS 3
- HLEN EQU $-THEAD
- BLKOF EQU BLOCK-THEAD
- DHEAD DS HLEN
- CUTAB DS 6*4
- FNUMF DS 1
- FCBAS DS 7
- FCBA2 DS 7
- FBUF1 DS 2*256
- DS 1
- INLIN DS 80
- USARE EQU $
- VDMEM1 EQU 0E0H ;FOR THIS ASSM
- END
-