mirror of
https://github.com/livingcomputermuseum/Darkstar.git
synced 2026-03-02 10:06:45 +00:00
39 lines
19 KiB
Plaintext
39 lines
19 KiB
Plaintext
head 1.1;
|
|
branch 1.1.1;
|
|
access ;
|
|
symbols start:1.1.1.1 Xerox:1.1.1;
|
|
locks ; strict;
|
|
comment @;; @;
|
|
|
|
|
|
1.1
|
|
date 2001.08.12.22.22.10; author freier; state Exp;
|
|
branches 1.1.1.1;
|
|
next ;
|
|
|
|
1.1.1.1
|
|
date 2001.08.12.22.22.10; author freier; state Exp;
|
|
branches ;
|
|
next ;
|
|
|
|
|
|
desc
|
|
@@
|
|
|
|
|
|
|
|
1.1
|
|
log
|
|
@Initial revision
|
|
@
|
|
text
|
|
@; Copyright (C) 1980, 1987 by Xerox Corporation. All rights reserved.
|
|
|
|
; Last modification by
|
|
; Modification History:
|
|
;
|
|
; changed to version 8.0 by HEM 11-Dec-87 18:29:33
|
|
; - Created (June 4, 1980 12:59 PM)
|
|
;
|
|
get "SysDefs.asm" ; system defs (tests defs below)
|
|
get "MOONLinkDefs.asm" ; system links
|
|
get "MOONSysDefs.asm" ; system defs
|
|
|
|
; EXPORTS:
|
|
EXP PrinterSetUp
|
|
|
|
|
|
;-----------------------------------------------------------------
|
|
jmp PrinterSetUp
|
|
|
|
Test:
|
|
db 0
|
|
PassCount:
|
|
db 0
|
|
StopOnErr:
|
|
db 0
|
|
PrintStatus
|
|
DB 0
|
|
APFData
|
|
DB 0
|
|
NormalData
|
|
DB 0
|
|
PrinterFault:
|
|
db 0 ;
|
|
|
|
|
|
|
|
TEMP:
|
|
db 0
|
|
APFOPT:
|
|
db 0
|
|
InData
|
|
DB 0
|
|
OutData
|
|
DB 0
|
|
TXError
|
|
DB 0
|
|
Save
|
|
DW 0
|
|
BYTCNT
|
|
DW 0
|
|
STADDR
|
|
DW 0
|
|
|
|
PrinterSetUp:
|
|
LXI SP, UserStkStart
|
|
call ExtTEIIndexAdd ; Returns with TestN * 16 + EIBuffer in h and l
|
|
mov a,m ;
|
|
sta Test
|
|
inx h
|
|
mov a,m ;
|
|
sta PassCount
|
|
inx h
|
|
mov a,m ;
|
|
sta StopOnErr
|
|
lda Test
|
|
cpi 18
|
|
jnz PrinterSetUp1
|
|
call USARTINIT1
|
|
jmp Loopbacktest
|
|
PrinterSetUp1:
|
|
call USARTINIT
|
|
CALL PrinterInit
|
|
TestDecode:
|
|
lda Test
|
|
cpi 0
|
|
jz LogIt
|
|
CPI 1
|
|
JZ TM1
|
|
cpi 2
|
|
jz TM2
|
|
cpi 3
|
|
jz TM3
|
|
cpi 4
|
|
jz TM4
|
|
cpi 5
|
|
jz TM5
|
|
CPI 6
|
|
JZ TM6
|
|
cpi 7
|
|
jz TM7
|
|
cpi 8
|
|
jz TM8
|
|
cpi 9
|
|
jz TM9
|
|
cpi 10
|
|
jz TM10
|
|
cpi 11
|
|
jz TM11
|
|
CPI 12
|
|
JZ TM12
|
|
cpi 13
|
|
jz TM13
|
|
cpi 14
|
|
jz TM14
|
|
cpi 15
|
|
jz TM15
|
|
cpi 16
|
|
jz TM16
|
|
cpi 17
|
|
jz TM17
|
|
CALL CLEARSTRD
|
|
jmp Loopbacktest
|
|
|
|
|
|
LogIt:
|
|
LXI SP, UserStkStart
|
|
call ExtTEIIndexAdd ; Returns with TestN * 16 + EIBuffer in h and l
|
|
mvi e,12
|
|
mvi d,0
|
|
dad d
|
|
lda PrintStatus
|
|
mov m,a ;
|
|
inx h
|
|
lda APFData
|
|
mov m,a ;
|
|
inx h
|
|
lda NormalData
|
|
mov m,a ;
|
|
inx h
|
|
lda PrinterFault
|
|
mov m,a ;
|
|
call ExtMonitorKeyIn
|
|
lda StopOnErr
|
|
cpi 0
|
|
jnz PrinterSetUp
|
|
lda PassCount
|
|
dcr a
|
|
sta PassCount
|
|
jnz TestDecode
|
|
jmp ExtMonitorTestDone
|
|
|
|
|
|
|
|
ERRLogIt:
|
|
mov a,e
|
|
sta PrinterFault
|
|
mvi a,1
|
|
sta PassCount
|
|
jmp LogIt
|
|
|
|
USARTINIT: ; Initiate USART
|
|
MVI B,0H ; B ¬ MSB, C ¬ LSB
|
|
MVI C,48 ; 12D=Devisor for 2400Hz of Async mode(X16)
|
|
MVI A,OSCcmd ; Frequncy and Mode Set to i8253 (for USART)
|
|
OUT TimerMode ; Counter#0, LSB & MSB, Mode3, Binary
|
|
MOV A,C
|
|
OUT TimerCount0
|
|
MOV A,B
|
|
OUT TimerCount0 ; End of Initiatlize Baud-Rate generator
|
|
MVI A,Reset0 ; Reset UART
|
|
OUT PrinterCommand
|
|
MVI A,Reset1
|
|
OUT PrinterCommand
|
|
MVI A,Reset2
|
|
OUT PrinterCommand
|
|
NOP ; Needed for B-step chips
|
|
MVI A,PTMode630 ; Set Mode value (assumed asynchronous)
|
|
OUT PrinterCommand
|
|
MVI A,Enable ; Set UART Command
|
|
OUT PrinterCommand
|
|
CALL ClearRx
|
|
ret
|
|
|
|
USARTINIT1: ; Initiate USART
|
|
MVI B,0H ; B ¬ MSB, C ¬ LSB
|
|
MVI C,12 ; 12D=Devisor for 9600Hz of Async mode(X16)
|
|
MVI A,OSCcmd ; Frequncy and Mode Set to i8253 (for USART)
|
|
OUT TimerMode ; Counter#0, LSB & MSB, Mode3, Binary
|
|
MOV A,C
|
|
OUT TimerCount0
|
|
MOV A,B
|
|
OUT TimerCount0 ; End of Initiatlize Baud-Rate generator
|
|
MVI A,Reset0 ; Reset UART
|
|
OUT PrinterCommand
|
|
MVI A,Reset1
|
|
OUT PrinterCommand
|
|
MVI A,Reset2
|
|
OUT PrinterCommand
|
|
NOP ; Needed for B-step chips
|
|
MVI A,PTMode ; Set Mode value (assumed asynchronous)
|
|
OUT PrinterCommand
|
|
ret
|
|
|
|
|
|
|
|
PrinterInit:
|
|
MVI A,PrtBreak+Enable
|
|
OUT PrinterCommand
|
|
LXI D,1
|
|
CALL WaitThisTime
|
|
MVI A,Enable ; Set UART Command
|
|
OUT PrinterCommand
|
|
LXI D,1
|
|
CALL WaitThisTime
|
|
CALL ClearRx
|
|
LXI H,PRTBUF
|
|
MVI M,6
|
|
INX H
|
|
MVI M,0
|
|
INX H
|
|
MVI M,0
|
|
INX H
|
|
CALL STPRTBFA
|
|
CALL SEND3BYT
|
|
LXI D,1
|
|
CALL WaitThisTime
|
|
CALL ClearRx
|
|
CALL ReqInData
|
|
CALL IfNoRxErr
|
|
lda APFOPT
|
|
cpi 1
|
|
jz APFRestore
|
|
CALL CheckInData
|
|
APFRestore:
|
|
lda APFOPT
|
|
cpi 0
|
|
RZ
|
|
lda Test
|
|
cpi 1
|
|
jz LogIt
|
|
LXI H,PRTBUF
|
|
MVI M,20H
|
|
INX H
|
|
MVI M,0
|
|
INX H
|
|
MVI M,60H
|
|
INX H
|
|
CALL STPRTBFA
|
|
CALL SEND3BYT
|
|
CALL ReqAPFData
|
|
CALL IfNoAPFRxErr
|
|
CALL CheckInData
|
|
ret
|
|
|
|
|
|
TM1:
|
|
CALL APFFEEDCMD
|
|
MVI M,80H
|
|
INX H
|
|
MVI M,0
|
|
INX H
|
|
MVI M,1
|
|
INX H
|
|
CALL ADD3BYT
|
|
CALL STPRTBFA
|
|
CALL SENDNBYT
|
|
LXI D,30
|
|
CALL WaitThisTime
|
|
CALL IfNoRxErr
|
|
lda InData
|
|
sta NormalData
|
|
Cpi 0C0H
|
|
jz LogIt
|
|
ori 0F0H
|
|
jmp ErrLogIt
|
|
|
|
|
|
|
|
TM2:
|
|
CALL APFFEEDCMD
|
|
MVI M,2
|
|
INX H
|
|
mvi M,0
|
|
INX H
|
|
mvi M,0
|
|
INX H
|
|
CALL ADD3BYT
|
|
CALL STPRTBFA
|
|
CALL SENDNBYT
|
|
CALL ReqInData
|
|
CALL IfNoRxErr
|
|
CALL CheckInData
|
|
Call Eject
|
|
JMP LogIt
|
|
|
|
|
|
TM3:
|
|
CALL APFFEEDCMD
|
|
MVI D,20
|
|
TM3LOOP:
|
|
MVI M,2
|
|
INX H
|
|
mvi M,0
|
|
INX H
|
|
mvi M,0
|
|
INX H
|
|
CALL ADD3BYT
|
|
DCR D
|
|
JNZ TM3LOOP
|
|
CALL STPRTBFA
|
|
CALL SENDNBYT
|
|
CALL ReqInData
|
|
CALL IfNoRxErr
|
|
CALL CheckInData
|
|
Call Eject
|
|
JMP LogIt
|
|
|
|
TM4:
|
|
CALL APFFEEDCMD
|
|
MVI M,8
|
|
INX H
|
|
MVI M,11
|
|
INX H
|
|
mvi a,80H
|
|
MOV M,A
|
|
INX H
|
|
CALL ADD3BYT
|
|
CALL STPRTBFA
|
|
CALL SENDNBYT
|
|
CALL ReqInData
|
|
CALL IfNoRxErr
|
|
CALL CheckInData
|
|
Call Eject
|
|
JMP LogIt
|
|
|
|
TM5:
|
|
CALL APFFEEDCMD
|
|
MVI M,8
|
|
INX H
|
|
MVI M,11
|
|
INX H
|
|
mvi a,0
|
|
MOV M,A
|
|
INX H
|
|
CALL ADD3BYT
|
|
CALL STPRTBFA
|
|
CALL SENDNBYT
|
|
CALL ReqInData
|
|
CALL IfNoRxErr
|
|
CALL CheckInData
|
|
Call Eject
|
|
JMP LogIt
|
|
|
|
TM6:
|
|
CALL APFFEEDCMD
|
|
CALL FEEDCMD
|
|
MVI D,35
|
|
TM6LOOP:
|
|
LXI B,0CC17H
|
|
CALL PRINTANDCR
|
|
LXI B,9C53H
|
|
CALL PRINTANDCR
|
|
DCR D
|
|
JNZ TM6LOOP
|
|
LXI D,8348H
|
|
CALL NSTEPCAR
|
|
CALL STPRTBFA
|
|
CALL SENDNBYT
|
|
CALL ReqInData
|
|
CALL IfNoRxErr
|
|
CALL CheckInData
|
|
Call Eject
|
|
JMP LogIt
|
|
|
|
TM7:
|
|
CALL APFFEEDCMD
|
|
CALL FEEDCMD
|
|
MVI D,4
|
|
TM7LOOP:
|
|
PUSH B
|
|
LXI B,0BC05H
|
|
CALL PRINTANDHOME
|
|
LXI B,0BC5AH
|
|
CALL PRINTANDHOME
|
|
LXI B,0CC06H
|
|
CALL PRINTANDHOME
|
|
LXI B,9C53H
|
|
CALL PRINTANDHOME
|
|
LXI B,0BC07H
|
|
CALL PRINTANDHOME
|
|
LXI B,0CC58H
|
|
CALL PRINTANDHOME
|
|
LXI B,0BC08H
|
|
CALL PRINTANDHOME
|
|
LXI B,0AC57H
|
|
CALL PRINTANDHOME
|
|
LXI B,0BC09H
|
|
CALL PRINTANDHOME
|
|
LXI B,0CC56H
|
|
CALL PRINTANDHOME
|
|
LXI B,0CC0AH
|
|
CALL PRINTANDHOME
|
|
LXI B,0AC55H
|
|
CALL PRINTANDHOME
|
|
LXI B,0BC0BH
|
|
CALL PRINTANDHOME
|
|
LXI B,0CC3EH
|
|
CALL PRINTANDHOME
|
|
LXI B,0BC0CH
|
|
CALL PRINTANDHOME
|
|
LXI B,9C53H
|
|
CALL PRINTANDHOME
|
|
DCR D
|
|
JNZ TM7LOOP
|
|
LXI D,8300H
|
|
CALL NSTEPCAR
|
|
CALL STPRTBFA
|
|
CALL SENDNBYT
|
|
CALL ReqInData
|
|
CALL IfNoRxErr
|
|
CALL CheckInData
|
|
Call Eject
|
|
JMP LogIt
|
|
|
|
|
|
TM8:
|
|
CALL APFFEEDCMD
|
|
CALL FEEDCMD
|
|
MVI C,35
|
|
TM8LOOP:
|
|
PUSH B
|
|
LXI B,9850H
|
|
CALL PRINTANDCR
|
|
LXI B,9818H
|
|
CALL PRINTANDCR
|
|
POP B
|
|
DCR C
|
|
JNZ TM8LOOP
|
|
LXI D,8348H
|
|
CALL NSTEPCAR
|
|
CALL STPRTBFA
|
|
CALL SENDNBYT
|
|
CALL ReqInData
|
|
CALL IfNoRxErr
|
|
CALL CheckInData
|
|
Call Eject
|
|
JMP LogIt
|
|
|
|
|
|
TM9:
|
|
CALL APFFEEDCMD
|
|
CALL FEEDCMD
|
|
LXI H,TM9BUFFER
|
|
SHLD STADDR
|
|
LXI H,84
|
|
SHLD BYTCNT
|
|
CALL SENDNBYT
|
|
CALL ReqInData
|
|
CALL IfNoRxErr
|
|
CALL CheckInData
|
|
Call Eject
|
|
JMP LogIt
|
|
|
|
TM10:
|
|
CALL APFFEEDCMD
|
|
CALL FEEDCMD
|
|
LXI B,9C36H
|
|
MVI A,2
|
|
STA TEMP
|
|
TM10LOOP:
|
|
MVI E,4
|
|
TM10LOOP1:
|
|
MVI D,10
|
|
TM10LOOP2:
|
|
CALL PRINTANDCR
|
|
DCR D
|
|
JNZ TM10LOOP2
|
|
MVI A,10H
|
|
ADD B
|
|
MOV B,A
|
|
PUSH D
|
|
LXI D,8078H
|
|
CALL NSTEPCAR
|
|
CALL LINEFEED
|
|
POP D
|
|
DCR E
|
|
JNZ TM10LOOP1
|
|
LXI B,9C10H
|
|
CALL LINEFEED
|
|
LDA TEMP
|
|
DCR A
|
|
STA TEMP
|
|
JNZ TM10LOOP
|
|
CALL STPRTBFA
|
|
CALL SENDNBYT
|
|
CALL ReqInData
|
|
CALL IfNoRxErr
|
|
CALL CheckInData
|
|
Call Eject
|
|
JMP LogIt
|
|
|
|
|
|
TM11:
|
|
CALL APFFEEDCMD
|
|
CALL FEEDCMD
|
|
LXI B,0B32FH
|
|
MVI D,48
|
|
TM11LOOP:
|
|
CALL PRINTANDCR
|
|
DCR D
|
|
JNZ TM11LOOP
|
|
LXI D,8240H
|
|
CALL NSTEPCAR
|
|
CALL LINEFEED
|
|
LXI B,0C64AH
|
|
MVI D,24
|
|
TM11LOOP1:
|
|
CALL PRINTANDCR
|
|
DCR D
|
|
JNZ TM11LOOP1
|
|
LXI D,8120H
|
|
CALL NSTEPCAR
|
|
CALL LINEFEED
|
|
LXI B,0C836H
|
|
MVI D,18
|
|
TM11LOOP2:
|
|
CALL PRINTANDCR
|
|
DCR D
|
|
JNZ TM11LOOP2
|
|
LXI D,80D2H
|
|
CALL NSTEPCAR
|
|
CALL STPRTBFA
|
|
CALL SENDNBYT
|
|
CALL ReqInData
|
|
CALL IfNoRxErr
|
|
CALL CheckInData
|
|
Call Eject
|
|
JMP LogIt
|
|
|
|
TM12:
|
|
CALL APFFEEDCMD
|
|
CALL FEEDCMD
|
|
MVI D,35
|
|
TM12LOOP:
|
|
LXI B,0A50EH
|
|
CALL PRINTANDCR
|
|
LXI B,0B73CH
|
|
CALL PRINTANDCR
|
|
DCR D
|
|
JNZ TM12LOOP
|
|
LXI D,8348H
|
|
CALL NSTEPCAR
|
|
CALL STPRTBFA
|
|
CALL SENDNBYT
|
|
CALL ReqInData
|
|
CALL IfNoRxErr
|
|
CALL CheckInData
|
|
Call Eject
|
|
JMP LogIt
|
|
|
|
TM13:
|
|
CALL APFFEEDCMD
|
|
CALL FEEDCMD
|
|
MVI D,35
|
|
TM13LOOP:
|
|
LXI B,0B526H
|
|
CALL PRINTANDCR
|
|
LXI B,0B527H
|
|
CALL PRINTANDCR
|
|
DCR D
|
|
JNZ TM13LOOP
|
|
LXI D,8348H
|
|
CALL NSTEPCAR
|
|
CALL STPRTBFA
|
|
CALL SENDNBYT
|
|
CALL ReqInData
|
|
CALL IfNoRxErr
|
|
CALL CheckInData
|
|
Call Eject
|
|
JMP LogIt
|
|
|
|
TM14:
|
|
CALL APFFEEDCMD
|
|
CALL FEEDCMD
|
|
MVI D,10
|
|
TM14LOOP:
|
|
PUSH D
|
|
LXI B,0C650H
|
|
CALL PRINTBC
|
|
LXI D,0348H
|
|
CALL NSTEPCAR
|
|
LXI B,0C650H
|
|
CALL PRINTBC
|
|
LXI D,8348H
|
|
CALL NSTEPCAR
|
|
CALL LINEFEED
|
|
POP D
|
|
DCR D
|
|
JNZ TM14LOOP
|
|
CALL STPRTBFA
|
|
CALL SENDNBYT
|
|
CALL ReqInData
|
|
CALL IfNoRxErr
|
|
CALL CheckInData
|
|
Call Eject
|
|
JMP LogIt
|
|
|
|
|
|
TM15:
|
|
CALL APFFEEDCMD
|
|
CALL FEEDCMD
|
|
MVI D,10
|
|
TM15LOOP:
|
|
PUSH D
|
|
LXI B,0C650H
|
|
CALL PRINTBC
|
|
LXI D,0050H
|
|
CALL NSTEPCAR
|
|
LXI B,0C650H
|
|
CALL PRINTBC
|
|
LXI D,8050H
|
|
CALL NSTEPCAR
|
|
CALL LINEFEED
|
|
POP D
|
|
DCR D
|
|
JNZ TM15LOOP
|
|
CALL STPRTBFA
|
|
CALL SENDNBYT
|
|
CALL ReqInData
|
|
CALL IfNoRxErr
|
|
CALL CheckInData
|
|
Call Eject
|
|
JMP LogIt
|
|
|
|
|
|
TM16:
|
|
lxi h,Buffer
|
|
CALL GenBuf
|
|
CALL STPRTBFA
|
|
CALL SENDNBYT
|
|
lxi h,Buffer1
|
|
CALL RGenBuf
|
|
CALL STPRTBFA
|
|
CALL SENDNBYT
|
|
CALL ReqInData
|
|
CALL IfNoRxErr
|
|
CALL CheckInData
|
|
Call Eject
|
|
JMP LogIt
|
|
|
|
TM17:
|
|
CALL APFFEEDCMD
|
|
CALL FEEDCMD
|
|
MVI D,70
|
|
TM17LOOP:
|
|
LXI B,0B72EH
|
|
CALL PRINTANDCR
|
|
DCR D
|
|
JNZ TM17LOOP
|
|
LXI D,8348H
|
|
CALL NSTEPCAR
|
|
CALL LINEFEED
|
|
MVI D,5
|
|
TM17LOOP1:
|
|
PUSH D
|
|
LXI B,0B72EH
|
|
CALL PRINTBC
|
|
LXI D,033CH
|
|
CALL NSTEPCAR
|
|
LXI B,0B72EH
|
|
CALL PRINTBC
|
|
LXI D,833CH
|
|
CALL NSTEPCAR
|
|
CALL LINEFEED
|
|
POP D
|
|
DCR D
|
|
JNZ TM17LOOP1
|
|
CALL ReqAPFBail
|
|
CALL STPRTBFA
|
|
CALL SENDNBYT
|
|
CALL REBYTCNT
|
|
LXI H,PRTBUF
|
|
MVI D,48
|
|
TM17LOOP2:
|
|
PUSH D
|
|
LXI B,0B72EH
|
|
CALL PRINTBC
|
|
LXI D,033CH
|
|
CALL NSTEPCAR
|
|
LXI B,0B72EH
|
|
CALL PRINTBC
|
|
LXI D,833CH
|
|
CALL NSTEPCAR
|
|
CALL LINEFEED
|
|
POP D
|
|
DCR D
|
|
JNZ TM17LOOP2
|
|
MVI D,70
|
|
TM17LOOP3:
|
|
LXI B,0B72EH
|
|
CALL PRINTANDCR
|
|
DCR D
|
|
JNZ TM17LOOP3
|
|
LXI D,8348H
|
|
CALL NSTEPCAR
|
|
CALL STPRTBFA
|
|
CALL SENDNBYT
|
|
CALL ReqInData
|
|
CALL IfNoRxErr
|
|
CALL CheckInData
|
|
Call Eject
|
|
JMP LogIt
|
|
|
|
|
|
|
|
SEND3BYT:
|
|
LXI H,3
|
|
SHLD BYTCNT
|
|
SENDNBYT:
|
|
LHLD BYTCNT
|
|
MOV B,H
|
|
MOV C,L
|
|
LHLD STADDR
|
|
SENDBYT1:
|
|
CALL CLEARSTRD
|
|
MOV A,M
|
|
STA OutData
|
|
CALL PRTWR
|
|
INX H
|
|
DCX B
|
|
mov a,C ; Check low
|
|
cpi 0
|
|
jnz SENDBYT1
|
|
mov a,B ; Check high
|
|
cpi 0
|
|
jnz SENDBYT1
|
|
RET
|
|
|
|
|
|
CLEARSTRD:
|
|
mvi a,0
|
|
sta PrintStatus
|
|
sta APFData
|
|
sta NormalData
|
|
sta PrinterFault
|
|
sta TXError
|
|
RET
|
|
|
|
|
|
|
|
|
|
PRTWR:
|
|
IN PrinterStatus ; Check Error
|
|
sta PrintStatus
|
|
ANI DSR
|
|
JZ StatusErr
|
|
IN IntReq ; Watch Condition of USART
|
|
ANI PtrRxReqMask
|
|
jz RxReq ; TTY request is active low
|
|
IN IntReq ; Watch Condition of USART
|
|
ANI PtrTxReqMask
|
|
JNZ NoTxReq
|
|
LDA OutData
|
|
OUT PrinterData ; Data Sent
|
|
ret
|
|
|
|
StatusErr:
|
|
mvi e,1 ;need fault code
|
|
jmp ErrLogIt
|
|
NoTxReq:
|
|
lda TXError
|
|
inr a
|
|
STA TXError
|
|
cpi 0
|
|
jnz Wait
|
|
mvi e,2 ; fault code
|
|
jmp ErrLogIt
|
|
|
|
|
|
|
|
Wait:
|
|
push h
|
|
lxi h,1000 ; Constant
|
|
WaitLoop:
|
|
IN IntReq ; Watch Condition of USART
|
|
ANI PtrTxReqMask
|
|
JZ WaitExit
|
|
dcx h
|
|
mov a,l ; Check low
|
|
cpi 0
|
|
jnz WaitLoop
|
|
mov a,h ; Check high
|
|
cpi 0
|
|
jnz WaitLoop
|
|
WaitExit:
|
|
pop h
|
|
jmp PRTWR
|
|
|
|
|
|
|
|
RXWait:
|
|
lxi h,10 ; Constant
|
|
RXWaitLoop:
|
|
push h
|
|
push d
|
|
IN IntReq ; Watch Condition of USART
|
|
ANI PtrRxReqMask
|
|
JZ RXWaitExit
|
|
LXI D,1
|
|
CALL WaitThisTime
|
|
pop d
|
|
pop h
|
|
dcx h
|
|
mov a,l ; Check low
|
|
cpi 0
|
|
jnz RXWaitLoop
|
|
mov a,h ; Check high
|
|
cpi 0
|
|
jnz RXWaitLoop
|
|
jmp ErrLogIt
|
|
RXWaitExit:
|
|
pop d
|
|
pop h
|
|
jmp GetRx
|
|
|
|
RxReq:
|
|
call GetRx
|
|
CALL CheckInData
|
|
MVI E,3
|
|
jmp ErrLogIt
|
|
|
|
IfNoRxErr:
|
|
mvi e,4
|
|
jmp RXWait
|
|
|
|
IfNoAPFRxErr:
|
|
mvi e,5
|
|
jmp RXWait
|
|
|
|
|
|
ClearRx:
|
|
IN IntReq ; Watch Condition of USART
|
|
ANI PtrRxReqMask
|
|
rnz
|
|
jmp GetRx
|
|
|
|
|
|
|
|
GetRx:
|
|
IN PrinterData ; Data Sent
|
|
STA InData
|
|
ret
|
|
|
|
|
|
|
|
ReqInData:
|
|
LXI H,PRTBUF
|
|
MVI M,1
|
|
INX H
|
|
MVI M,0
|
|
INX H
|
|
MVI M,0
|
|
INX H
|
|
CALL STPRTBFA
|
|
CALL SEND3BYT
|
|
RET
|
|
|
|
|
|
ReqAPFData:
|
|
LXI H,PRTBUF
|
|
MVI M,20H
|
|
INX H
|
|
MVI M,0
|
|
INX H
|
|
MVI M,70H
|
|
INX H
|
|
CALL STPRTBFA
|
|
CALL SEND3BYT
|
|
RET
|
|
|
|
|
|
ReqAPFBail:
|
|
MVI M,20H
|
|
INX H
|
|
MVI M,0
|
|
INX H
|
|
MVI M,10H
|
|
INX H
|
|
CALL ADD3BYT
|
|
RET
|
|
|
|
|
|
ReqAPFNextSheet:
|
|
CALL REBYTCNT
|
|
LXI H,PRTBUF
|
|
LXI D,0160H
|
|
CALL NSTEPCAR
|
|
MVI M,20H
|
|
INX H
|
|
MVI M,0
|
|
INX H
|
|
MVI M,20H
|
|
INX H
|
|
CALL ADD3BYT
|
|
CALL STPRTBFA
|
|
CALL SENDNBYT
|
|
RET
|
|
|
|
|
|
Eject:
|
|
lda APFOPT
|
|
cpi 0
|
|
rz
|
|
CALL REBYTCNT
|
|
LXI H,PRTBUF
|
|
LXI D,0200H
|
|
CALL NSTEPCAR
|
|
MVI M,20H
|
|
INX H
|
|
MVI M,0FFH
|
|
INX H
|
|
MVI M,1
|
|
INX H
|
|
CALL ADD3BYT
|
|
LXI D,8200H
|
|
CALL NSTEPCAR
|
|
CALL STPRTBFA
|
|
CALL SENDNBYT
|
|
CALL ReqInData
|
|
CALL IfNoRxErr
|
|
CALL ReqAPFData
|
|
CALL IfNoAPFRxErr
|
|
CALL CheckInData
|
|
RET
|
|
|
|
|
|
TopOfPage:
|
|
CALL REBYTCNT
|
|
LXI H,PRTBUF
|
|
MVI M,20H
|
|
INX H
|
|
MVI M,95H
|
|
INX H
|
|
MVI M,0
|
|
INX H
|
|
CALL ADD3BYT
|
|
RET
|
|
|
|
CheckInData:
|
|
lda InData
|
|
Ani 9
|
|
cpi 9
|
|
jz CheckAPF
|
|
ani 1
|
|
sta APFOPT
|
|
lda InData
|
|
sta NormalData
|
|
MVI E,6
|
|
ani 80H
|
|
jz ErrLogIt
|
|
MVI E,7
|
|
LDA InData
|
|
ani 40H
|
|
jnz ErrLogIt
|
|
MVI E,8
|
|
LDA InData
|
|
ani 20H
|
|
jnz ErrLogIt
|
|
MVI E,8
|
|
LDA InData
|
|
ani 10H
|
|
jnz ErrLogIt
|
|
MVI E,10
|
|
LDA InData
|
|
ani 8H
|
|
jnz ErrLogIt
|
|
MVI E,11
|
|
LDA InData
|
|
ani 4H
|
|
jnz ErrLogIt
|
|
MVI E,12
|
|
LDA InData
|
|
ani 2H
|
|
jnz ErrLogIt
|
|
ret
|
|
|
|
CheckAPF:
|
|
lda InData
|
|
sta APFData
|
|
MVI a,1
|
|
sta APFOPT
|
|
MVI E,13
|
|
LDA InData
|
|
ani 20H
|
|
jz ErrLogIt
|
|
MVI E,14
|
|
LDA InData
|
|
ani 10H
|
|
jnz ErrLogIt
|
|
MVI E,15
|
|
LDA InData
|
|
ani 4H
|
|
jnz ErrLogIt
|
|
MVI E,16
|
|
LDA InData
|
|
ani 2H
|
|
jnz ErrLogIt
|
|
ret
|
|
|
|
WaitThisTime:
|
|
lxi h,DelayVU0
|
|
xchg
|
|
call ExtDelay
|
|
ret
|
|
|
|
|
|
|
|
STPRTBFA:
|
|
LXI H,PRTBUF
|
|
SHLD STADDR
|
|
RET
|
|
|
|
REBYTCNT:
|
|
LXI H,0
|
|
SHLD BYTCNT
|
|
RET
|
|
|
|
ADD3BYT:
|
|
PUSH H
|
|
LHLD BYTCNT
|
|
INX H
|
|
INX H
|
|
INX H
|
|
SHLD BYTCNT
|
|
POP H
|
|
RET
|
|
|
|
APFFEEDCMD:
|
|
CALL REBYTCNT
|
|
LXI H,PRTBUF
|
|
lda APFOPT
|
|
cpi 0
|
|
rz
|
|
mvi a,1
|
|
sta PassCount
|
|
Call Eject
|
|
CALL ReqAPFNextSheet
|
|
CALL ReqInData
|
|
CALL IfNoRxErr
|
|
CALL CheckInData
|
|
Call TopOfPage
|
|
CALL STPRTBFA
|
|
CALL SENDNBYT
|
|
CALL ReqAPFData
|
|
CALL IfNoAPFRxErr
|
|
CALL CheckInData
|
|
lda Test
|
|
cpi 17
|
|
jz APFFEEDCMD1
|
|
Call TopOfPage
|
|
CALL ReqAPFBail
|
|
CALL STPRTBFA
|
|
CALL SENDNBYT
|
|
APFFEEDCMD1:
|
|
CALL ReqInData
|
|
CALL IfNoRxErr
|
|
CALL CheckInData
|
|
CALL REBYTCNT
|
|
LXI H,PRTBUF
|
|
Ret
|
|
|
|
FEEDCMD:
|
|
lda APFOPT
|
|
cpi 0
|
|
rnz
|
|
CALL REBYTCNT
|
|
LXI H,PRTBUF
|
|
Call LINEFEED
|
|
Call LINEFEED
|
|
RET
|
|
|
|
|
|
LINEFEED:
|
|
MVI M,20H
|
|
INX H
|
|
MVI M,8
|
|
INX H
|
|
MVI M,0
|
|
INX H
|
|
CALL ADD3BYT
|
|
RET
|
|
|
|
|
|
|
|
CRMOTION:
|
|
MVI M,10H
|
|
INX H
|
|
MVI M,0CH
|
|
INX H
|
|
MVI M,0
|
|
INX H
|
|
CALL ADD3BYT
|
|
RET
|
|
|
|
|
|
RCRMOTION:
|
|
MVI M,10H
|
|
INX H
|
|
MVI M,0CH
|
|
INX H
|
|
MVI M,80H
|
|
INX H
|
|
CALL ADD3BYT
|
|
RET
|
|
|
|
|
|
|
|
NSTEPCAR:
|
|
MVI M,10H
|
|
INX H
|
|
MOV M,E
|
|
INX H
|
|
MOV M,D
|
|
INX H
|
|
CALL ADD3BYT
|
|
RET
|
|
|
|
PRINTANDCR:
|
|
CALL PRINTBC
|
|
CALL CRMOTION
|
|
RET
|
|
|
|
PRINTBC:
|
|
MVI M,8
|
|
INX H
|
|
MOV M,C
|
|
INX H
|
|
MOV M,B
|
|
INX H
|
|
CALL ADD3BYT
|
|
RET
|
|
|
|
PRINTANDHOME:
|
|
CALL PRINTANDCR
|
|
MVI M,8
|
|
INX H
|
|
MVI M,0
|
|
INX H
|
|
MVI M,0
|
|
INX H
|
|
CALL ADD3BYT
|
|
RET
|
|
|
|
GenBuf: ;buffer pointer in h,l count in d puts ch into b and c
|
|
shld Save
|
|
CALL APFFEEDCMD
|
|
CALL FEEDCMD
|
|
MVI D,72
|
|
GenBufloop:
|
|
push h
|
|
lhld Save
|
|
mov c,m
|
|
INX H
|
|
MOV b,m
|
|
INX H
|
|
shld Save
|
|
pop h
|
|
CALL PRINTANDCR
|
|
dcr d
|
|
rz
|
|
jmp GenBufloop
|
|
|
|
RGenBuf: ;buffer pointer in h,l count in d puts ch into b and c
|
|
shld Save
|
|
CALL REBYTCNT
|
|
LXI H,PRTBUF
|
|
CALL LINEFEED
|
|
MVI D,72
|
|
RGenBufloop:
|
|
push h
|
|
lhld Save
|
|
mov b,m
|
|
dcx H
|
|
MOV c,m
|
|
dcx H
|
|
shld Save
|
|
pop h
|
|
CALL RCRMOTION
|
|
CALL PRINTBC
|
|
dcr d
|
|
rz
|
|
jmp RGenBufloop
|
|
|
|
|
|
|
|
|
|
Loopbacktest:
|
|
MVI A,Enable ; Set UART Command
|
|
OUT PrinterCommand
|
|
lxi h,BufferI
|
|
Loopbacktest1:
|
|
mov a,m
|
|
sta OutData
|
|
cpi 0
|
|
jz LogIt
|
|
call Loopback
|
|
inx h
|
|
jmp Loopbacktest1
|
|
|
|
|
|
Loopback:
|
|
IN PrinterStatus ; Check Error
|
|
ANI DSR
|
|
JZ StatusError
|
|
mvi D,16
|
|
call TXWait
|
|
LDA OutData
|
|
OUT PrinterData ; Data Send
|
|
ret
|
|
|
|
TXWait: push h
|
|
lxi h,0 ; Constant
|
|
TXWaitLoop:
|
|
IN IntReq ; Watch Condition of USART
|
|
ANI PtrTxReqMask
|
|
jz TXWaitExit
|
|
dcx h
|
|
mov a,l ; Check low
|
|
cpi 0
|
|
jnz TXWaitLoop
|
|
mov a,h ; Check high
|
|
cpi 0
|
|
jnz TXWaitLoop
|
|
dcr d
|
|
jz NoTxReqI
|
|
push d
|
|
LXI D,1
|
|
CALL WaitThisTime
|
|
pop d
|
|
pop h
|
|
jmp TXWait
|
|
TXWaitExit:
|
|
pop h
|
|
ret
|
|
|
|
|
|
|
|
|
|
StatusError:
|
|
mvi e,1
|
|
jmp ERRLogIt
|
|
NoTxReqI:
|
|
mvi e,2
|
|
jmp ERRLogIt
|
|
|
|
|
|
BufferI:
|
|
DB 0DH
|
|
DB 0AH
|
|
DB "******************************************************************************"
|
|
DB 0DH
|
|
DB 0AH
|
|
DB 0AH
|
|
DB 0AH
|
|
DB 0AH
|
|
DB 0AH
|
|
DB "THIS PROGRAM IS THE BOOT DIAGNOSTICS VERSION 8.0"
|
|
DB 0DH
|
|
DB 0AH
|
|
DB 0AH
|
|
DB "THIS MESSAGE CONFIRMS THAT THE TTY PRINTER DEVICE IS OPERATIONAL."
|
|
DB 0DH
|
|
DB 0AH
|
|
DB 0DH
|
|
DB 0AH
|
|
DB "The following is a simple test pattern"
|
|
DB 0DH
|
|
DB 0AH
|
|
DB 0AH
|
|
DB 0AH
|
|
DB "1234567890ABCDEFGHIJKLMNOPQRSTYVWXYZabcdefghijklmnopqrstuvwxyz1234567890"
|
|
DB 0DH
|
|
DB 0AH
|
|
DB 0AH
|
|
DB "To check printer buffer set LOOP ON TEST and let run for one minute."
|
|
DB 0DH
|
|
DB 0AH
|
|
DB 0AH
|
|
DB 0AH
|
|
DB 0AH
|
|
DB 0AH
|
|
DB 0AH
|
|
DB 0
|
|
|
|
|
|
TM9BUFFER:
|
|
DB 20H,8,0
|
|
DB 8,83,9CH
|
|
DB 20H,8,0
|
|
DB 8,83,9CH
|
|
DB 10H,0CH,0
|
|
|
|
DB 8,83,9CH
|
|
DB 20H,8,80H
|
|
DB 8,83,9CH
|
|
DB 10H,0CH,0
|
|
|
|
DB 8,83,9CH
|
|
DB 20H,8,0
|
|
DB 8,83,9CH
|
|
DB 10H,0CH,0
|
|
|
|
DB 8,83,9CH
|
|
DB 20H,8,80H
|
|
DB 8,83,9CH
|
|
DB 10H,0CH,80H
|
|
|
|
DB 8,83,9CH
|
|
DB 20H,8,0
|
|
DB 8,83,9CH
|
|
DB 10H,0CH,80H
|
|
|
|
DB 8,83,9CH
|
|
DB 20H,8,80H
|
|
DB 8,83,9CH
|
|
DB 10H,0CH,80H
|
|
|
|
DB 8,83,9CH
|
|
DB 20H,8,0
|
|
DB 8,83,9CH
|
|
|
|
|
|
Buffer:
|
|
DB 78,0C7H
|
|
DB 88,0C6H
|
|
DB 60,0B7H
|
|
DB 64,0C7H
|
|
DB 80,0C6H
|
|
DB 74,0C6H
|
|
DB 56,0C7H
|
|
DB 70,0C7H
|
|
DB 71,0B3H
|
|
DB 75,0B5H
|
|
DB 50,0C7H
|
|
DB 76,0B6H
|
|
DB 58,0C8H
|
|
DB 72,0C7H
|
|
DB 66,0C7H
|
|
DB 86,0C6H
|
|
DB 44,0C7H
|
|
DB 68,0C7H
|
|
DB 82,0C5H
|
|
DB 77,0B6H
|
|
DB 62,0C7H
|
|
DB 84,0B6H
|
|
DB 54,0C8H
|
|
DB 46,0B7H
|
|
DB 52,0B7H
|
|
DB 90,0B6H
|
|
|
|
DB 37,0B5H
|
|
DB 28,0B5H
|
|
DB 34,0B5H
|
|
DB 36,0B5H
|
|
DB 38,0B5H
|
|
DB 51,0B4H
|
|
DB 31,0C5H
|
|
DB 35,0B5H
|
|
DB 49,0A3H
|
|
DB 47,0B3H
|
|
DB 27,0B5H
|
|
DB 53,0B3H
|
|
DB 48,0C8H
|
|
DB 39,0B5H
|
|
DB 40,0C5H
|
|
DB 29,0C5H
|
|
DB 24,0C5H
|
|
DB 41,0A4H
|
|
DB 45,0B4H
|
|
DB 43,0B4H
|
|
DB 33,0B5H
|
|
DB 32,0B5H
|
|
DB 42,0B7H
|
|
DB 26,0B5H
|
|
DB 30,0B5H
|
|
DB 25,0B5H
|
|
|
|
DB 14,0A5H
|
|
DB 13,0B5H
|
|
DB 12,0B5H
|
|
DB 11,0B5H
|
|
DB 9,0B5H
|
|
DB 8,0B5H
|
|
DB 7,0B5H
|
|
DB 6,0C5H
|
|
DB 5,0B5H
|
|
DB 10,0C5H
|
|
DB 61,094H
|
|
DB 87,0A5H
|
|
DB 69,0A3H
|
|
DB 65,0A4H
|
|
DB 17,0C8H
|
|
DB 83,095H
|
|
DB 85,0A5H
|
|
DB 63,0A4H
|
|
DB 67,0A3H
|
|
DB 79
|
|
Buffer1:
|
|
DB 0A5H
|
|
|
|
|
|
|
|
PRTBUF
|
|
DS 100
|
|
end
|
|
@
|
|
|
|
|
|
1.1.1.1
|
|
log
|
|
@first add
|
|
@
|
|
text
|
|
@@
|