|
DataMuseum.dkPresents historical artifacts from the history of: RegneCentralen RC850 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about RegneCentralen RC850 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 26240 (0x6680) Types: RcTekst Names: »43G12264.WP«
└─⟦975e936c7⟧ Bits:30005865 Manualer - tekstfiler 43-GL afdelingen └─⟦this⟧ »43G12264.WP«
╱04002d4e0a0005000000000201503100000000000000000000000000000000000000000000000000091119212931394149515961697179ff04╱ ════════════════════════════════════════════════════════════════════════ ↓ ↲ ┆14┆┆b3┆┆06┆PAGE ┆0b┆↲ ↲ ╞ .RDXO╞ 16↲ ↲ ;╞ ╞ ╞ ╞ RCSL: 43-GL12264↲ ;╞ ╞ ╞ ╞ AUTHOR: KNEH/KDH/FRS↲ ;╞ ╞ ╞ ╞ EDITED: 1984.04.04↲ ↲ ↲ ↲ ↲ ↲ ↲ ↲ ↲ ↲ ↲ ↲ ↲ ↲ ↲ ;╞ PROGRAM LISTING↲ ;╞ RC800-20 CONCENTRATOR FOR RC3600 SYSTEMS↲ ;╞ REV3↲ ↲ ↲ ↲ ↲ ↲ ↲ ↲ ↲ ↲ ↲ ↲ ;KEYWORDS:╞ RC800-20,PROGRAM LISTING,REV3.↲ ;----------------------------------------------------------↲ ;ABSTRACT:╞ THIS PAPER CONTAINS THE LISTING↲ ;╞ ╞ OF THE PROGRAM FOR THE MICROPROCESSOR↲ ;╞ ╞ 8085, IN RC800-20.↲ ↲ ↲ ; SOURCE TAPE: RCSL 43-GL12263↲ ; PROM NO.: ROC 102↲ ; OLD PROM ROB 271↲ ════════════════════════════════════════════════════════════════════════ RDX╞ 8╞ ;↲ ↲ ERR=33000╞ ╞ ; ERROR ADDRESS.↲ ↲ ╞ ╞ ╞ ; ****╞ DEVICE ADDRESS MAP:↲ ╞ ╞ ╞ ;╞ +0):╞ READ/WRITE DATA;↲ ╞ ╞ ╞ ;╞ +1):╞ STATUS READ,SYNC(NOT USED) WRITE;↲ ╞ ╞ ╞ ;╞ +2):╞ READ/WRITE MODE REG 1,2;↲ ╞ ╞ ╞ ;╞ +3):╞ READ/WRITE COMMAND REG;↲ ↲ HOST=33400╞ ╞ ; HOST UART ADDRESS.↲ TERM1=HOST+4╞ ╞ ; TERMINAL1 UART ADDRESS.↲ TERM2=TERM1+4╞ ╞ ; TERMINAL2 UART ADDRESS.↲ TERM3=TERM2+4╞ ╞ ; TERMINAL3 UART ADDRESS.↲ PRINT=TERM3+4╞ ╞ ; PRINTER UART ADDRESS.↲ ↲ ↲ ╞ .LOC╞ 30000╞ ; *** RAM LAYOUT FOR RC800/20:↲ ↲ B1XINP:╞ .BLK╞ 2╞ ; INPUT-OUTPUT POINTERS↲ B1XOUTP:.BLK 2╞ ╞ ; TERMINAL1 XMT.↲ B1RINP:╞ .BLK╞ 2╞ ; INPUT-OUTPUT POINTERS↲ B1ROUTP:.BLK╞ 2╞ ; TERMINAL1 RECEIVE.↲ B2XINP:╞ .BLK╞ 2╞ ; INPUT-OUTPUT POINTERS↲ B2XOUTP:.BLK╞ 2╞ ; TERMINAL2 XMT.↲ B2RINP:╞ .BLK╞ 2╞ ; INPUT-OUTPUT POINTERS↲ B2ROUTP:.BLK╞ 2╞ ; TERMINAL 2 RECEIVE.↲ B3XINP:╞ .BLK╞ 2╞ ; INPUT-OUTPUT POINTERS↲ B3XOUTP:.BLK╞ 2╞ ; TERMINAL3 XMT.↲ B3RINP:╞ .BLK╞ 2╞ ; INPUT-OUTPUT POINTERS↲ B3ROUTP:.BLK╞ 2╞ ; TERMINAL3 RECEIVE.↲ B4XINP:╞ .BLK╞ 2╞ ; INPUT-OUTPUT POINTERS↲ B4XOUTP:.BLK╞ 2╞ ; PRINTER FIFO.↲ B4RINP:╞ .BLK╞ 2╞ ; PRINTER TO HOST MESSAGE↲ B4ROUTP:.BLK╞ 2↲ ↲ STAB1:╞ 0╞ ╞ ; STATUS BUFFERS:↲ STAB2:╞ 0╞ ╞ ;╞ STATUS BYTES ACCORDING TO 'STATAB';↲ STAB3:╞ 0↲ STABP:╞ 0↲ STABH:╞ 0╞ ╞ ;@@ UNUSED;↲ ↲ STAF1:╞ 0╞ ╞ ; STATUS REQUEST FLAGS:↲ STAF2:╞ 0╞ ╞ ; <>0:╞ STATUS REQUEST PENDING NOT YET↲ STAF3:╞ 0╞ ╞ ;╞ TRANSFERRED INTO HOST ;╞ ╞ ↲ STAFP:╞ 0↲ STAFH:╞ 0╞ ╞ ;@@ UNUSED;↲ ════════════════════════════════════════════════════════════════════════ ↲ BUFEM:╞ .BLK╞ 16↲ MODE1:╞ 0╞ ╞ ; TERMINAL MODES:↲ MODE2:╞ 0╞ ╞ ;╞ CONTROL = 0, SKIP = 1 AND DATA = 3;↲ MODE3:╞ 0↲ ↲ ↲ MODEX:╞ 0╞ ╞ ; HOST XMT STATE.↲ MODER:╞ 0╞ ╞ ;@@ UNUSED HOST REC STATE.↲ ;TEM1:╞ 0╞ ╞ ; TEMPORARY SAVE.↲ ;TEM2:╞ 0↲ DEVNO:╞ 0↲ TEMPS:╞ 0╞ ╞ ; TEMP SAVE TERM UART STATUS READ↲ TEMPD:╞ 0╞ ╞ ; TEMP SAVE TERM UART BYTE READ↲ ;LASTAT:╞ 0↲ CURSTAT:0↲ LXMT:╞ 0↲ HOSTS:╞ 0↲ LREC:╞ 0↲ ↲ PSUM:╞ 0╞ ╞ ; PRINTER CHECKSUM↲ ╞ ╞ ╞ ; ACCUMULATOR.↲ GRDY:╞ 0╞ ╞ ; =0 ENABLE AUTOMATIC↲ ╞ ╞ ╞ ; XMIT OF PRINT BUF BUSY.↲ ╞ ↲ B1XSTART:╞ .BLK╞ 100↲ B1RSTART:╞ .BLK╞ 40↲ B2XSTART:╞ .BLK╞ 100↲ B2RSTART:╞ .BLK╞ 40↲ B3XSTART:╞ .BLK╞ 100↲ B3RSTART:╞ .BLK╞ 40↲ B4XSTART:╞ .BLK╞ 200↲ B4RSTART:╞ .BLK╞ 40↲ B5XSTART:╞ .BLK╞ 40╞ ; PSEUDO-BUFFER;↲ ════════════════════════════════════════════════════════════════════════ LOC╞ 4000↲ ↲ ; TABLE FOR MODE AND COMMANDS TO COMMUNICATION UARTS. ↲ ╞ ╞ ╞ ; ****╞ DEVICE PARAM TABLE:↲ ↲ MTAB:╞ 172╞ ╞ ; MODE1 HOST.↲ ╞ 60╞ ╞ ; MODE2 HOST.↲ ╞ 47╞ ╞ ; COMMAND HOST.↲ ╞ 172╞ ╞ ; MODE1 TERMINAL1↲ ╞ 60╞ ╞ ; MODE2 TERMINAL1↲ ╞ 47╞ ╞ ; COMMAND TERMINAL1.↲ ╞ 172╞ ╞ ; MODE1 TERMINAL2.↲ ╞ 60╞ ╞ ; MODE2 TERMINAL2.↲ ╞ 47╞ ╞ ; COMMAND TERMINAL2.↲ ╞ 172╞ ╞ ; MODE1 TERMINAL3↲ ╞ 60╞ ╞ ; MODE2 TERMINAL3.↲ ╞ 47╞ ╞ ; COMMAND TERMINAL3.↲ ╞ 172╞ ╞ ; MODE1 PRINT.↲ ╞ 60╞ ╞ ; MODE2 PRINT.↲ ╞ 43╞ ╞ ; COMMAND PRINT.↲ ↲ ╞ ╞ ╞ ; ****╞ NB: COMMAND SHOULD INCLUDE THE ERROR↲ ╞ ╞ ╞ ;╞ ╞ RESET BIT SET (B4),AS THIS BIT↲ ╞ ╞ ╞ ;╞ ╞ IS AUTOMATICALLY RESET BY UART AFTER↲ ╞ ╞ ╞ ;╞ ╞ RESET OF ERROR FLAGS IS PERFORMED;↲ ↲ ; ****╞ DECOMPOSITION OF MODE1,2 AND COMMAND:↲ ↲ ;╞ MODE1 (172):╞ 1 STOP BIT,EVEN PARITY,PARITY ENABLE,7 BITS,↲ ;╞ ╞ ╞ ASYNCR,RATE*16;↲ ;╞ VAR:╞ 1 STOP BIT MAY BE CHANGED TO 2 STOP BITS BY SWITCH SELECT;↲ ;╞ MODE2 (60):╞ EXT XMIT/REC CLOCK + BAUDRATE UNDEF(50);↲ ;╞ VAR:╞ BAUD RATE IS OWERWRITTEN BY SWITCH SELECT;↲ ;╞ COMMAND (47):╞ FORCE RTS HIGH, NO ERROR RESET, NO FORCE BREAK,↲ ;╞ ╞ ╞ REC ENABLE, DTR HIGH,XMIT ENABLE;↲ ;╞ VAR:╞ IF ERROR IS DETECTED ON TERM LINE THEN EROR RESET AND REC,↲ ;╞ ╞ XMIT DISABLE IS PERFORMED.HEREAFTER NORMAL INIT;(NEW)↲ ;╞ ╞ AFTER ERROR ON HOST LINE THE TERM LINES ARE GIVEN ERROR ↲ ;╞ ╞ RESET. WHILE HOST ERROR DTR OF TERM LINES IS FORCED LOW;↲ ↲ ↲ ↲ ↲ ; JUMP TABLE TO INITIALIZATION AND INTERRUPT ROUTINES.↲ ↲ XINIT:╞ JMP╞ STINIT↲ XIREC:╞ JMP╞ IREC↲ XIMIT:╞ JMP╞ IXMT↲ ════════════════════════════════════════════════════════════════════════ ↲ ; TABLE CONTAINING START ADDRESSES FOR↲ ; BUFFERS.↲ ↲ BUFSTAB:╞ B1XSTART&(377)↲ ╞ ╞ B1XSTART&(177400)/400↲ ╞ ╞ B1RSTART&(377)↲ ╞ ╞ B1RSTART&(177400)/400↲ ╞ ╞ B2XSTART&(377)↲ ╞ ╞ B2XSTART&(177400)/400↲ ╞ ╞ B2RSTART&(377)↲ ╞ ╞ B2RSTART&(177400)/400↲ ╞ ╞ B3XSTART&(377)↲ ╞ ╞ B3XSTART&(177400)/400↲ ╞ ╞ B3RSTART&(377)↲ ╞ ╞ B3RSTART&(177400)/400↲ ╞ ╞ B4XSTART&(377)↲ ╞ ╞ B4XSTART&(177400)/400↲ ╞ ╞ B4RSTART&(377)↲ ╞ ╞ B4RSTART&(177400)/400↲ ↲ ; TABLE CONTAINING TOP ADDRESSES FOR↲ ; BUFFERS.↲ ↲ BUFTTAB:╞ (B1RSTART-1)&(377)↲ ╞ ╞ (B1RSTART-1)&(177400)/400↲ ╞ ╞ (B2XSTART-1)&(377)↲ ╞ ╞ (B2XSTART-1)&(177400)/400↲ ╞ ╞ (B2RSTART-1)&(377)↲ ╞ ╞ (B2RSTART-1)&(177400)/400↲ ╞ ╞ (B3XSTART-1)&(377)↲ ╞ ╞ (B3XSTART-1)&(177400)/400↲ ╞ ╞ (B3RSTART-1)&(377)↲ ╞ ╞ (B3RSTART-1)&(177400)/400↲ ╞ ╞ (B4XSTART-1)&(377)↲ ╞ ╞ (B4XSTART-1)&(177400)/400↲ ╞ ╞ (B4RSTART-1)&(377)↲ ╞ ╞ (B4RSTART-1)&(177400)/400↲ ╞ ╞ (B5XSTART-1)&(377)↲ ╞ ╞ (B5XSTART-1)&(177400)/400↲ ════════════════════════════════════════════════════════════════════════ ↲ ↲ ; CONVERSION TABLE FOR CHARACTERS <32.↲ ; ADDRESSES CONTAINING 377<OCTAL> IS NOT↲ ; USED AS TERMINAL ADDRESS OR AS STATUS MESSAGE.↲ ↲ KEYTAB:╞ ╞ 377╞ ╞ ; 0""↲ ╞ ╞ 3╞ ╞ ; 1"↲ ╞ ╞ 0╞ ╞ ; 2"↲ ╞ ╞ 1╞ ╞ ; 3"↲ ╞ ╞ 2╞ ╞ ; 4"↲ ╞ ╞ 377╞ ╞ ; 5"↲ ╞ ╞ 377╞ ╞ ; 6"↲ ╞ ╞ 377╞ ╞ ; 7"↲ ╞ ╞ 377╞ ╞ ; 8"↲ ╞ ╞ 377╞ ╞ ; 9"↲ ╞ ╞ 377╞ ╞ ; 10"↲ ╞ ╞ 377╞ ╞ ; 11"↲ ╞ ╞ 377╞ ╞ ; 12"↲ ╞ ╞ 377╞ ╞ ; 13"↲ ╞ ╞ 377╞ ╞ ; 14"↲ ╞ ╞ 377╞ ╞ ; 15"↲ ╞ ╞ 6╞ ╞ ; 16"↲ ╞ ╞ 377╞ ╞ ; 17"↲ ╞ ╞ 377╞ ╞ ; 18"↲ ╞ ╞ 377╞ ╞ ; 19"↲ ╞ ╞ 377╞ ╞ ; 20"↲ ╞ ╞ 7╞ ╞ ; 21"↲ ╞ ╞ 377╞ ╞ ; 22"↲ ╞ ╞ 7╞ ╞ ; 23"↲ ╞ ╞ 377╞ ╞ ; 24"↲ ╞ ╞ 377╞ ╞ ; 25"↲ ╞ ╞ 377╞ ╞ ; 26"↲ ╞ ╞ 377╞ ╞ ; 27"↲ ╞ ╞ 377╞ ╞ ; 28"↲ ╞ ╞ 377╞ ╞ ; 29"↲ ╞ ╞ 377╞ ╞ ; 30"↲ ╞ ╞ 377╞ ╞ ; 31"↲ ↲ ════════════════════════════════════════════════════════════════════════ ↲ ; TABLE TO CONVERT THE INTERNAL SYMBOLIC ↲ ; ADDRESS (RANGE 0-7) INTO A CHARACTER <32.↲ ↲ ADDTAB:╞ ╞ 2╞ ╞ ; 0" TERMINAL1.↲ ╞ ╞ 3╞ ╞ ; 1" TERMINAL2.↲ ╞ ╞ 4╞ ╞ ; 2" TERMINAL3.↲ ╞ ╞ 1╞ ╞ ; 3" PRINTER.↲ ╞ ╞ 0╞ ╞ ; 4" HOST.↲ ╞ ╞ 0╞ ╞ ; 5" NOT USED.↲ ╞ ╞ 0╞ ╞ ; 6" NOT USED.↲ ╞ ╞ 0╞ ╞ ; 7" NOT USED.↲ ↲ ↲ ; TABLE TO CONVERT THE INTERNAL STATUS↲ ; INTO A CHARACTER <32.↲ ↲ STATAB:╞ 0╞ ╞ ╞ ; 0"↲ ╞ 27╞ ╞ ╞ ; 1",V24 ERROR.↲ ╞ 25╞ ╞ ╞ ; 2",BUSY.↲ ╞ 25╞ ╞ ╞ ; 3" @@ SHOULD BE V24 ERROR;↲ ╞ 20╞ ╞ ╞ ; 4",READY.↲ ╞ 27╞ ╞ ╞ ; 5",V24 ERROR.↲ ╞ 25╞ ╞ ╞ ; 6",BUSY.↲ ╞ 25╞ ╞ ╞ ; 7",BUSY.↲ ↲ ════════════════════════════════════════════════════════════════════════ ; ROUTINE TO PERFORM A NUMBER OF LOGICAL↲ ; SHIFT LEFT OF A".↲ ; D= NUMBER OF SHIFTS <RANGE 0-7>.↲ ↲ LOSH:╞ MOV╞ E,A╞ ; SAVE A.↲ ╞ MOV╞ A,D↲ ╞ CPI╞ 0↲ ╞ MOV╞ A,E╞ ; RESTORE A.↲ ╞ RZ╞ ╞ ; RETURN IF D=0.↲ ╞ RLC↲ ╞ DCR╞ D↲ ╞ JMP╞ LOSH↲ ↲ ; ROUTINE TO PERFORM A NUMBER OF LOGICAL↲ ; SHIFT RIGHT OF A".↲ ; D= NUMBER OF SHIFTS <RANGE 0-7>.↲ ROSH:╞ MOV╞ E,A╞ ; SAVE A.↲ ╞ MOV╞ A,D↲ ╞ CPI╞ 0↲ ╞ MOV╞ A,E╞ ; RESTORE A.↲ ╞ RZ╞ ╞ ; RETURN IF D=0.↲ ╞ RRC↲ ╞ DCR╞ D↲ ╞ JMP╞ ROSH↲ ↲ ↲ ; ROUTINE TO SET THE ERROR↲ ; INDICATOR.↲ ↲ ERR1:╞ MVI╞ A,1↲ ╞ STA╞ ERR↲ ╞ RET↲ ↲ ↲ ; ROUTINE TO RESET THE ERROR ↲ ; INDICATOR.↲ ↲ ↲ ERR0:╞ XRA╞ A↲ ╞ STA╞ ERR↲ ╞ RET↲ ↲ ════════════════════════════════════════════════════════════════════════ ↲ ; ROUTINE TO READ STATUS FROM A UART.↲ ; WHEN CALLED: ↲ ; A=╞ 0╞ TERMINAL1↲ ;╞ 1╞ TERMINAL2↲ ;╞ 2╞ TERMINAL3↲ ;╞ 3╞ PRINTER↲ ;╞ 4╞ HOST↲ ; HL,DE ARE DESTROYED.↲ RSTAT:╞ RLC↲ ╞ RLC↲ ╞ MOV╞ E,A↲ ╞ XRA╞ A↲ ╞ MOV╞ D,A↲ ╞ LXI╞ HL,STAT1↲ ╞ DAD╞ DE↲ ╞ PCHL↲ ↲ STAT1:╞ LDA╞ TERM1+1↲ ╞ RET↲ ╞ LDA╞ TERM2+1↲ ╞ RET↲ ╞ LDA╞ TERM3+1↲ ╞ RET↲ ╞ LDA╞ PRINT+1↲ ╞ RET↲ ╞ LDA╞ HOST+1↲ ╞ RET↲ ════════════════════════════════════════════════════════════════════════ ↲ ; ROUTINE TO READ A BYTE FROM AN UART.↲ ; WHEN CALLED:↲ ; A=╞ 0╞ TERMINAL1↲ ;╞ 1╞ TERMINAL2↲ ;╞ 2╞ TERMINAL3↲ ;╞ 3╞ PRINTER↲ ;╞ 4╞ HOST↲ ↲ ↲ ↲ RDATA:╞ RLC↲ ╞ RLC↲ ╞ MOV╞ E,A↲ ╞ XRA╞ A↲ ╞ MOV╞ D,A↲ ╞ LXI╞ HL,DIN1↲ ╞ DAD╞ DE↲ ╞ PCHL↲ ↲ DIN1:╞ LDA╞ TERM1↲ ╞ RET↲ ╞ LDA╞ TERM2↲ ╞ RET↲ ╞ LDA╞ TERM3↲ ╞ RET↲ ╞ LDA╞ PRINT↲ ╞ RET↲ ╞ LDA╞ HOST↲ ╞ RET↲ ↲ ════════════════════════════════════════════════════════════════════════ ↲ ; ROUTINE TO OUTPUT A BYTE TO AN UART.↲ ; WHEN CALLED:↲ ; A=╞ 0╞ TERMINAL1↲ ;╞ 1╞ TERMINAL2↲ ;╞ 2╞ TERMINAL3↲ ;╞ 3╞ PRINTER.↲ ;╞ 4╞ HOST↲ ↲ ;H= DATA↲ ↲ ↲ ↲ WOUT:╞ RLC↲ ╞ RLC↲ ╞ MOV╞ E,A↲ ╞ XRA╞ A↲ ╞ MOV╞ D,A↲ ╞ MOV╞ A,H↲ ╞ LXI╞ HL,DOUT1↲ ╞ DAD╞ DE↲ ╞ PCHL↲ ↲ DOUT1:╞ STA╞ TERM1↲ ╞ RET↲ ╞ STA╞ TERM2↲ ╞ RET↲ ╞ STA╞ TERM3↲ ╞ RET↲ ╞ STA╞ PRINT↲ ╞ RET↲ ╞ STA╞ HOST↲ ╞ RET↲ ════════════════════════════════════════════════════════════════════════ ROUTINE TO EMPTY A BUFFER.↲ ; INPUT-OUTPUT POINTERS ARE SET TO BUFFERSTART↲ ;╞ AND BUFEM (2*NO + BOOLEAN TYPE) := 0;↲ ; A=╞ TERMINAL NO (0-3).↲ ; L=╞ XMT/REC TYPE OF BUFER ( 0=XMT,1=REC).↲ ↲ EMPT1:╞ PUSH╞ BC↲ ╞ PUSH╞ DE↲ ╞ PUSH╞ HL↲ ╞ RLC↲ ╞ ADD╞ L↲ ╞ PUSHPSW↲ ╞ RLC↲ ╞ PUSHPSW↲ ╞ LXI╞ BC,BUFSTAB↲ ╞ CALL╞ BCADD↲ EMPT2:╞ POPPSW↲ ╞ RLC↲ ╞ LXI╞ DE,B1XINP↲ ╞ CALL╞ DEADD↲ EMPT3:╞ LDAX╞ BC╞ ; SET INPUT POINTER↲ ╞ STAX╞ DE╞ ; = BUFFER START.↲ ╞ INX╞ BC↲ ╞ INX╞ DE↲ ╞ LDAX╞ BC↲ ╞ STAX╞ DE↲ ╞ INX╞ DE↲ ╞ DCX╞ BC↲ ╞ LDAX╞ BC╞ ; SET OUTPUT POINTER↲ ╞ STAX╞ DE╞ ; = BUFFER START.↲ ╞ INX╞ BC↲ ╞ INX╞ DE↲ ╞ LDAX╞ BC↲ ╞ STAX╞ DE↲ ╞ LXI╞ DE,BUFEM↲ ╞ POPPSW↲ ╞ ADD╞ E↲ ╞ MOV╞ E,A↲ ╞ JNC╞ EMPT4↲ ╞ INR╞ D↲ EMPT4:╞ XRA╞ A↲ ╞ STAX╞ DE↲ ╞ POP╞ HL↲ ╞ POP╞ DE↲ ╞ POP╞ BC↲ ╞ RET↲ ════════════════════════════════════════════════════════════════════════ ; ROUTINE TO COMPARE TO BUFFER ELEMENT EACH OF 2 BYTES (POINTERS)↲ ; WHEN CALLED: ↲ ;╞ BC=╞ POINTER TO BUF-ELEMENT1↲ ;╞ DE=╞ POINTER TO BUF-ELEMENT 2↲ ;RETURN: ZERO FLAG=1 IF EQUAL.↲ ↲ EQUAL:╞ PUSH╞ HL↲ ╞ LDAX╞ BC↲ ╞ MOV╞ H,A↲ ╞ LDAX╞ DE↲ ╞ SUB╞ H↲ ╞ JNZ╞ EQU1↲ ╞ INX╞ BC↲ ╞ INX╞ DE↲ ╞ LDAX╞ BC↲ ╞ MOV╞ H,A↲ ╞ LDAX╞ DE↲ ╞ DCX╞ BC↲ ╞ DCX╞ DE↲ ╞ SUB╞ H↲ EQU1:╞ POP╞ HL↲ ╞ RET↲ ↲ ↲ ; ROUTINE TO TEST A BUFFER FOR EMPTY STATE↲ ; (INPUT POINTER=OUTPUT POINTER)↲ ; WHEN CALLED:↲ ; A=╞ TERMINAL NO (0-4)↲ ; L=╞ XMT/REC TYPE BUFFER(0=XMT,1=REC).↲ ; RETURN:↲ ; ZERO-FLAG=1 IF BUFFER EMPTY.↲ ↲ B4:╞ PUSH╞ DE↲ ╞ LXI╞ DE,BUFEM↲ ╞ RLC↲ ╞ ADD╞ L↲ ╞ ADD╞ E↲ ╞ MOV╞ E,A↲ ╞ JNC╞ B5↲ ╞ INR╞ D↲ B5:╞ LDAX╞ DE↲ ╞ CPI╞ 0↲ ╞ POP╞ DE↲ ╞ RET↲ ════════════════════════════════════════════════════════════════════════ ↲ ; ROUTINE TO INPUT A BYTE TO A BUFFER.↲ ; INCREMENT INPUT POINTER↲ ; IF INPUT POINTER EQUALS TOP OF BUFFER THEN↲ ; INPUT POINTER:= BUFFER START.↲ ; WHEN CALLED:↲ ;╞ A=╞ TERMINAL NO.(0-4)↲ ;╞ L=╞ XMT/REC TYPE BUFFER(0=XMT,1=REC).↲ ;╞ H=╞ INPUT CHARACTER.↲ ↲ ↲ B6:╞ PUSH╞ BC↲ ╞ PUSH╞ DE↲ ╞ PUSH╞ HL↲ ╞ LXI╞ BC,B1XINP╞ ; GET BUFFER POINTER.↲ ╞ MOV╞ H,A↲ ╞ RLC↲ ╞ ADD╞ L↲ ╞ RLC↲ ╞ RLC↲ ╞ ADD╞ C↲ ╞ MOV╞ C,A↲ ╞ JNC╞ B7↲ ╞ INR╞ B↲ B7:╞ LDAX╞ BC↲ ╞ MOV╞ E,A↲ ╞ INX╞ BC↲ ╞ LDAX╞ BC↲ ╞ MOV╞ D,A╞ ; DE=CURRENT BUF ADDRESS.↲ ╞ XTHL↲ ╞ MOV╞ A,H↲ ╞ STAX╞ DE↲ ╞ XTHL↲ ╞ DCX╞ BC╞ ; INCREMENT BUFFER POINTER.↲ ╞ LDAX╞ BC↲ ╞ INR╞ A↲ ╞ STAX╞ BC↲ ╞ JNZ╞ B8↲ ↲ ╞ INX╞ BC↲ ╞ LDAX╞ BC↲ ╞ INR╞ A↲ ╞ STAX╞ BC↲ ╞ DCX╞ BC╞ ; BC=POINTER↲ ════════════════════════════════════════════════════════════════════════ ↲ B8:╞ MOV╞ A,H↲ ╞ RLC↲ ╞ ADD╞ L↲ ╞ RLC↲ ╞ LXI╞ DE,BUFTTAB↲ ╞ CALL╞ DEADD╞ ; DE= BUFFER MAX.↲ ╞ CALL╞ EQUAL╞ ; IF (BC)=(DE) THEN↲ ╞ JNZ╞ B10╞ ; (BC):= BUFFER START.↲ ↲ ╞ MOV╞ A,H↲ ╞ RLC↲ ╞ ADD╞ L↲ ╞ RLC↲ ╞ LXI╞ DE,BUFSTAB↲ ╞ CALL╞ DEADD↲ ╞ LDAX╞ DE↲ ╞ STAX╞ BC↲ ╞ INX╞ DE↲ ╞ INX╞ BC↲ ╞ LDAX╞ DE↲ ╞ STAX╞ BC↲ B10:╞ MOV╞ A,H↲ ╞ RLC↲ ╞ ADD╞ L↲ ╞ LXI╞ HL,BUFEM↲ ╞ ADD╞ L↲ ╞ MOV╞ L,A↲ ╞ JNC╞ EB10↲ ╞ INR╞ H↲ EB10:╞ INR╞ M↲ ╞ POP╞ HL↲ ╞ POP╞ DE↲ ╞ POP╞ BC↲ ╞ RET↲ ════════════════════════════════════════════════════════════════════════ ; ROUTINE TO OUTPUT A BYTE FROM A BUFFER.↲ ; INCREMENT THE OUTPUT POINTER↲ ; IF OUTPUT POINTER=TOP OF BUFFER THEN↲ ; OUTPUT POINTER:= BUFFER START.↲ ; WHEN CALLED:↲ ; ╞ A=╞ TERMINAL NO(0-4)↲ ;╞ L=╞ XMT/REC BUFFER(0=XMT,1=REC).↲ ;RETURN:↲ ;╞ H=╞ CHARACTER.↲ ↲ ↲ B12:╞ PUSH╞ BC╞ ; SAVE ACCUMULATORS.↲ ╞ PUSH╞ DE↲ ╞ PUSH╞ HL↲ ╞ LXI╞ BC,B1XINP+2╞ ; GET BUFFER POINTER.↲ ╞ MOV╞ H,A↲ ╞ RLC↲ ╞ ADD╞ L↲ ╞ RLC↲ ╞ RLC↲ ╞ ADD╞ C↲ ╞ MOV╞ C,A↲ ╞ JNC╞ B13↲ ╞ INR╞ B↲ B13:╞ LDAX╞ BC↲ ╞ MOV╞ E,A↲ ╞ INX╞ BC↲ ╞ LDAX╞ BC↲ ╞ MOV╞ D,A╞ ; DE=CURRENT BUFFER ADDRESS.↲ ╞ LDAX╞ DE↲ ╞ MOV╞ D,H↲ ╞ MOV╞ H,A↲ ╞ XTHL↲ ╞ DCX╞ BC↲ ╞ LDAX╞ BC╞ ; INCR POINTER.↲ ╞ INR╞ A↲ ╞ STAX╞ BC↲ ╞ JNZ╞ B14↲ ↲ ╞ INX╞ BC↲ ╞ LDAX╞ BC↲ ╞ INR╞ A↲ ╞ STAX╞ BC↲ ╞ DCX╞ BC↲ ════════════════════════════════════════════════════════════════════════ ↲ B14:╞ MOV╞ A,D╞ ; TEST POINTER= BUFFER TOP.↲ ╞ MOV╞ H,D↲ ╞ RLC↲ ╞ ADD╞ L↲ ╞ RLC↲ ╞ LXI╞ DE,BUFTTAB↲ ╞ CALL╞ DEADD╞ ; (DE)= BUFFER TOP.↲ ╞ CALL╞ EQUAL↲ ╞ JNZ╞ B16╞ ; IF (BC)=(DE) THEN↲ ↲ ╞ MOV╞ A,H╞ ; (BC):=BUFFER START.↲ ╞ RLC↲ ╞ ADD╞ L↲ ╞ RLC↲ ╞ LXI╞ DE,BUFSTAB↲ ╞ CALL╞ DEADD↲ B17:╞ LDAX╞ DE↲ ╞ STAX╞ BC↲ ╞ INX╞ DE↲ ╞ INX╞ BC↲ ╞ LDAX╞ DE↲ ╞ STAX╞ BC↲ B16:╞ MOV╞ A,H↲ ╞ RLC↲ ╞ ADD╞ L↲ ╞ LXI╞ HL,BUFEM↲ ╞ ADD╞ L↲ ╞ MOV╞ L,A↲ ╞ JNC╞ EB16↲ ╞ INR╞ H↲ EB16:╞ DCR╞ M↲ ╞ POP╞ HL↲ ╞ POP╞ DE↲ ╞ POP╞ BC↲ ╞ RET↲ ════════════════════════════════════════════════════════════════════════ ↲ ; ROUTINE TO ADD THE CONTENTS OF↲ ; A" TO THE REGISTER PAIR BC".↲ ↲ BCADD:╞ ADD╞ C↲ ╞ MOV╞ C,A↲ ╞ JNC╞ K1↲ ╞ INR╞ B↲ K1:╞ RET↲ ↲ ↲ ; ROUTINE TO ADD THE CONTENTS OF↲ ; A" TO THE REGISTER PAIR DE"↲ ↲ DEADD:╞ ADD╞ E↲ ╞ MOV╞ E,A↲ ╞ JNC╞ K2↲ ╞ INR╞ D↲ K2:╞ RET↲ ↲ ; ROUTINE TO ADD THE CONTENTS OF↲ ; A" TO THE REGISTER PAIR HL".↲ ↲ HLADD:╞ ADD╞ L↲ ╞ MOV╞ L,A↲ ╞ JNC╞ K3↲ ╞ INR╞ H↲ K3:╞ RET↲ ════════════════════════════════════════════════════════════════════════ ROUTINE TO WRITE THE CONTENTS OF H"↲ ; INTO THE VARIABLE MODEX↲ ; WHERE A= TERMINAL NO.↲ ↲ WRMODE:╞ LXI╞ BC,MODE1↲ ╞ CALL╞ BCADD↲ ╞ MOV╞ A,H↲ ╞ STAX╞ BC↲ ╞ RET↲ ↲ ; ROUTINE TO READ THE CONTENTS OF THE↲ ; VARIABLE MODEX INTO A.↲ ; WHEN CALLED A= TERMINAL NO.↲ ↲ RDMODE:╞ LXI╞ BC,MODE1↲ ╞ CALL╞ BCADD↲ ╞ LDAX╞ BC↲ ╞ RET↲ ↲ ↲ ; ROUTINE TO PUT LOGICAL 1" INTO THE VARIABLE STAFX↲ ; WHEN CALLED A= TERMINAL NO.↲ ↲ WRSF:╞ LXI╞ BC,STAF1↲ ╞ CALL╞ BCADD↲ ╞ MVI╞ A,1↲ ╞ STAX╞ BC↲ ╞ RET↲ ↲ ↲ ; ROUTINE TO PUT LOGICAL "0" INTO THE VARIABLE "STAFX"↲ ; WHEN CALLED A= TERMINAL NUMBER.↲ ↲ WRSC:╞ LXI╞ BC,STAF1╞ ;↲ ╞ CALL╞ BCADD╞ ;↲ ╞ XRA╞ A╞ ;↲ ╞ STAX╞ BC╞ ;↲ ╞ RET╞ ╞ ;↲ ↲ ↲ ; ROUTINE TO READ THE CONTENTS OF STAFX INTO "A".↲ ; WHEN CALLED A= TERMINAL NO.↲ ↲ RDSF:╞ LXI╞ BC,STAF1↲ ╞ CALL╞ BCADD↲ ╞ LDAX╞ BC↲ ╞ RET↲ ════════════════════════════════════════════════════════════════════════ ; ROUTINE TO WRITE THE CONTENTS OF H"↲ ; INTO THE VARIABLE STABX.↲ ; A= TERMINAL NO.↲ ↲ WRSB:╞ LXI╞ BC,STAB1↲ ╞ CALL╞ BCADD↲ ╞ MOV╞ A,H↲ ╞ STAX╞ BC↲ ╞ RET↲ ↲ ; ROUTINE TO READ THE CONTENTS OF VARIABLE↲ ; STABX INTO A".↲ ; WHEN CALLED A= TERMINAL NO.↲ ↲ RDSB:╞ LXI╞ BC,STAB1↲ ╞ CALL╞ BCADD↲ ╞ LDAX╞ BC↲ ╞ RET↲ ↲ ↲ ; ROUTINE TO TEST IF THE CHAR↲ ; (<32) IN A" IS ONE OF THE SPECIAL ↲ ; CHARACTERS.↲ ; THE TABLE KEYTAB" IS USED.↲ ; RETURN: ZERO-FLAG= 0 IF SPEC CHAR.↲ ↲ SPECH:╞ LXI╞ BC,KEYTAB↲ ╞ MOV╞ H,A↲ ╞ ANI╞ 37↲ ╞ CALL╞ BCADD↲ ╞ LDAX╞ BC↲ ╞ CPI╞ 377↲ ╞ RET↲ ;↲ ════════════════════════════════════════════════════════════════════════ ROUTINE TO SERVICE A TERMINAL.↲ ; V24 ERRORS ARE UPDATED IN STABX.↲ ; TEST RXRDY.↲ ; TEST TXRDY.BUFFER EMPTY.↲ ; DEVNO= TERMINAL NO.↲ ; TEMPS AND TEMPD ARE USED TO SAVE↲ ; STATUS AND DATA.↲ ↲ TSERV:╞ LDA╞ DEVNO↲ ╞ CALL╞ RSTAT╞ ╞ ; INPUT STATUS.↲ ╞ STA╞ TEMPS╞ ╞ ; FROM UART.↲ ╞ LDA╞ DEVNO↲ ╞ CALL╞ RDSF↲ ╞ CPI╞ 0↲ ╞ JNZ╞ TSER1╞ ; NOT READY TO ACCEPT CHANGE OF STATUS.↲ ↲ ╞ LDA╞ TEMPS↲ ╞ ANI╞ 370╞ ;@@ CHANGED 81.11.09↲ ╞ CPI╞ 300↲ ╞ JZ╞ CV24E╞ ; CLEAR V24 ERROR.↲ ↲ ╞ DI↲ ╞ LDA╞ DEVNO↲ ╞ CALL╞ RDSB↲ ╞ ANI╞ 6↲ ╞ MOV╞ H,A↲ ╞ INR╞ H↲ ╞ LDA╞ DEVNO↲ ╞ CALL╞ WRSB╞ ; SET V24 ERROR.↲ ╞ LDA╞ DEVNO╞ ;@@ CHANGED 81.11.09 INIT DEVNO↲ ╞ CALL╞ TINIT╞ ;@@↲ ╞ LDA╞ DEVNO↲ ╞ CALL╞ RDMODE↲ ╞ CPI╞ 1╞ ; SKIP MODE.↲ ╞ JNZ╞ NOSKIP↲ ↲ ╞ EI↲ ╞ JMP╞ TSER1↲ ↲ NOSKIP:╞ LDA╞ DEVNO↲ ╞ CALL╞ WRSF╞ ; SET XMT STATUS.↲ ╞ MVI╞ H,1↲ ╞ LDA╞ DEVNO↲ ╞ CALL╞ WRMODE╞ ; SET SKIP↲ ╞ EI↲ ╞ JMP╞ TSER1↲ ════════════════════════════════════════════════════════════════════════ CV24E:╞ LDA╞ DEVNO↲ ╞ CALL╞ RDSB↲ ╞ ANI╞ 6↲ ╞ MOV╞ H,A↲ ╞ LDA╞ DEVNO↲ ╞ CALL╞ WRSB╞ ; CLEAR V24 ERROR.↲ TSER1:↲ ╞ LDA╞ TEMPS↲ ╞ ANI╞ 2╞ ╞ ; TEST FOR RXRDY=1.↲ ╞ JZ╞ NORXR↲ ↲ ╞ LDA╞ DEVNO↲ ╞ CALL╞ RDATA╞ ╞ ; A= DATA BYTE.↲ ╞ STA╞ TEMPD↲ ╞ DI↲ ╞ LDA╞ DEVNO↲ ╞ CALL╞ RDMODE╞ ; GET MODE.↲ ╞ ANI╞ 3↲ ╞ CPI╞ 0↲ ╞ JZ╞ CONMODE╞ ╞ ; 00= CONTROL MODE.↲ ↲ ╞ CPI╞ 1↲ ╞ JZ╞ NORXR╞ ╞ ; 01= SKIP MODE.↲ ↲ ╞ LDA╞ TEMPD╞ ╞ ; ELSE DATA MODE.↲ ╞ MOV╞ H,A↲ ╞ ANI╞ 340╞ ╞ ; TEST CHAR <32.↲ ╞ MOV╞ A,H↲ ╞ JZ╞ LESS↲ ↲ STCHR:╞ LDA╞ DEVNO╞ ╞ ; STORE CHAR.↲ ╞ MVI╞ L,1╞ ╞ ; INTO REC BUFFER.↲ ╞ DI↲ ╞ CALL╞ B6↲ ╞ EI↲ ╞ JMP╞ NORXR↲ ↲ LESS:╞ CALL╞ SPECH╞ ╞ ; TEST FOR SPEC CHAR.↲ ╞ JNZ╞ NORXR↲ ↲ SETSK:╞ MVI╞ H,1╞ ╞ ; SET SKIP MODE.↲ ╞ LDA╞ DEVNO↲ ╞ CALL╞ WRMODE↲ ╞ LDA╞ TEMPD↲ ╞ MOV╞ H,A↲ ╞ JMP╞ STCHR↲ ════════════════════════════════════════════════════════════════════════ ↲ CONMODE:LDA╞ TEMPD╞ ; CONTROL MODE:↲ ╞ MOV╞ H,A╞ ; CHAR <32 AND NOT SPEC THEN↲ ╞ ANI╞ 340╞ ; STORE INTO REC BUF;↲ ╞ JNZ╞ NORXR╞ ; CHAR >=32 THEN SKIP CHAR.↲ ↲ ╞ MOV╞ A,H↲ ╞ CALL╞ SPECH↲ ╞ JNZ╞ NORXR↲ ↲ ╞ JMP╞ SETSK↲ ↲ NORXR:╞ EI↲ ╞ LDA╞ DEVNO↲ ╞ MVI╞ L,0↲ ╞ DI↲ ╞ CALL╞ B4╞ ╞ ; TEST XMT- BUFFER EMPTY;↲ ╞ EI↲ ╞ RZ↲ ↲ ╞ LDA╞ TEMPS↲ ╞ ANI╞ 1↲ ╞ RZ╞ ╞ ╞ ; TEST TXRDY=1.↲ ↲ ╞ LDA╞ DEVNO↲ ╞ MVI╞ L,0↲ ╞ DI↲ ╞ CALL╞ B12╞ ╞ ; READ A CHAR FROM↲ ╞ LDA╞ DEVNO╞ ╞ ; XMT BUF AND↲ ╞ CALL╞ WOUT╞ ╞ ; OUTPUT TO UART.↲ ╞ EI╞ ╞ ╞ ;↲ ╞ RET↲ ════════════════════════════════════════════════════════════════════════ ↲ ; ROUTINE TO TEST THAT THE 2 BYTES IN BUF1↲ ; ARE GREATER THAN THE 2 BYTES IN BUF2.↲ ; WHEN CALLED:↲ ;╞ BC=POINTER TO BUF1↲ ;╞ DE=POINTER TO BUF2↲ ;RETURN: CY=1 IF BUF1>BUF2.↲ ↲ GREAT:╞ PUSH╞ HL↲ ╞ INX╞ BC╞ ; MOST SIGNIFICANT↲ ╞ INX╞ DE╞ ; BYTES.↲ ╞ LDAX╞ BC↲ ╞ MOV╞ H,A↲ ╞ LDAX╞ DE↲ ╞ CMP╞ H↲ ╞ JC╞ GR1╞ ; JUMP IF BUF1(MSB)>↲ ╞ JNZ╞ GR1╞ ; BUF2(MSB)↲ ↲ ╞ DCX╞ BC↲ ╞ DCX╞ DE↲ ╞ LDAX╞ BC↲ ╞ MOV╞ H,A↲ ╞ LDAX╞ DE↲ ╞ CMP╞ H↲ ╞ POP╞ HL↲ ╞ RET↲ GR1:╞ DCX╞ BC↲ ╞ DCX╞ DE↲ ╞ POP╞ HL↲ ╞ RET↲ ════════════════════════════════════════════════════════════════════════ ; ROUTINE TO TEST THAT THE PRINTER BUFFER IS↲ ; MORE THAN HALF FULL;↲ ; LENGTH OF BUFFER B5XSTART-B4XSTART↲ ; RETURN: CY=1 IF MORE THAN HALF FULL.↲ ↲ HFULL:╞ PUSH╞ DE↲ ╞ PUSH╞ BC↲ ╞ PUSH╞ HL↲ ╞ LXI╞ DE,B4XINP↲ ╞ LXI╞ BC,B4XOUTP↲ ╞ CALL╞ GREAT╞ ; OUTPUT POINTER >↲ ╞ JC╞ OGREAT╞ ; INPUT POINTER.↲ ↲ ╞ XRA╞ A╞ ; CLEAR CARRY↲ ╞ LDAX╞ BC↲ ╞ MOV╞ H,A↲ ╞ LDAX╞ DE↲ ╞ SBB╞ H↲ ╞ MOV╞ L,A↲ ╞ INX╞ BC↲ ╞ INX╞ DE↲ ╞ LDAX╞ BC↲ ╞ MOV╞ H,A↲ ╞ LDAX╞ DE↲ ╞ SBB╞ H↲ ╞ MOV╞ H,A╞ ; HL= RESULT↲ ╞ PUSH╞ HL↲ ╞ POP╞ BC╞ ; BC= BUFFER CONTENTS.↲ ╞ LXI╞ DE,(B4RSTART-B4XSTART)/2↲ ╞ MOV╞ A,E↲ ╞ CMP╞ C↲ ╞ POP╞ HL╞ ; HALF FULL↲ ╞ POP╞ BC↲ ╞ POP╞ DE↲ ╞ RET↲ ════════════════════════════════════════════════════════════════════════ ↲ OGREAT:╞ XRA╞ A↲ ╞ LDAX╞ DE↲ ╞ MOV╞ H,A↲ ╞ LDAX╞ BC↲ ╞ SBB╞ H↲ ╞ MOV╞ L,A↲ ╞ INX╞ BC↲ ╞ INX╞ DE↲ ╞ LDAX╞ DE↲ ╞ MOV╞ H,A↲ ╞ LDAX╞ BC↲ ╞ SBB╞ H↲ ╞ MOV╞ H,A╞ ; HL= RESULT↲ ╞ XCHG↲ ╞ LXI╞ BC,(B4RSTART-B4XSTART)/2↲ ╞ MOV╞ A,E↲ ╞ CMP╞ C↲ ╞ POP╞ HL↲ ╞ POP╞ BC↲ ╞ POP╞ DE↲ ╞ RET↲ ════════════════════════════════════════════════════════════════════════ ↲ ; ROUTINE TO SERVICE THE SERIAL PRINTER UART.↲ ; V24 ERROR ARE UPDATED IN STABP.↲ ; IF FIFO (B4XSTART) IS EMPTY THEN READY↲ ; STATUS IS TRANSMITTED.↲ ; CHAR FROM FIFO IS TRANSFERRED TO UART↲ ; WHEN TXEMPTY.↲ ↲ PDEV=╞ 3╞ ; PRINTER TERMINAL NO.↲ ↲ PSERV:╞ LDA╞ PRINT+1↲ ╞ ANI╞ 200╞ ;** TEST V24 ERROR.↲ ╞ CPI╞ 200╞ ;** NOTICE: BYSY IS INPUT TO DATA CARRIER DETECT↲ ╞ JZ╞ PNOV24↲ ↲ ╞ LDA╞ STABP↲ ╞ ANI╞ 6╞ ; SET 1<0.↲ ╞ INR╞ A↲ ╞ STA╞ STABP↲ ╞ JMP╞ PSER1↲ ↲ PNOV24:╞ LDA╞ STABP↲ ╞ ANI╞ 6╞ ; RESET V24 ERROR.↲ ╞ STA╞ STABP↲ PSER1:╞ LDA╞ PRINT+1↲ ╞ ANI╞ 301↲ ╞ CPI╞ 301╞ ;** TXEMPTY, NOTICE BYSY = DCD;↲ ╞ RNZ↲ ↲ ╞ MVI╞ A,PDEV↲ ╞ MVI╞ L,0↲ ╞ DI╞ ╞ ;↲ ╞ CALL╞ B4╞ ; TEST FIFO FOR EMPTY.↲ ╞ JNZ╞ PSER2╞ ;↲ ↲ ╞ CALL╞ CLBUS╞ ; CLEAR BUSY IF EMPTY↲ ╞ EI↲ ╞ RET↲ ════════════════════════════════════════════════════════════════════════ PSER2:╞ MVI╞ A,PDEV↲ ╞ MVI╞ L,0↲ ╞ DI↲ ╞ CALL╞ B12╞ ; OUTPUT A BYTE FROM↲ ╞ EI↲ ╞ MOV╞ A,H╞ ; FIFO. MOVE CHAR↲ ╞ STA╞ PRINT╞ ; TO PRINT UART.↲ ↲ ╞ MVI╞ A,PDEV↲ ╞ MVI╞ L,0↲ ╞ DI╞ ╞ ;↲ ╞ CALL╞ B4╞ ; IF FIFO NOT EMPTY THEN RETURN↲ ╞ JZ╞ PSER3╞ ;↲ ╞ EI╞ ╞ ;↲ ╞ RET╞ ╞ ;↲ ↲ PSER3:╞ CALL╞ CLBUS╞ ;↲ ╞ LDA╞ GRDY╞ ; FIFO EMPTY:↲ ╞ ANA╞ A↲ ╞ EI╞ ╞ ;↲ ╞ RZ╞ ╞ ;↲ ↲ ╞ DI↲ ╞ LDA╞ STABP↲ ╞ ANI╞ 3↲ ╞ ADI╞ 4╞ ; SET READY STATUS.↲ ╞ STA╞ STABP↲ ╞ MVI╞ A,1↲ ╞ STA╞ STAFP↲ ╞ XRA╞ A↲ ╞ STA╞ GRDY↲ ╞ EI↲ ╞ RET↲ ↲ CLBUS:╞ LDA╞ STAFP╞ ; CLEAR BUSY STATUS.↲ ╞ CPI╞ 0↲ ╞ RNZ╞ ╞ ;↲ ╞ LDA╞ STABP↲ ╞ ANI╞ 5↲ ╞ STA╞ STABP↲ ╞ RET╞ ╞ ; END OF CLEAR BUSY↲ ↲ ════════════════════════════════════════════════════════════════════════ ↲ ; PROGRAM TO SCAN THE TERMINALS↲ ; AND PRINTER FOR SERVICE.↲ ↲ PRO1:╞ XRA╞ A╞ ; START WITH TERMINAL1↲ ╞ STA╞ DEVNO↲ ╞ CALL╞ TSERV↲ ╞ LDA╞ DEVNO↲ ╞ INR╞ A↲ ╞ CPI╞ PDEV↲ ╞ JNZ╞ PRO1+1↲ ╞ CALL╞ IXMT↲ PRO2:╞ XRA╞ A↲ ╞ STA╞ DEVNO↲ ╞ CALL╞ TSERV↲ ╞ LDA╞ DEVNO↲ ╞ INR╞ A↲ ╞ CPI╞ PDEV↲ ╞ JNZ╞ PRO2+1↲ ╞ CALL╞ PSERV↲ ↲ ; V24 ERROR DETECTED ON THE HOST LINE SHOULD↲ ; REMOVE DATA TERMINAL READY TO THE TERMINALS.↲ ↲ ╞ LDA╞ HOST+1╞ ; READ HOST STATUS.↲ ╞ ANI╞ 300↲ ╞ CPI╞ 300↲ ╞ JNZ╞ HV24E↲ ╞ JMP╞ PRO1↲ HV24E:╞ MVI╞ A,45╞ ; SET DTR=0.↲ ╞ STA╞ TERM1+3↲ ╞ STA╞ TERM2+3↲ ╞ STA╞ TERM3+3↲ ╞ LDA╞ HOST+1↲ HV24S:╞ LDA╞ HOST+1↲ ╞ ANI╞ 300↲ ╞ CPI╞ 300↲ ╞ JZ╞ RETAX↲ ╞ CALL╞ PSERV↲ ╞ JMP╞ HV24S↲ RETAX:╞ MVI╞ A,67↲ ╞ STA╞ TERM1+3↲ ╞ STA╞ TERM2+3↲ ╞ STA╞ TERM3+3↲ ╞ JMP╞ PRO1↲ ↲ ════════════════════════════════════════════════════════════════════════ ↲ ; ROUTINE TO SERVICE HOST RECEIVER↲ ; INTERRUPTS.↲ ; ALL RECEIVED CHARACTERS ARE TESTED FOR↲ ; THE CLASS <32.↲ ; IF CHAR<32 THEN THE CHAR IS TESTED BY ↲ ; THE KEYTAB TO SEE IF IT IS AN <ADDR> OR↲ ; <ENABLE>. ALL OTHER CHARACTERS ARE SEND↲ ; TO THE TERMINAL ADDRESSED BY "LREC".↲ ; IF <ADDR> IS DETECTED THEN THE CORRESPONDING↲ ; TERMINAL IS SET TO CONTROL MODE - <TEGN> IS↲ ; SEND TO RC3600.↲ ; IF PRINTER FIFO IS MORE THAN HALF FULL THEN↲ ; <BUSY> STATUS IS SEND.↲ ↲ PERR=╞ 50╞ ╞ ; PARITY ERROR.↲ ENA=╞ 6╞ ╞ ; INTERNAL ENABLE VALUE.↲ TEGN=╞ 20╞ ╞ ↲ PECHA=╞ 100╞ ╞ ; PARITY ERROR SUBSTITUTE.↲ ↲ IREC:╞ DI↲ ╞ PUSHPSW↲ ╞ PUSH╞ HL↲ ╞ PUSH╞ BC↲ ╞ PUSH╞ DE↲ ╞ LDA╞ HOST+1↲ ╞ ANI╞ PERR↲ ╞ JZ╞ IR1↲ ↲ ╞ CALL╞ ERR1╞ ; SET PARITY ERROR INDICATOR↲ ╞ LDA╞ HOST╞ ; READ CHAR AND SKIP CHAR (SUBSTITUTE)↲ ╞ LDA╞ MTAB+2↲ ╞ ADI╞ 20╞ ; CLEAR ERROR FLAGS.↲ ╞ STA╞ HOST+3↲ ╞ MVI╞ A,PECHA↲ ╞ JMP╞ IR2↲ ↲ ════════════════════════════════════════════════════════════════════════ ↲ IR1:╞ LDA╞ HOST↲ IR2:╞ MOV╞ H,A╞ ; H=DATA BYTE.↲ ╞ ANI╞ 340╞ ; TEST IF CHAR<32.↲ ╞ JZ╞ IR4↲ ↲ IR3:╞ LDA╞ LREC╞ ; CHAR INTO XMT BUFFER↲ ╞ MVI╞ L,0╞ ; GIVEN BY "LREC".↲ ╞ CALL╞ B6↲ ╞ LDA╞ LREC↲ ╞ CPI╞ PDEV╞ ; IS IT PRINTER↲ ╞ JZ╞ PFULL↲ ↲ REND:╞ POP╞ DE↲ ╞ POP╞ BC↲ ╞ POP╞ HL↲ ╞ POPPSW↲ ╞ EI↲ ╞ RET↲ ════════════════════════════════════════════════════════════════════════ 4:╞ MOV╞ A,H╞ ; IF NOT SPECIAL CHAR THEN RETURN↲ ╞ CALL╞ SPECH╞ ; ELSE↲ ╞ JZ╞ IR3╞ ; ↲ ↲ ╞ CPI╞ ENA╞ ; BEGIN↲ ╞ JNZ╞ IR5╞ ; IF <ENABLE> RECEIVED THEN↲ ↲ ENABL:╞ LDA╞ LREC╞ ;BEGIN↲ ╞ CPI╞ PDEV╞ ; IF DEVNO = PRINTER THEN EXIT TO SUM-ANSWER;↲ ╞ JZ╞ SUMANS╞ ;↲ ╞ CALL╞ RDMODE╞ ; IF DEV-MODE = CONTROL THEN RETURN;↲ ╞ CPI╞ 0╞ ;↲ ╞ JNZ╞ REND╞ ;↲ ╞ LDA╞ LREC╞ ;↲ ╞ MVI╞ H,3╞ ; SET DEV-MODE := DATA-MODE AND RETURN;↲ ╞ CALL╞ WRMODE╞ ;↲ ╞ JMP╞ REND╞ ;END;↲ ↲ IR5:╞ CPI╞ ENA+1↲ ╞ JZ╞ REND↲ ↲ ╞ STA╞ LREC╞ ; SET NEW <ADDR>↲ ╞ CPI╞ PDEV╞ ; IS IT PRINTER↲ ╞ JZ╞ PANS╞ ; <ADDR>= PRINTER↲ ╞ LDA╞ LREC╞ ; ELSE TERMINAL↲ ╞ CALL╞ RDMODE↲ ╞ ANI╞ 2↲ ╞ JNZ╞ DMODE↲ ↲ ╞ MVI╞ H,0↲ ╞ LDA╞ LREC╞ ; SET TERMINAL INTO CONTROL MODE;↲ ╞ CALL╞ WRMODE↲ ╞ LDA╞ LREC╞ ; NOT DATA MODE.↲ ╞ CALL╞ RDSB↲ ╞ CPI╞ 0╞ ; ***** ERROR SHOULD BE " ANI 5" FIRST *****↲ ╞ JZ╞ REND↲ ╞ LDA╞ LREC↲ ╞ CALL╞ WRSF╞ ; SET STAFX↲ ╞ JMP╞ REND↲ ↲ DMODE:╞ MVI╞ H,TEGN↲ ╞ LDA╞ LREC╞ ; PUT <TEGN> INTO↲ ╞ MVI╞ L,1╞ ; REC BUFFER.↲ ╞ CALL╞ B6↲ ╞ MVI╞ H,0↲ ╞ LDA╞ LREC╞ ; SET TERMINAL↲ ╞ CALL╞ WRMODE╞ ; TO CONTROL MODE.↲ ╞ JMP╞ REND↲ ════════════════════════════════════════════════════════════════════════ PFULL:╞ LDA╞ PSUM↲ ╞ ADD╞ H↲ ╞ STA╞ PSUM↲ ╞ CALL╞ HFULL╞ ; PRINTER FIFO FULL ?↲ ╞ JNC╞ REND↲ ↲ ╞ LDA╞ STABP╞ ; ** PRINTER BUFFER > 1/2 FULL :↲ ╞ ANI╞ 5↲ ╞ ADI╞ 2╞ ; SET BUSY STATUS.↲ ╞ STA╞ STABP↲ ╞ LDA╞ GRDY↲ ╞ ANA╞ A↲ ╞ JNZ╞ REND↲ ↲ ╞ MVI╞ A,1↲ ╞ STA╞ STAFP↲ ╞ STA╞ GRDY↲ ╞ JMP╞ REND↲ ↲ PANS:╞ LDA╞ STABP╞ ; STATUS ANSWER↲ ╞ ANI╞ 3╞ ;↲ ╞ CPI╞ 0↲ ╞ JZ╞ REND╞ ; IF <ENABLE> IS↲ ╞ MVI╞ A,1╞ ; SEND TO PRINTER.↲ ╞ STA╞ STAFP↲ ╞ JMP╞ REND↲ ↲ SUMANS:╞ LDA╞ PSUM╞ ; XMT PSUM TO HOST↲ ╞ ANI╞ 177╞ ; AND PSUM:=0.↲ ╞ MOV╞ H,A↲ ╞ ANI╞ 340↲ ╞ JNZ╞ LCHEC↲ ╞ MVI╞ A,40↲ ╞ ADD╞ H↲ ╞ MOV╞ H,A↲ LCHEC:╞ MVI╞ A,PDEV↲ ╞ MVI╞ L,1↲ ╞ CALL╞ B6↲ ╞ XRA╞ A↲ ╞ STA╞ PSUM↲ ╞ JMP╞ REND↲ ════════════════════════════════════════════════════════════════════════ ↲ ; ROUTINE TO SERVICE HOST TRANSMITTER↲ ; INTERRUPTS.↲ ; XMT MODES (MODEX):↲ ; 1=╞ NEXT SHOULD BE STATUS.↲ ; 2=╞ TEST STATUS FLAGS.↲ ; 5=╞ NEXT SHOULD BE DATA.↲ ; 6=╞ TEST STATUS FLAGS.↲ ↲ NSTAT=╞ 1↲ TSTAT=╞ 2╞ ; USED INITIALLY ONLY (LXMT = OF !!!!!);↲ NDAT=╞ 5↲ TSTAF=╞ 6╞ ; USED ELSEWHERE;↲ TXRDY=╞ 1↲ ↲ IXMT:╞ DI↲ ╞ PUSHPSW↲ ╞ PUSH╞ HL↲ ╞ PUSH╞ BC↲ ╞ PUSH╞ DE↲ ╞ LDA╞ HOST+1╞ ; TEST STATUS FOR TXRDY.↲ ╞ ANI╞ TXRDY↲ ╞ JZ╞ XEND↲ ↲ ╞ LDA╞ MODEX↲ ╞ CPI╞ NSTAT╞ ; NEXT STATUS↲ ╞ JZ╞ XMTST↲ ════════════════════════════════════════════════════════════════════════ ↲ ╞ CPI╞ NDAT╞ ; NEXT DATA↲ ╞ JZ╞ XMTD↲ ╞ MVI╞ H,0↲ ╞ LXI╞ BC,STAF1╞ ; LOOP TO TEST↲ STALOO:╞ LDAX╞ BC╞ ╞ ; STATUS FLAGS↲ ╞ INX╞ BC↲ ╞ ORA╞ A↲ ╞ JNZ╞ XADDS╞ ; XMIT ADDRESS↲ ╞ INR╞ H╞ ; H= TERM ADDR.↲ ╞ MOV╞ A,H↲ ╞ CPI╞ PDEV+1↲ ╞ JNZ╞ STALOO↲ ╞ XRA╞ A╞ ; TEST DATA BUFFERS.↲ DLOOP:╞ STA╞ CURSTAT↲ ╞ MVI╞ L,1↲ ╞ CALL╞ B4╞ ; EMPTY?↲ ╞ JNZ╞ XADDD↲ ╞ LDA╞ CURSTAT↲ ╞ INR╞ A↲ ╞ CPI╞ PDEV+1↲ ╞ JNZ╞ DLOOP↲ XEND:╞ POP╞ DE↲ ╞ POP╞ BC↲ ╞ POP╞ HL↲ ╞ POPPSW↲ ╞ EI↲ ╞ RET↲ ════════════════════════════════════════════════════════════════════════ ↲ ; TRANSMIT STATUS↲ ; "LXMT"= TERMINAL NO.↲ XMTST:╞ LDA╞ LXMT↲ ╞ CALL╞ RDSB↲ ╞ LXI╞ DE,STATAB↲ ╞ CALL╞ DEADD↲ ╞ LDAX╞ DE╞ ; CONVERT STATUS↲ ╞ STA╞ HOST↲ ╞ LDA╞ LXMT↲ ╞ CALL╞ WRSC↲ ╞ MVI╞ A,TSTAF↲ ╞ STA╞ MODEX↲ ╞ JMP╞ XEND↲ ↲ ↲ ; TRANSMIT DATA↲ ; LXMT= TERMINAL NO.↲ ↲ XMTD:╞ LDA╞ LXMT↲ ╞ MVI╞ L,1╞ ; GET BYTE.↲ ╞ CALL╞ B12╞ ; FROM REC BUFFER;↲ ╞ MOV╞ A,H↲ ╞ STA╞ HOST╞ ; CHAR TO HOST UART↲ ╞ ANI╞ 340↲ ╞ JZ╞ NREP↲ ╞ LDA╞ LXMT↲ ╞ CPI╞ PDEV↲ ╞ JZ╞ NREP↲ ╞ MOV╞ A,H╞ ; REPEAT CHAR (XMIT CHAR)↲ ╞ MVI╞ L,0╞ ; TO TERMINAL↲ ╞ LDA╞ LXMT↲ ╞ CALL╞ B6╞ ; BUF IN↲ NREP:╞ LDA╞ LXMT↲ ╞ MVI╞ L,1↲ ╞ CALL╞ B4╞ ; EMPTY?↲ ╞ JNZ╞ XEND↲ ╞ MVI╞ A,TSTAF↲ ╞ STA╞ MODEX↲ ╞ JMP╞ XEND↲ ════════════════════════════════════════════════════════════════════════ ↲ ; TRANSMIT <ADDR> IN STATUS SEQUENCE.↲ ↲ ↲ XADDS:╞ LDA╞ LXMT╞ ; H= TERM NO.↲ ╞ SUB╞ H↲ ╞ JZ╞ XADDO↲ ↲ ╞ MOV╞ A,H↲ ╞ STA╞ LXMT↲ ╞ LXI╞ BC,ADDTAB↲ ╞ CALL╞ BCADD↲ ╞ LDAX╞ BC↲ ╞ STA╞ HOST╞ ; <ADDR> TO UART↲ XADDO:╞ MVI╞ A,NSTAT↲ ╞ STA╞ MODEX↲ ╞ JMP╞ XEND↲ ↲ ; TRANSMIT ADDRESS IN DATA SEQUENCE.↲ ↲ XADDD:╞ LDA╞ CURSTAT╞ ; SAVE TERM NO.↲ ╞ MOV╞ H,A↲ ╞ LDA╞ LXMT↲ ╞ SUB╞ H↲ ╞ JZ╞ XADDK↲ ↲ ╞ MOV╞ A,H↲ ╞ STA╞ LXMT↲ ╞ LXI╞ BC,ADDTAB↲ ╞ CALL╞ BCADD↲ ╞ LDAX╞ BC↲ ╞ STA╞ HOST╞ ; <ADDR> TO UART↲ XADDK:╞ MVI╞ A,NDAT↲ ╞ STA╞ MODEX↲ ╞ JMP╞ XEND↲ ════════════════════════════════════════════════════════════════════════ ↲ ; ROUTINE TO INITIALIZE AN UART.↲ ; WHEN CALLED:↲ ; BC=╞ POINTER TO MODE TAB(MTAB)↲ ; DE=╞ MODE REG DESTINATION↲ ; A=╞ BAUD RATE↲ ; L= NO. OF STOPBITS( 1<7 IF 2 STOPBITS, 0 IF 1 STOPBIT).↲ INITU:╞ MOV╞ H,A↲ ╞ LDAX╞ BC↲ ╞ ADD╞ L↲ ╞ STAX╞ DE╞ ; SET MODE1↲ ╞ INX╞ BC↲ ╞ LDAX╞ BC↲ ╞ ADD╞ H↲ ╞ STAX╞ DE╞ ; SET MODE2↲ ╞ INX╞ BC↲ ╞ INX╞ DE↲ ╞ LDAX╞ BC↲ ╞ STAX╞ DE╞ ; SET COMMAND↲ ╞ RET↲ ════════════════════════════════════════════════════════════════════════ ↲ ; INITIALIZATION OF UARTS.↲ STRP1=╞ 32000╞ ; STRAP FIELD1↲ STRP2=╞ 32400╞ ; STRAP FIELD2↲ ↲ SPINIT=╞ 31777╞ ; STACK POINTER INIT VALUE.↲ ↲ STINIT:╞ LXI╞ DE,HOST+2↲ ╞ LXI╞ SP,SPINIT↲ ╞ LXI╞ BC,MTAB↲ ╞ LDA╞ STRP2↲ ╞ ANI╞ 200↲ ╞ MOV╞ L,A↲ ╞ LDA╞ STRP2↲ ╞ ANI╞ 17↲ ╞ CALL╞ INITU╞ ; INIT HOST.↲ ╞ LXI╞ DE,TERM1+2↲ ╞ LXI╞ BC,MTAB+3↲ ╞ LDA╞ STRP2↲ ╞ RLC↲ ╞ ANI╞ 200↲ ╞ MOV╞ L,A↲ ╞ LDA╞ STRP1↲ ╞ ANI╞ 17↲ ╞ CALL╞ INITU╞ ; INIT TERMINAL1↲ ╞ LDA╞ STRP2↲ ╞ RLC↲ ╞ ANI╞ 200↲ ╞ MOV╞ L,A↲ ╞ LDA╞ STRP1↲ ╞ ANI╞ 17↲ ╞ LXI╞ DE,TERM2+2↲ ╞ LXI╞ BC,MTAB+6↲ ╞ CALL╞ INITU╞ ; INIT TERMINAL2↲ ════════════════════════════════════════════════════════════════════════ ↲ ╞ LDA╞ STRP2↲ ╞ RLC↲ ╞ ANI╞ 200↲ ╞ MOV╞ L,A↲ ╞ LDA╞ STRP1↲ ╞ ANI╞ 17↲ ╞ LXI╞ DE,TERM3+2↲ ╞ LXI╞ BC,MTAB+11↲ ╞ CALL╞ INITU↲ ╞ LDA╞ STRP2↲ ╞ RLC↲ ╞ RLC↲ ╞ ANI╞ 200↲ ╞ MOV╞ L,A↲ ╞ LDA╞ STRP1↲ ╞ MVI╞ D,4↲ ╞ CALL╞ ROSH↲ ╞ ANI╞ 17↲ ╞ LXI╞ DE,PRINT+2↲ ╞ LXI╞ BC,MTAB+14↲ ╞ CALL╞ INITU↲ ↲ ↲ ; INIT BUFFERS.↲ ↲ ╞ MVI╞ H,0↲ ╞ MVI╞ L,0↲ ╞ MOV╞ A,H↲ INI1:╞ CALL╞ EMPT1╞ ; EMPTY XMT BUFFERS.↲ ╞ INR╞ H↲ ╞ MOV╞ A,H↲ ╞ CPI╞ PDEV+1↲ ╞ JNZ╞ INI1↲ ↲ ╞ MVI╞ H,0↲ ╞ MVI╞ L,1↲ ╞ MOV╞ A,H↲ INI2:╞ CALL╞ EMPT1╞ ; EMPTY REC BUFFERS.↲ ╞ INR╞ H↲ ╞ MOV╞ A,H↲ ╞ CPI╞ PDEV+1↲ ╞ JNZ╞ INI2↲ ════════════════════════════════════════════════════════════════════════ ↲ ; RESET STABX-- STAFX VARIABLES.↲ ↲ ↲ ╞ MVI╞ D,(GRDY-STAB1)+1↲ ╞ LXI╞ BC╞ STAB1↲ SINI1:╞ XRA╞ A↲ ╞ STAX╞ BC↲ ╞ INX╞ BC↲ ╞ DCR╞ D↲ ╞ JNZ╞ SINI1↲ ↲ ╞ LXI╞ BC,STABP╞ ; INIT READY: ** CHANGE TO 'STAB1': INCL TERM **↲ ╞ MVI╞ D,1╞ ╞ ; ** CHANGE TO 4: INCLUDE TERMINALS **↲ ╞ MVI╞ A,4╞ ╞ ;↲ SINI2:╞ STAX╞ BC╞ ╞ ;↲ ╞ INX╞ BC╞ ╞ ;↲ ╞ DCR╞ D╞ ╞ ;↲ ╞ JNZ╞ SINI2╞ ╞ ;↲ ↲ ↲ ; SET TERMINALS TO SKIP MODE.↲ ╞ LXI╞ BC,MODE1↲ ╞ MVI╞ A,1↲ ╞ STAX╞ BC↲ ╞ INX╞ BC↲ ╞ STAX╞ BC↲ ╞ INX╞ BC↲ ╞ STAX╞ BC↲ ╞ INX╞ BC↲ ╞ MVI╞ A,TSTAT╞ ; SET MODEX↲ ╞ STAX╞ BC↲ ╞ MVI╞ A,17↲ ╞ STA╞ LXMT↲ ╞ XRA╞ A↲ ╞ STA╞ LREC↲ ╞ STA╞ PSUM↲ ╞ CALL╞ ERR0↲ ╞ XRA╞ A↲ ╞ STA╞ GRDY↲ ╞ MVI╞ A,11↲ ╞ SIM↲ ╞ EI↲ ╞ JMP╞ PRO1↲ ════════════════════════════════════════════════════════════════════════ ; ****╞ ROUTINE TO INIT (REINITIALIZE) ONE TERMINAL↲ ; ****↲ ;╞ PARAM:╞ REG A = DEVNO (0..2);↲ ↲ TINIT:╞ MOV╞ H,A╞ ;BEGIN↲ ╞ RLC╞ ╞ ; RESET UART:↲ ╞ RLC╞ ╞ ;↲ ╞ LXI╞ DE,TERM1+3╞ ;↲ ╞ CALL╞ DEADD╞ ; COMMAND := RESET ERROR,DISABLE REC,XMIT;↲ ╞ MVI╞ A,20╞ ; END RESET;↲ ╞ STAX╞ DE╞ ;↲ ↲ ╞ XRA╞ A╞ ; REINITIALIZE UART:↲ ╞ MOV╞ D,H╞ ;↲ ╞ ADD╞ D╞ ;↲ ╞ ADD╞ D╞ ;↲ ╞ ADD╞ D╞ ;↲ ╞ LXI╞ BC,MTAB+3╞ ;↲ ╞ CALL╞ BCADD╞ ; GET PARAM TABLE ADDRESS;↲ ╞ MOV╞ A,H╞ ;↲ ╞ RLC╞ ╞ ;↲ ╞ RLC╞ ╞ ;↲ ╞ LXI╞ DE,TERM1+2╞ ;↲ ╞ CALL╞ DEADD╞ ; GET DEVICE ADDRESS TABLE ADDRESS;;↲ ╞ PUSH╞ HL╞ ;↲ ╞ LDA╞ STRP2╞ ;↲ ╞ RLC╞ ╞ ;↲ ╞ ANI╞ 200╞ ; GET 'STOP BITS SELECT';↲ ╞ MOV╞ L,A╞ ;↲ ╞ LDA╞ STRP1╞ ; GET 'BAUD RATE SELECT';↲ ╞ ANI╞ 17╞ ;↲ ╞ CALL╞ INITU╞ ; INIT UART (PARAM,DEVICE);↲ ╞ POP╞ HL╞ ; END REINITIALIZE;↲ ;↲ ════════════════════════════════════════════════════════════════════════ ╞ MVI╞ L,0╞ ;↲ ╞ MOV╞ A,H╞ ;↲ ╞ CALL╞ EMPT1╞ ; EMPTY XMIT BUF;↲ ╞ MVI╞ L,1╞ ;↲ ╞ MOV╞ A,H╞ ;↲ ╞ CALL╞ EMPT1╞ ; EMPTY REC BUF;↲ ╞ RET╞ ╞ ;↲ ↲ ;╞ MOV╞ E,H╞ ;↲ ;╞ XRA╞ A╞ ;↲ ;╞ MOV╞ D,A╞ ;↲ ;╞ LXI╞ HL,MODE1╞ ;↲ ;╞ DAD╞ DE╞ ;↲ ;╞ MVI╞ A,1╞ ;↲ ;╞ MOV╞ M,A╞ ; RESET TERMINAL MODE TO CONTROL MODE;↲ ;╞ LXI╞ HL,STAB1╞ ;↲ ;╞ DAD╞ DE╞ ;↲ ;╞ MVI╞ A,1╞ ;↲ ;╞ MOV╞ M,A╞ ; SET STATUS REM TO V24-ERROR STATUS;↲ ;╞ LXI╞ HL,STAF1╞ ;↲ ;╞ DAD╞ DE╞ ;↲ ;╞ MOV╞ M,A╞ ; SET STATUS FLAG 'STATUS NOT PROCESSED';↲ ;╞ RET╞ ╞ ;END INIT;↲ ════════════════════════════════════════════════════════════════════════ ↲ ╞ .LOC╞ 0↲ ↲ ╞ JMP╞ XINIT╞ ; POWER RESTART.↲ ↲ ╞ .LOC╞ 70↲ ╞ JMP╞ XIREC╞ ; HOST REC INTERRUPT.↲ ╞ RET↲ ╞ JMP╞ XIMIT╞ ; HOST XMT INTERRUPT.↲ ╞ RET↲ ↲ ╞ .END↲ ↲ ════════════════════════════════════════════════════════════════════════ ┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆00┆┆1a┆┆1a┆┆1a┆┆1a┆┆1a┆┆1a┆┆1a┆┆1a┆┆1a┆┆1a┆┆1a┆┆1a┆┆1a┆┆1a┆┆1a┆┆1a┆┆1a┆┆1a┆┆1a┆┆1a┆┆1a┆┆1a┆┆1a┆┆1a┆┆1a┆┆1a┆┆1a┆┆1a┆┆1a┆┆1a┆┆1a┆┆1a┆┆1a┆┆1a┆┆1a┆┆1a┆┆1a┆┆1a┆┆1a┆┆1a┆┆1a┆┆1a┆┆1a┆┆1a┆┆1a┆┆1a┆┆1a┆┆1a┆┆1a┆┆1a┆┆1a┆┆1a┆┆1a┆┆1a┆
0x0000…0020 (0,) 00 00 00 00 00 00 00 00 3e 02 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 05 4e 00 00 00 ┆ > N ┆ 0x0020…0040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ┆ ┆ 0x0040…0047 00 00 00 00 00 00 00 ┆ ┆ 0x0047…0080 Params { 0x0047…0080 04 00 2d 4e 0a 00 05 00 00 00 00 02 01 50 31 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ┆ -N P1 ┆ 0x0047…0080 00 00 00 00 00 00 00 00 09 11 19 21 29 31 39 41 49 51 59 61 69 71 79 ff 04 ┆ !)19AIQYaiqy ┆ 0x0047…0080 } 0x0080…0083 FormFeed { 0x0080…0083 0c 80 80 ┆ ┆ 0x0080…0083 } 0x0083…00a0 0a 0d 0a 14 b3 06 50 41 47 45 20 0b 0d 0a 0d 0a 09 2e 52 44 58 4f 09 31 36 0d 0a 0d 0a ┆ PAGE .RDXO 16 ┆ 0x00a0…00c0 3b 09 09 09 09 52 43 53 4c 3a 20 34 33 2d 47 4c 31 32 32 36 34 0d 0a 3b 09 09 09 09 41 55 54 48 ┆; RCSL: 43-GL12264 ; AUTH┆ 0x00c0…00e0 4f 52 3a 20 4b 4e 45 48 2f 4b 44 48 2f 46 52 53 0d 0a 3b 09 09 09 09 45 44 49 54 45 44 3a 20 31 ┆OR: KNEH/KDH/FRS ; EDITED: 1┆ 0x00e0…0100 39 38 34 2e 30 34 2e 30 34 0d 0a 0d 0a 0d 0a 0d 0a 0d 0a 0d 0a 0d 0a 0d 0a 0d 0a 0d 0a 0d 0a 0d ┆984.04.04 ┆ 0x0100…0120 0a 0d 0a 0d 0a 0d 0a 3b 09 50 52 4f 47 52 41 4d 20 4c 49 53 54 49 4e 47 0d 0a 3b 09 52 43 38 30 ┆ ; PROGRAM LISTING ; RC80┆ 0x0120…0140 30 2d 32 30 20 43 4f 4e 43 45 4e 54 52 41 54 4f 52 20 46 4f 52 20 52 43 33 36 30 30 20 53 59 53 ┆0-20 CONCENTRATOR FOR RC3600 SYS┆ 0x0140…0160 54 45 4d 53 0d 0a 3b 09 52 45 56 33 0d 0a 0d 0a 0d 0a 0d 0a 0d 0a 0d 0a 0d 0a 0d 0a 0d 0a 0d 0a ┆TEMS ; REV3 ┆ 0x0160…0180 0d 0a 0d 0a 3b 4b 45 59 57 4f 52 44 53 3a 09 20 52 43 38 30 30 2d 32 30 2c 50 52 4f 47 52 41 4d ┆ ;KEYWORDS: RC800-20,PROGRAM┆ 0x0180…01a0 20 4c 49 53 54 49 4e 47 2c 52 45 56 33 2e 0d 0a 3b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ┆ LISTING,REV3. ;---------------┆ 0x01a0…01c0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ┆--------------------------------┆ 0x01c0…01e0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 3b 41 42 53 54 52 41 43 54 3a 09 20 54 48 49 53 20 50 41 ┆----------- ;ABSTRACT: THIS PA┆ 0x01e0…0200 50 45 52 20 43 4f 4e 54 41 49 4e 53 20 54 48 45 20 4c 49 53 54 49 4e 47 0d 0a 3b 09 09 20 4f 46 ┆PER CONTAINS THE LISTING ; OF┆ 0x0200…0220 (1,) 20 54 48 45 20 50 52 4f 47 52 41 4d 20 46 4f 52 20 54 48 45 20 4d 49 43 52 4f 50 52 4f 43 45 53 ┆ THE PROGRAM FOR THE MICROPROCES┆ 0x0220…0240 53 4f 52 0d 0a 3b 09 09 20 38 30 38 35 2c 20 49 4e 20 52 43 38 30 30 2d 32 30 2e 0d 0a 0d 0a 0d ┆SOR ; 8085, IN RC800-20. ┆ 0x0240…0260 0a 3b 20 53 4f 55 52 43 45 20 54 41 50 45 3a 20 20 20 52 43 53 4c 20 34 33 2d 47 4c 31 32 32 36 ┆ ; SOURCE TAPE: RCSL 43-GL1226┆ 0x0260…0280 33 0d 0a 3b 20 50 52 4f 4d 20 4e 4f 2e 3a 20 52 4f 43 20 31 30 32 0d 0a 3b 20 4f 4c 44 20 50 52 ┆3 ; PROM NO.: ROC 102 ; OLD PR┆ 0x0280…028c 4f 4d 20 52 4f 42 20 32 37 31 0d 0a ┆OM ROB 271 ┆ 0x028c…028f FormFeed { 0x028c…028f 0c 83 95 ┆ ┆ 0x028c…028f } 0x028f…02a0 52 44 58 09 38 09 3b 0d 0a 0d 0a 45 52 52 3d 33 33 ┆RDX 8 ; ERR=33┆ 0x02a0…02c0 30 30 30 09 09 3b 20 45 52 52 4f 52 20 41 44 44 52 45 53 53 2e 0d 0a 0d 0a 09 09 09 3b 20 2a 2a ┆000 ; ERROR ADDRESS. ; **┆ 0x02c0…02e0 2a 2a 09 44 45 56 49 43 45 20 41 44 44 52 45 53 53 20 4d 41 50 3a 0d 0a 09 09 09 3b 09 2b 30 29 ┆** DEVICE ADDRESS MAP: ; +0)┆ 0x02e0…0300 3a 09 52 45 41 44 2f 57 52 49 54 45 20 44 41 54 41 3b 0d 0a 09 09 09 3b 09 2b 31 29 3a 09 53 54 ┆: READ/WRITE DATA; ; +1): ST┆ 0x0300…0320 41 54 55 53 20 52 45 41 44 2c 53 59 4e 43 28 4e 4f 54 20 55 53 45 44 29 20 57 52 49 54 45 3b 0d ┆ATUS READ,SYNC(NOT USED) WRITE; ┆ 0x0320…0340 0a 09 09 09 3b 09 2b 32 29 3a 09 52 45 41 44 2f 57 52 49 54 45 20 4d 4f 44 45 20 52 45 47 20 31 ┆ ; +2): READ/WRITE MODE REG 1┆ 0x0340…0360 2c 32 3b 0d 0a 09 09 09 3b 09 2b 33 29 3a 09 52 45 41 44 2f 57 52 49 54 45 20 43 4f 4d 4d 41 4e ┆,2; ; +3): READ/WRITE COMMAN┆ 0x0360…0380 44 20 52 45 47 3b 0d 0a 0d 0a 48 4f 53 54 3d 33 33 34 30 30 09 09 3b 20 48 4f 53 54 20 55 41 52 ┆D REG; HOST=33400 ; HOST UAR┆ 0x0380…03a0 54 20 41 44 44 52 45 53 53 2e 0d 0a 54 45 52 4d 31 3d 48 4f 53 54 2b 34 09 09 3b 20 54 45 52 4d ┆T ADDRESS. TERM1=HOST+4 ; TERM┆ 0x03a0…03c0 49 4e 41 4c 31 20 55 41 52 54 20 41 44 44 52 45 53 53 2e 0d 0a 54 45 52 4d 32 3d 54 45 52 4d 31 ┆INAL1 UART ADDRESS. TERM2=TERM1┆ 0x03c0…03e0 2b 34 09 09 3b 20 54 45 52 4d 49 4e 41 4c 32 20 55 41 52 54 20 41 44 44 52 45 53 53 2e 0d 0a 54 ┆+4 ; TERMINAL2 UART ADDRESS. T┆ 0x03e0…0400 45 52 4d 33 3d 54 45 52 4d 32 2b 34 09 09 3b 20 54 45 52 4d 49 4e 41 4c 33 20 55 41 52 54 20 41 ┆ERM3=TERM2+4 ; TERMINAL3 UART A┆ 0x0400…0420 (2,) 44 44 52 45 53 53 2e 0d 0a 50 52 49 4e 54 3d 54 45 52 4d 33 2b 34 09 09 3b 20 50 52 49 4e 54 45 ┆DDRESS. PRINT=TERM3+4 ; PRINTE┆ 0x0420…0440 52 20 55 41 52 54 20 41 44 44 52 45 53 53 2e 0d 0a 0d 0a 0d 0a 09 2e 4c 4f 43 09 33 30 30 30 30 ┆R UART ADDRESS. .LOC 30000┆ 0x0440…0460 09 3b 20 2a 2a 2a 20 52 41 4d 20 4c 41 59 4f 55 54 20 46 4f 52 20 52 43 38 30 30 2f 32 30 3a 0d ┆ ; *** RAM LAYOUT FOR RC800/20: ┆ 0x0460…0480 0a 0d 0a 42 31 58 49 4e 50 3a 09 2e 42 4c 4b 09 32 09 3b 20 49 4e 50 55 54 2d 4f 55 54 50 55 54 ┆ B1XINP: .BLK 2 ; INPUT-OUTPUT┆ 0x0480…04a0 20 50 4f 49 4e 54 45 52 53 0d 0a 42 31 58 4f 55 54 50 3a 2e 42 4c 4b 20 32 09 09 3b 20 54 45 52 ┆ POINTERS B1XOUTP:.BLK 2 ; TER┆ 0x04a0…04c0 4d 49 4e 41 4c 31 20 58 4d 54 2e 0d 0a 42 31 52 49 4e 50 3a 09 2e 42 4c 4b 09 32 09 3b 20 49 4e ┆MINAL1 XMT. B1RINP: .BLK 2 ; IN┆ 0x04c0…04e0 50 55 54 2d 4f 55 54 50 55 54 20 50 4f 49 4e 54 45 52 53 0d 0a 42 31 52 4f 55 54 50 3a 2e 42 4c ┆PUT-OUTPUT POINTERS B1ROUTP:.BL┆ 0x04e0…0500 4b 09 32 09 3b 20 54 45 52 4d 49 4e 41 4c 31 20 52 45 43 45 49 56 45 2e 0d 0a 42 32 58 49 4e 50 ┆K 2 ; TERMINAL1 RECEIVE. B2XINP┆ 0x0500…0520 3a 09 2e 42 4c 4b 09 32 09 3b 20 49 4e 50 55 54 2d 4f 55 54 50 55 54 20 50 4f 49 4e 54 45 52 53 ┆: .BLK 2 ; INPUT-OUTPUT POINTERS┆ 0x0520…0540 0d 0a 42 32 58 4f 55 54 50 3a 2e 42 4c 4b 09 32 09 3b 20 54 45 52 4d 49 4e 41 4c 32 20 58 4d 54 ┆ B2XOUTP:.BLK 2 ; TERMINAL2 XMT┆ 0x0540…0560 2e 0d 0a 42 32 52 49 4e 50 3a 09 2e 42 4c 4b 09 32 09 3b 20 49 4e 50 55 54 2d 4f 55 54 50 55 54 ┆. B2RINP: .BLK 2 ; INPUT-OUTPUT┆ 0x0560…0580 20 50 4f 49 4e 54 45 52 53 0d 0a 42 32 52 4f 55 54 50 3a 2e 42 4c 4b 09 32 09 3b 20 54 45 52 4d ┆ POINTERS B2ROUTP:.BLK 2 ; TERM┆ 0x0580…05a0 49 4e 41 4c 20 32 20 52 45 43 45 49 56 45 2e 0d 0a 42 33 58 49 4e 50 3a 09 2e 42 4c 4b 09 32 09 ┆INAL 2 RECEIVE. B3XINP: .BLK 2 ┆ 0x05a0…05c0 3b 20 49 4e 50 55 54 2d 4f 55 54 50 55 54 20 50 4f 49 4e 54 45 52 53 0d 0a 42 33 58 4f 55 54 50 ┆; INPUT-OUTPUT POINTERS B3XOUTP┆ 0x05c0…05e0 3a 2e 42 4c 4b 09 32 09 3b 20 54 45 52 4d 49 4e 41 4c 33 20 58 4d 54 2e 0d 0a 42 33 52 49 4e 50 ┆:.BLK 2 ; TERMINAL3 XMT. B3RINP┆ 0x05e0…0600 3a 09 2e 42 4c 4b 09 32 09 3b 20 49 4e 50 55 54 2d 4f 55 54 50 55 54 20 50 4f 49 4e 54 45 52 53 ┆: .BLK 2 ; INPUT-OUTPUT POINTERS┆ 0x0600…0620 (3,) 0d 0a 42 33 52 4f 55 54 50 3a 2e 42 4c 4b 09 32 09 3b 20 54 45 52 4d 49 4e 41 4c 33 20 52 45 43 ┆ B3ROUTP:.BLK 2 ; TERMINAL3 REC┆ 0x0620…0640 45 49 56 45 2e 0d 0a 42 34 58 49 4e 50 3a 09 2e 42 4c 4b 09 32 09 3b 20 49 4e 50 55 54 2d 4f 55 ┆EIVE. B4XINP: .BLK 2 ; INPUT-OU┆ 0x0640…0660 54 50 55 54 20 50 4f 49 4e 54 45 52 53 0d 0a 42 34 58 4f 55 54 50 3a 2e 42 4c 4b 09 32 09 3b 20 ┆TPUT POINTERS B4XOUTP:.BLK 2 ; ┆ 0x0660…0680 50 52 49 4e 54 45 52 20 46 49 46 4f 2e 0d 0a 42 34 52 49 4e 50 3a 09 2e 42 4c 4b 09 32 09 3b 20 ┆PRINTER FIFO. B4RINP: .BLK 2 ; ┆ 0x0680…06a0 50 52 49 4e 54 45 52 20 54 4f 20 48 4f 53 54 20 4d 45 53 53 41 47 45 0d 0a 42 34 52 4f 55 54 50 ┆PRINTER TO HOST MESSAGE B4ROUTP┆ 0x06a0…06c0 3a 2e 42 4c 4b 09 32 0d 0a 0d 0a 53 54 41 42 31 3a 09 30 09 09 3b 20 53 54 41 54 55 53 20 42 55 ┆:.BLK 2 STAB1: 0 ; STATUS BU┆ 0x06c0…06e0 46 46 45 52 53 3a 0d 0a 53 54 41 42 32 3a 09 30 09 09 3b 09 53 54 41 54 55 53 20 42 59 54 45 53 ┆FFERS: STAB2: 0 ; STATUS BYTES┆ 0x06e0…0700 20 41 43 43 4f 52 44 49 4e 47 20 54 4f 20 27 53 54 41 54 41 42 27 3b 0d 0a 53 54 41 42 33 3a 09 ┆ ACCORDING TO 'STATAB'; STAB3: ┆ 0x0700…0720 30 0d 0a 53 54 41 42 50 3a 09 30 0d 0a 53 54 41 42 48 3a 09 30 09 09 3b 40 40 20 55 4e 55 53 45 ┆0 STABP: 0 STABH: 0 ;@@ UNUSE┆ 0x0720…0740 44 3b 0d 0a 0d 0a 53 54 41 46 31 3a 09 30 09 09 3b 20 53 54 41 54 55 53 20 52 45 51 55 45 53 54 ┆D; STAF1: 0 ; STATUS REQUEST┆ 0x0740…0760 20 46 4c 41 47 53 3a 0d 0a 53 54 41 46 32 3a 09 30 09 09 3b 20 20 3c 3e 30 3a 09 53 54 41 54 55 ┆ FLAGS: STAF2: 0 ; <>0: STATU┆ 0x0760…0780 53 20 52 45 51 55 45 53 54 20 50 45 4e 44 49 4e 47 20 4e 4f 54 20 59 45 54 0d 0a 53 54 41 46 33 ┆S REQUEST PENDING NOT YET STAF3┆ 0x0780…07a0 3a 09 30 09 09 3b 09 54 52 41 4e 53 46 45 52 52 45 44 20 49 4e 54 4f 20 48 4f 53 54 20 3b 09 09 ┆: 0 ; TRANSFERRED INTO HOST ; ┆ 0x07a0…07c0 0d 0a 53 54 41 46 50 3a 09 30 0d 0a 53 54 41 46 48 3a 09 30 09 09 3b 40 40 20 55 4e 55 53 45 44 ┆ STAFP: 0 STAFH: 0 ;@@ UNUSED┆ 0x07c0…07c3 3b 0d 0a ┆; ┆ 0x07c3…07c6 FormFeed { 0x07c3…07c6 0c 83 9e ┆ ┆ 0x07c3…07c6 } 0x07c6…07e0 0d 0a 42 55 46 45 4d 3a 09 2e 42 4c 4b 09 31 36 0d 0a 4d 4f 44 45 31 3a 09 30 ┆ BUFEM: .BLK 16 MODE1: 0┆ 0x07e0…0800 09 09 3b 20 54 45 52 4d 49 4e 41 4c 20 4d 4f 44 45 53 3a 0d 0a 4d 4f 44 45 32 3a 09 30 09 09 3b ┆ ; TERMINAL MODES: MODE2: 0 ;┆ 0x0800…0820 (4,) 09 43 4f 4e 54 52 4f 4c 20 3d 20 30 2c 20 53 4b 49 50 20 3d 20 31 20 41 4e 44 20 44 41 54 41 20 ┆ CONTROL = 0, SKIP = 1 AND DATA ┆ 0x0820…0840 3d 20 33 3b 0d 0a 4d 4f 44 45 33 3a 09 30 0d 0a 0d 0a 0d 0a 4d 4f 44 45 58 3a 09 30 09 09 3b 20 ┆= 3; MODE3: 0 MODEX: 0 ; ┆ 0x0840…0860 48 4f 53 54 20 58 4d 54 20 53 54 41 54 45 2e 0d 0a 4d 4f 44 45 52 3a 09 30 09 09 3b 40 40 20 55 ┆HOST XMT STATE. MODER: 0 ;@@ U┆ 0x0860…0880 4e 55 53 45 44 20 48 4f 53 54 20 52 45 43 20 53 54 41 54 45 2e 0d 0a 3b 54 45 4d 31 3a 09 30 09 ┆NUSED HOST REC STATE. ;TEM1: 0 ┆ 0x0880…08a0 09 3b 20 54 45 4d 50 4f 52 41 52 59 20 53 41 56 45 2e 0d 0a 3b 54 45 4d 32 3a 09 30 0d 0a 44 45 ┆ ; TEMPORARY SAVE. ;TEM2: 0 DE┆ 0x08a0…08c0 56 4e 4f 3a 09 30 0d 0a 54 45 4d 50 53 3a 09 30 09 09 3b 20 54 45 4d 50 20 53 41 56 45 20 54 45 ┆VNO: 0 TEMPS: 0 ; TEMP SAVE TE┆ 0x08c0…08e0 52 4d 20 55 41 52 54 20 53 54 41 54 55 53 20 52 45 41 44 0d 0a 54 45 4d 50 44 3a 09 30 09 09 3b ┆RM UART STATUS READ TEMPD: 0 ;┆ 0x08e0…0900 20 54 45 4d 50 20 53 41 56 45 20 54 45 52 4d 20 55 41 52 54 20 42 59 54 45 20 52 45 41 44 0d 0a ┆ TEMP SAVE TERM UART BYTE READ ┆ 0x0900…0920 3b 4c 41 53 54 41 54 3a 09 30 0d 0a 43 55 52 53 54 41 54 3a 30 0d 0a 4c 58 4d 54 3a 09 30 0d 0a ┆;LASTAT: 0 CURSTAT:0 LXMT: 0 ┆ 0x0920…0940 48 4f 53 54 53 3a 09 30 0d 0a 4c 52 45 43 3a 09 30 0d 0a 0d 0a 50 53 55 4d 3a 09 30 09 09 3b 20 ┆HOSTS: 0 LREC: 0 PSUM: 0 ; ┆ 0x0940…0960 50 52 49 4e 54 45 52 20 43 48 45 43 4b 53 55 4d 0d 0a 09 09 09 3b 20 41 43 43 55 4d 55 4c 41 54 ┆PRINTER CHECKSUM ; ACCUMULAT┆ 0x0960…0980 4f 52 2e 0d 0a 47 52 44 59 3a 09 30 09 09 3b 20 3d 30 20 45 4e 41 42 4c 45 20 41 55 54 4f 4d 41 ┆OR. GRDY: 0 ; =0 ENABLE AUTOMA┆ 0x0980…09a0 54 49 43 0d 0a 09 09 09 3b 20 58 4d 49 54 20 4f 46 20 50 52 49 4e 54 20 42 55 46 20 42 55 53 59 ┆TIC ; XMIT OF PRINT BUF BUSY┆ 0x09a0…09c0 2e 0d 0a 09 0d 0a 42 31 58 53 54 41 52 54 3a 09 2e 42 4c 4b 09 31 30 30 0d 0a 42 31 52 53 54 41 ┆. B1XSTART: .BLK 100 B1RSTA┆ 0x09c0…09e0 52 54 3a 09 2e 42 4c 4b 09 34 30 0d 0a 42 32 58 53 54 41 52 54 3a 09 2e 42 4c 4b 09 31 30 30 0d ┆RT: .BLK 40 B2XSTART: .BLK 100 ┆ 0x09e0…0a00 0a 42 32 52 53 54 41 52 54 3a 09 2e 42 4c 4b 09 34 30 0d 0a 42 33 58 53 54 41 52 54 3a 09 2e 42 ┆ B2RSTART: .BLK 40 B3XSTART: .B┆ 0x0a00…0a20 (5,) 4c 4b 09 31 30 30 0d 0a 42 33 52 53 54 41 52 54 3a 09 2e 42 4c 4b 09 34 30 0d 0a 42 34 58 53 54 ┆LK 100 B3RSTART: .BLK 40 B4XST┆ 0x0a20…0a40 41 52 54 3a 09 2e 42 4c 4b 09 32 30 30 0d 0a 42 34 52 53 54 41 52 54 3a 09 2e 42 4c 4b 09 34 30 ┆ART: .BLK 200 B4RSTART: .BLK 40┆ 0x0a40…0a60 0d 0a 42 35 58 53 54 41 52 54 3a 09 2e 42 4c 4b 09 34 30 09 3b 20 50 53 45 55 44 4f 2d 42 55 46 ┆ B5XSTART: .BLK 40 ; PSEUDO-BUF┆ 0x0a60…0a66 46 45 52 3b 0d 0a ┆FER; ┆ 0x0a66…0a69 FormFeed { 0x0a66…0a69 0c 82 a9 ┆ ┆ 0x0a66…0a69 } 0x0a69…0a80 4c 4f 43 09 34 30 30 30 0d 0a 0d 0a 3b 20 54 41 42 4c 45 20 46 4f 52 ┆LOC 4000 ; TABLE FOR┆ 0x0a80…0aa0 20 4d 4f 44 45 20 41 4e 44 20 43 4f 4d 4d 41 4e 44 53 20 54 4f 20 43 4f 4d 4d 55 4e 49 43 41 54 ┆ MODE AND COMMANDS TO COMMUNICAT┆ 0x0aa0…0ac0 49 4f 4e 20 55 41 52 54 53 2e 20 0d 0a 09 09 09 3b 20 2a 2a 2a 2a 09 44 45 56 49 43 45 20 50 41 ┆ION UARTS. ; **** DEVICE PA┆ 0x0ac0…0ae0 52 41 4d 20 54 41 42 4c 45 3a 0d 0a 0d 0a 4d 54 41 42 3a 09 31 37 32 09 09 3b 20 4d 4f 44 45 31 ┆RAM TABLE: MTAB: 172 ; MODE1┆ 0x0ae0…0b00 20 48 4f 53 54 2e 0d 0a 09 36 30 09 09 3b 20 4d 4f 44 45 32 20 48 4f 53 54 2e 0d 0a 09 34 37 09 ┆ HOST. 60 ; MODE2 HOST. 47 ┆ 0x0b00…0b20 09 3b 20 43 4f 4d 4d 41 4e 44 20 48 4f 53 54 2e 0d 0a 09 31 37 32 09 09 3b 20 4d 4f 44 45 31 20 ┆ ; COMMAND HOST. 172 ; MODE1 ┆ 0x0b20…0b40 54 45 52 4d 49 4e 41 4c 31 0d 0a 09 36 30 09 09 3b 20 4d 4f 44 45 32 20 54 45 52 4d 49 4e 41 4c ┆TERMINAL1 60 ; MODE2 TERMINAL┆ 0x0b40…0b60 31 0d 0a 09 34 37 09 09 3b 20 43 4f 4d 4d 41 4e 44 20 54 45 52 4d 49 4e 41 4c 31 2e 0d 0a 09 31 ┆1 47 ; COMMAND TERMINAL1. 1┆ 0x0b60…0b80 37 32 09 09 3b 20 4d 4f 44 45 31 20 54 45 52 4d 49 4e 41 4c 32 2e 0d 0a 09 36 30 09 09 3b 20 4d ┆72 ; MODE1 TERMINAL2. 60 ; M┆ 0x0b80…0ba0 4f 44 45 32 20 54 45 52 4d 49 4e 41 4c 32 2e 0d 0a 09 34 37 09 09 3b 20 43 4f 4d 4d 41 4e 44 20 ┆ODE2 TERMINAL2. 47 ; COMMAND ┆ 0x0ba0…0bc0 54 45 52 4d 49 4e 41 4c 32 2e 0d 0a 09 31 37 32 09 09 3b 20 4d 4f 44 45 31 20 54 45 52 4d 49 4e ┆TERMINAL2. 172 ; MODE1 TERMIN┆ 0x0bc0…0be0 41 4c 33 0d 0a 09 36 30 09 09 3b 20 4d 4f 44 45 32 20 54 45 52 4d 49 4e 41 4c 33 2e 0d 0a 09 34 ┆AL3 60 ; MODE2 TERMINAL3. 4┆ 0x0be0…0c00 37 09 09 3b 20 43 4f 4d 4d 41 4e 44 20 54 45 52 4d 49 4e 41 4c 33 2e 0d 0a 09 31 37 32 09 09 3b ┆7 ; COMMAND TERMINAL3. 172 ;┆ 0x0c00…0c20 (6,) 20 4d 4f 44 45 31 20 50 52 49 4e 54 2e 0d 0a 09 36 30 09 09 3b 20 4d 4f 44 45 32 20 50 52 49 4e ┆ MODE1 PRINT. 60 ; MODE2 PRIN┆ 0x0c20…0c40 54 2e 0d 0a 09 34 33 09 09 3b 20 43 4f 4d 4d 41 4e 44 20 50 52 49 4e 54 2e 0d 0a 0d 0a 09 09 09 ┆T. 43 ; COMMAND PRINT. ┆ 0x0c40…0c60 3b 20 2a 2a 2a 2a 09 4e 42 3a 20 43 4f 4d 4d 41 4e 44 20 53 48 4f 55 4c 44 20 49 4e 43 4c 55 44 ┆; **** NB: COMMAND SHOULD INCLUD┆ 0x0c60…0c80 45 20 54 48 45 20 45 52 52 4f 52 0d 0a 09 09 09 3b 09 09 52 45 53 45 54 20 42 49 54 20 53 45 54 ┆E THE ERROR ; RESET BIT SET┆ 0x0c80…0ca0 20 28 42 34 29 2c 41 53 20 54 48 49 53 20 42 49 54 0d 0a 09 09 09 3b 09 09 49 53 20 41 55 54 4f ┆ (B4),AS THIS BIT ; IS AUTO┆ 0x0ca0…0cc0 4d 41 54 49 43 41 4c 4c 59 20 52 45 53 45 54 20 42 59 20 55 41 52 54 20 41 46 54 45 52 0d 0a 09 ┆MATICALLY RESET BY UART AFTER ┆ 0x0cc0…0ce0 09 09 3b 09 09 52 45 53 45 54 20 4f 46 20 45 52 52 4f 52 20 46 4c 41 47 53 20 49 53 20 50 45 52 ┆ ; RESET OF ERROR FLAGS IS PER┆ 0x0ce0…0d00 46 4f 52 4d 45 44 3b 0d 0a 0d 0a 3b 20 2a 2a 2a 2a 09 44 45 43 4f 4d 50 4f 53 49 54 49 4f 4e 20 ┆FORMED; ; **** DECOMPOSITION ┆ 0x0d00…0d20 4f 46 20 4d 4f 44 45 31 2c 32 20 41 4e 44 20 43 4f 4d 4d 41 4e 44 3a 0d 0a 0d 0a 3b 09 4d 4f 44 ┆OF MODE1,2 AND COMMAND: ; MOD┆ 0x0d20…0d40 45 31 20 28 31 37 32 29 3a 09 31 20 53 54 4f 50 20 42 49 54 2c 45 56 45 4e 20 50 41 52 49 54 59 ┆E1 (172): 1 STOP BIT,EVEN PARITY┆ 0x0d40…0d60 2c 50 41 52 49 54 59 20 45 4e 41 42 4c 45 2c 37 20 42 49 54 53 2c 0d 0a 3b 09 09 09 41 53 59 4e ┆,PARITY ENABLE,7 BITS, ; ASYN┆ 0x0d60…0d80 43 52 2c 52 41 54 45 2a 31 36 3b 0d 0a 3b 09 56 41 52 3a 09 31 20 53 54 4f 50 20 42 49 54 20 4d ┆CR,RATE*16; ; VAR: 1 STOP BIT M┆ 0x0d80…0da0 41 59 20 42 45 20 43 48 41 4e 47 45 44 20 54 4f 20 32 20 53 54 4f 50 20 42 49 54 53 20 42 59 20 ┆AY BE CHANGED TO 2 STOP BITS BY ┆ 0x0da0…0dc0 53 57 49 54 43 48 20 53 45 4c 45 43 54 3b 0d 0a 3b 09 4d 4f 44 45 32 20 28 36 30 29 3a 09 45 58 ┆SWITCH SELECT; ; MODE2 (60): EX┆ 0x0dc0…0de0 54 20 58 4d 49 54 2f 52 45 43 20 43 4c 4f 43 4b 20 2b 20 42 41 55 44 52 41 54 45 20 55 4e 44 45 ┆T XMIT/REC CLOCK + BAUDRATE UNDE┆ 0x0de0…0e00 46 28 35 30 29 3b 0d 0a 3b 09 56 41 52 3a 09 42 41 55 44 20 52 41 54 45 20 49 53 20 4f 57 45 52 ┆F(50); ; VAR: BAUD RATE IS OWER┆ 0x0e00…0e20 (7,) 57 52 49 54 54 45 4e 20 42 59 20 53 57 49 54 43 48 20 53 45 4c 45 43 54 3b 0d 0a 3b 09 43 4f 4d ┆WRITTEN BY SWITCH SELECT; ; COM┆ 0x0e20…0e40 4d 41 4e 44 20 28 34 37 29 3a 09 46 4f 52 43 45 20 52 54 53 20 48 49 47 48 2c 20 4e 4f 20 45 52 ┆MAND (47): FORCE RTS HIGH, NO ER┆ 0x0e40…0e60 52 4f 52 20 52 45 53 45 54 2c 20 4e 4f 20 46 4f 52 43 45 20 42 52 45 41 4b 2c 0d 0a 3b 09 09 09 ┆ROR RESET, NO FORCE BREAK, ; ┆ 0x0e60…0e80 52 45 43 20 45 4e 41 42 4c 45 2c 20 44 54 52 20 48 49 47 48 2c 58 4d 49 54 20 45 4e 41 42 4c 45 ┆REC ENABLE, DTR HIGH,XMIT ENABLE┆ 0x0e80…0ea0 3b 0d 0a 3b 09 56 41 52 3a 09 49 46 20 45 52 52 4f 52 20 49 53 20 44 45 54 45 43 54 45 44 20 4f ┆; ; VAR: IF ERROR IS DETECTED O┆ 0x0ea0…0ec0 4e 20 54 45 52 4d 20 4c 49 4e 45 20 54 48 45 4e 20 45 52 4f 52 20 52 45 53 45 54 20 41 4e 44 20 ┆N TERM LINE THEN EROR RESET AND ┆ 0x0ec0…0ee0 52 45 43 2c 0d 0a 3b 09 09 58 4d 49 54 20 44 49 53 41 42 4c 45 20 49 53 20 50 45 52 46 4f 52 4d ┆REC, ; XMIT DISABLE IS PERFORM┆ 0x0ee0…0f00 45 44 2e 48 45 52 45 41 46 54 45 52 20 4e 4f 52 4d 41 4c 20 49 4e 49 54 3b 28 4e 45 57 29 0d 0a ┆ED.HEREAFTER NORMAL INIT;(NEW) ┆ 0x0f00…0f20 3b 09 09 41 46 54 45 52 20 45 52 52 4f 52 20 4f 4e 20 48 4f 53 54 20 4c 49 4e 45 20 54 48 45 20 ┆; AFTER ERROR ON HOST LINE THE ┆ 0x0f20…0f40 54 45 52 4d 20 4c 49 4e 45 53 20 41 52 45 20 47 49 56 45 4e 20 45 52 52 4f 52 20 0d 0a 3b 09 09 ┆TERM LINES ARE GIVEN ERROR ; ┆ 0x0f40…0f60 52 45 53 45 54 2e 20 57 48 49 4c 45 20 48 4f 53 54 20 45 52 52 4f 52 20 44 54 52 20 4f 46 20 54 ┆RESET. WHILE HOST ERROR DTR OF T┆ 0x0f60…0f80 45 52 4d 20 4c 49 4e 45 53 20 49 53 20 46 4f 52 43 45 44 20 4c 4f 57 3b 0d 0a 0d 0a 0d 0a 0d 0a ┆ERM LINES IS FORCED LOW; ┆ 0x0f80…0fa0 0d 0a 3b 20 4a 55 4d 50 20 54 41 42 4c 45 20 54 4f 20 49 4e 49 54 49 41 4c 49 5a 41 54 49 4f 4e ┆ ; JUMP TABLE TO INITIALIZATION┆ 0x0fa0…0fc0 20 41 4e 44 20 49 4e 54 45 52 52 55 50 54 20 52 4f 55 54 49 4e 45 53 2e 0d 0a 0d 0a 58 49 4e 49 ┆ AND INTERRUPT ROUTINES. XINI┆ 0x0fc0…0fe0 54 3a 09 4a 4d 50 09 53 54 49 4e 49 54 0d 0a 58 49 52 45 43 3a 09 4a 4d 50 09 49 52 45 43 0d 0a ┆T: JMP STINIT XIREC: JMP IREC ┆ 0x0fe0…0ff1 58 49 4d 49 54 3a 09 4a 4d 50 09 49 58 4d 54 0d 0a ┆XIMIT: JMP IXMT ┆ 0x0ff1…0ff4 FormFeed { 0x0ff1…0ff4 0c 83 a7 ┆ ┆ 0x0ff1…0ff4 } 0x0ff4…1000 0d 0a 3b 20 54 41 42 4c 45 20 43 4f ┆ ; TABLE CO┆ 0x1000…1020 (8,) 4e 54 41 49 4e 49 4e 47 20 53 54 41 52 54 20 41 44 44 52 45 53 53 45 53 20 46 4f 52 0d 0a 3b 20 ┆NTAINING START ADDRESSES FOR ; ┆ 0x1020…1040 42 55 46 46 45 52 53 2e 0d 0a 0d 0a 42 55 46 53 54 41 42 3a 09 42 31 58 53 54 41 52 54 26 28 33 ┆BUFFERS. BUFSTAB: B1XSTART&(3┆ 0x1040…1060 37 37 29 0d 0a 09 09 42 31 58 53 54 41 52 54 26 28 31 37 37 34 30 30 29 2f 34 30 30 0d 0a 09 09 ┆77) B1XSTART&(177400)/400 ┆ 0x1060…1080 42 31 52 53 54 41 52 54 26 28 33 37 37 29 0d 0a 09 09 42 31 52 53 54 41 52 54 26 28 31 37 37 34 ┆B1RSTART&(377) B1RSTART&(1774┆ 0x1080…10a0 30 30 29 2f 34 30 30 0d 0a 09 09 42 32 58 53 54 41 52 54 26 28 33 37 37 29 0d 0a 09 09 42 32 58 ┆00)/400 B2XSTART&(377) B2X┆ 0x10a0…10c0 53 54 41 52 54 26 28 31 37 37 34 30 30 29 2f 34 30 30 0d 0a 09 09 42 32 52 53 54 41 52 54 26 28 ┆START&(177400)/400 B2RSTART&(┆ 0x10c0…10e0 33 37 37 29 0d 0a 09 09 42 32 52 53 54 41 52 54 26 28 31 37 37 34 30 30 29 2f 34 30 30 0d 0a 09 ┆377) B2RSTART&(177400)/400 ┆ 0x10e0…1100 09 42 33 58 53 54 41 52 54 26 28 33 37 37 29 0d 0a 09 09 42 33 58 53 54 41 52 54 26 28 31 37 37 ┆ B3XSTART&(377) B3XSTART&(177┆ 0x1100…1120 34 30 30 29 2f 34 30 30 0d 0a 09 09 42 33 52 53 54 41 52 54 26 28 33 37 37 29 0d 0a 09 09 42 33 ┆400)/400 B3RSTART&(377) B3┆ 0x1120…1140 52 53 54 41 52 54 26 28 31 37 37 34 30 30 29 2f 34 30 30 0d 0a 09 09 42 34 58 53 54 41 52 54 26 ┆RSTART&(177400)/400 B4XSTART&┆ 0x1140…1160 28 33 37 37 29 0d 0a 09 09 42 34 58 53 54 41 52 54 26 28 31 37 37 34 30 30 29 2f 34 30 30 0d 0a ┆(377) B4XSTART&(177400)/400 ┆ 0x1160…1180 09 09 42 34 52 53 54 41 52 54 26 28 33 37 37 29 0d 0a 09 09 42 34 52 53 54 41 52 54 26 28 31 37 ┆ B4RSTART&(377) B4RSTART&(17┆ 0x1180…11a0 37 34 30 30 29 2f 34 30 30 0d 0a 0d 0a 3b 20 54 41 42 4c 45 20 43 4f 4e 54 41 49 4e 49 4e 47 20 ┆7400)/400 ; TABLE CONTAINING ┆ 0x11a0…11c0 54 4f 50 20 41 44 44 52 45 53 53 45 53 20 46 4f 52 0d 0a 3b 20 42 55 46 46 45 52 53 2e 0d 0a 0d ┆TOP ADDRESSES FOR ; BUFFERS. ┆ 0x11c0…11e0 0a 42 55 46 54 54 41 42 3a 09 28 42 31 52 53 54 41 52 54 2d 31 29 26 28 33 37 37 29 0d 0a 09 09 ┆ BUFTTAB: (B1RSTART-1)&(377) ┆ 0x11e0…1200 28 42 31 52 53 54 41 52 54 2d 31 29 26 28 31 37 37 34 30 30 29 2f 34 30 30 0d 0a 09 09 28 42 32 ┆(B1RSTART-1)&(177400)/400 (B2┆ 0x1200…1220 (9,) 58 53 54 41 52 54 2d 31 29 26 28 33 37 37 29 0d 0a 09 09 28 42 32 58 53 54 41 52 54 2d 31 29 26 ┆XSTART-1)&(377) (B2XSTART-1)&┆ 0x1220…1240 28 31 37 37 34 30 30 29 2f 34 30 30 0d 0a 09 09 28 42 32 52 53 54 41 52 54 2d 31 29 26 28 33 37 ┆(177400)/400 (B2RSTART-1)&(37┆ 0x1240…1260 37 29 0d 0a 09 09 28 42 32 52 53 54 41 52 54 2d 31 29 26 28 31 37 37 34 30 30 29 2f 34 30 30 0d ┆7) (B2RSTART-1)&(177400)/400 ┆ 0x1260…1280 0a 09 09 28 42 33 58 53 54 41 52 54 2d 31 29 26 28 33 37 37 29 0d 0a 09 09 28 42 33 58 53 54 41 ┆ (B3XSTART-1)&(377) (B3XSTA┆ 0x1280…12a0 52 54 2d 31 29 26 28 31 37 37 34 30 30 29 2f 34 30 30 0d 0a 09 09 28 42 33 52 53 54 41 52 54 2d ┆RT-1)&(177400)/400 (B3RSTART-┆ 0x12a0…12c0 31 29 26 28 33 37 37 29 0d 0a 09 09 28 42 33 52 53 54 41 52 54 2d 31 29 26 28 31 37 37 34 30 30 ┆1)&(377) (B3RSTART-1)&(177400┆ 0x12c0…12e0 29 2f 34 30 30 0d 0a 09 09 28 42 34 58 53 54 41 52 54 2d 31 29 26 28 33 37 37 29 0d 0a 09 09 28 ┆)/400 (B4XSTART-1)&(377) (┆ 0x12e0…1300 42 34 58 53 54 41 52 54 2d 31 29 26 28 31 37 37 34 30 30 29 2f 34 30 30 0d 0a 09 09 28 42 34 52 ┆B4XSTART-1)&(177400)/400 (B4R┆ 0x1300…1320 53 54 41 52 54 2d 31 29 26 28 33 37 37 29 0d 0a 09 09 28 42 34 52 53 54 41 52 54 2d 31 29 26 28 ┆START-1)&(377) (B4RSTART-1)&(┆ 0x1320…1340 31 37 37 34 30 30 29 2f 34 30 30 0d 0a 09 09 28 42 35 58 53 54 41 52 54 2d 31 29 26 28 33 37 37 ┆177400)/400 (B5XSTART-1)&(377┆ 0x1340…1360 29 0d 0a 09 09 28 42 35 58 53 54 41 52 54 2d 31 29 26 28 31 37 37 34 30 30 29 2f 34 30 30 0d 0a ┆) (B5XSTART-1)&(177400)/400 ┆ 0x1360…1363 FormFeed { 0x1360…1363 0c 82 df ┆ ┆ 0x1360…1363 } 0x1363…1380 0d 0a 0d 0a 3b 20 43 4f 4e 56 45 52 53 49 4f 4e 20 54 41 42 4c 45 20 46 4f 52 20 43 48 ┆ ; CONVERSION TABLE FOR CH┆ 0x1380…13a0 41 52 41 43 54 45 52 53 20 3c 33 32 2e 0d 0a 3b 20 41 44 44 52 45 53 53 45 53 20 43 4f 4e 54 41 ┆ARACTERS <32. ; ADDRESSES CONTA┆ 0x13a0…13c0 49 4e 49 4e 47 20 33 37 37 3c 4f 43 54 41 4c 3e 20 49 53 20 4e 4f 54 0d 0a 3b 20 55 53 45 44 20 ┆INING 377<OCTAL> IS NOT ; USED ┆ 0x13c0…13e0 41 53 20 54 45 52 4d 49 4e 41 4c 20 41 44 44 52 45 53 53 20 4f 52 20 41 53 20 53 54 41 54 55 53 ┆AS TERMINAL ADDRESS OR AS STATUS┆ 0x13e0…1400 20 4d 45 53 53 41 47 45 2e 0d 0a 0d 0a 4b 45 59 54 41 42 3a 09 09 33 37 37 09 09 3b 20 30 22 22 ┆ MESSAGE. KEYTAB: 377 ; 0""┆ 0x1400…1420 (10,) 0d 0a 09 09 33 09 09 3b 20 31 22 0d 0a 09 09 30 09 09 3b 20 32 22 0d 0a 09 09 31 09 09 3b 20 33 ┆ 3 ; 1" 0 ; 2" 1 ; 3┆ 0x1420…1440 22 0d 0a 09 09 32 09 09 3b 20 34 22 0d 0a 09 09 33 37 37 09 09 3b 20 35 22 0d 0a 09 09 33 37 37 ┆" 2 ; 4" 377 ; 5" 377┆ 0x1440…1460 09 09 3b 20 36 22 0d 0a 09 09 33 37 37 09 09 3b 20 37 22 0d 0a 09 09 33 37 37 09 09 3b 20 38 22 ┆ ; 6" 377 ; 7" 377 ; 8"┆ 0x1460…1480 0d 0a 09 09 33 37 37 09 09 3b 20 39 22 0d 0a 09 09 33 37 37 09 09 3b 20 31 30 22 0d 0a 09 09 33 ┆ 377 ; 9" 377 ; 10" 3┆ 0x1480…14a0 37 37 09 09 3b 20 31 31 22 0d 0a 09 09 33 37 37 09 09 3b 20 31 32 22 0d 0a 09 09 33 37 37 09 09 ┆77 ; 11" 377 ; 12" 377 ┆ 0x14a0…14c0 3b 20 31 33 22 0d 0a 09 09 33 37 37 09 09 3b 20 31 34 22 0d 0a 09 09 33 37 37 09 09 3b 20 31 35 ┆; 13" 377 ; 14" 377 ; 15┆ 0x14c0…14e0 22 0d 0a 09 09 36 09 09 3b 20 31 36 22 0d 0a 09 09 33 37 37 09 09 3b 20 31 37 22 0d 0a 09 09 33 ┆" 6 ; 16" 377 ; 17" 3┆ 0x14e0…1500 37 37 09 09 3b 20 31 38 22 0d 0a 09 09 33 37 37 09 09 3b 20 31 39 22 0d 0a 09 09 33 37 37 09 09 ┆77 ; 18" 377 ; 19" 377 ┆ 0x1500…1520 3b 20 32 30 22 0d 0a 09 09 37 09 09 3b 20 32 31 22 0d 0a 09 09 33 37 37 09 09 3b 20 32 32 22 0d ┆; 20" 7 ; 21" 377 ; 22" ┆ 0x1520…1540 0a 09 09 37 09 09 3b 20 32 33 22 0d 0a 09 09 33 37 37 09 09 3b 20 32 34 22 0d 0a 09 09 33 37 37 ┆ 7 ; 23" 377 ; 24" 377┆ 0x1540…1560 09 09 3b 20 32 35 22 0d 0a 09 09 33 37 37 09 09 3b 20 32 36 22 0d 0a 09 09 33 37 37 09 09 3b 20 ┆ ; 25" 377 ; 26" 377 ; ┆ 0x1560…1580 32 37 22 0d 0a 09 09 33 37 37 09 09 3b 20 32 38 22 0d 0a 09 09 33 37 37 09 09 3b 20 32 39 22 0d ┆27" 377 ; 28" 377 ; 29" ┆ 0x1580…159f 0a 09 09 33 37 37 09 09 3b 20 33 30 22 0d 0a 09 09 33 37 37 09 09 3b 20 33 31 22 0d 0a 0d 0a ┆ 377 ; 30" 377 ; 31" ┆ 0x159f…15a2 FormFeed { 0x159f…15a2 0c 82 d6 ┆ ┆ 0x159f…15a2 } 0x15a2…15c0 0d 0a 3b 20 54 41 42 4c 45 20 54 4f 20 43 4f 4e 56 45 52 54 20 54 48 45 20 49 4e 54 45 52 ┆ ; TABLE TO CONVERT THE INTER┆ 0x15c0…15e0 4e 41 4c 20 53 59 4d 42 4f 4c 49 43 20 0d 0a 3b 20 41 44 44 52 45 53 53 20 28 52 41 4e 47 45 20 ┆NAL SYMBOLIC ; ADDRESS (RANGE ┆ 0x15e0…1600 30 2d 37 29 20 49 4e 54 4f 20 41 20 43 48 41 52 41 43 54 45 52 20 3c 33 32 2e 0d 0a 0d 0a 41 44 ┆0-7) INTO A CHARACTER <32. AD┆ 0x1600…1620 (11,) 44 54 41 42 3a 09 09 32 09 09 3b 20 30 22 20 54 45 52 4d 49 4e 41 4c 31 2e 0d 0a 09 09 33 09 09 ┆DTAB: 2 ; 0" TERMINAL1. 3 ┆ 0x1620…1640 3b 20 31 22 20 54 45 52 4d 49 4e 41 4c 32 2e 0d 0a 09 09 34 09 09 3b 20 32 22 20 54 45 52 4d 49 ┆; 1" TERMINAL2. 4 ; 2" TERMI┆ 0x1640…1660 4e 41 4c 33 2e 0d 0a 09 09 31 09 09 3b 20 33 22 20 50 52 49 4e 54 45 52 2e 0d 0a 09 09 30 09 09 ┆NAL3. 1 ; 3" PRINTER. 0 ┆ 0x1660…1680 3b 20 34 22 20 48 4f 53 54 2e 0d 0a 09 09 30 09 09 3b 20 35 22 20 4e 4f 54 20 55 53 45 44 2e 0d ┆; 4" HOST. 0 ; 5" NOT USED. ┆ 0x1680…16a0 0a 09 09 30 09 09 3b 20 36 22 20 4e 4f 54 20 55 53 45 44 2e 0d 0a 09 09 30 09 09 3b 20 37 22 20 ┆ 0 ; 6" NOT USED. 0 ; 7" ┆ 0x16a0…16c0 4e 4f 54 20 55 53 45 44 2e 0d 0a 0d 0a 0d 0a 3b 20 54 41 42 4c 45 20 54 4f 20 43 4f 4e 56 45 52 ┆NOT USED. ; TABLE TO CONVER┆ 0x16c0…16e0 54 20 54 48 45 20 49 4e 54 45 52 4e 41 4c 20 53 54 41 54 55 53 0d 0a 3b 20 49 4e 54 4f 20 41 20 ┆T THE INTERNAL STATUS ; INTO A ┆ 0x16e0…1700 43 48 41 52 41 43 54 45 52 20 3c 33 32 2e 0d 0a 0d 0a 53 54 41 54 41 42 3a 09 30 09 09 09 3b 20 ┆CHARACTER <32. STATAB: 0 ; ┆ 0x1700…1720 30 22 0d 0a 09 32 37 09 09 09 3b 20 31 22 2c 56 32 34 20 45 52 52 4f 52 2e 0d 0a 09 32 35 09 09 ┆0" 27 ; 1",V24 ERROR. 25 ┆ 0x1720…1740 09 3b 20 32 22 2c 42 55 53 59 2e 0d 0a 09 32 35 09 09 09 3b 20 33 22 20 40 40 20 53 48 4f 55 4c ┆ ; 2",BUSY. 25 ; 3" @@ SHOUL┆ 0x1740…1760 44 20 42 45 20 56 32 34 20 45 52 52 4f 52 3b 0d 0a 09 32 30 09 09 09 3b 20 34 22 2c 52 45 41 44 ┆D BE V24 ERROR; 20 ; 4",READ┆ 0x1760…1780 59 2e 0d 0a 09 32 37 09 09 09 3b 20 35 22 2c 56 32 34 20 45 52 52 4f 52 2e 0d 0a 09 32 35 09 09 ┆Y. 27 ; 5",V24 ERROR. 25 ┆ 0x1780…17a0 09 3b 20 36 22 2c 42 55 53 59 2e 0d 0a 09 32 35 09 09 09 3b 20 37 22 2c 42 55 53 59 2e 0d 0a 0d ┆ ; 6",BUSY. 25 ; 7",BUSY. ┆ 0x17a0…17a1 0a ┆ ┆ 0x17a1…17a4 FormFeed { 0x17a1…17a4 0c 81 e1 ┆ ┆ 0x17a1…17a4 } 0x17a4…17c0 3b 20 52 4f 55 54 49 4e 45 20 54 4f 20 50 45 52 46 4f 52 4d 20 41 20 4e 55 4d 42 45 ┆; ROUTINE TO PERFORM A NUMBE┆ 0x17c0…17e0 52 20 4f 46 20 4c 4f 47 49 43 41 4c 0d 0a 3b 20 53 48 49 46 54 20 4c 45 46 54 20 4f 46 20 41 22 ┆R OF LOGICAL ; SHIFT LEFT OF A"┆ 0x17e0…1800 2e 0d 0a 3b 20 44 3d 20 4e 55 4d 42 45 52 20 4f 46 20 53 48 49 46 54 53 20 3c 52 41 4e 47 45 20 ┆. ; D= NUMBER OF SHIFTS <RANGE ┆ 0x1800…1820 (12,) 30 2d 37 3e 2e 0d 0a 0d 0a 4c 4f 53 48 3a 09 4d 4f 56 09 45 2c 41 09 3b 20 53 41 56 45 20 41 2e ┆0-7>. LOSH: MOV E,A ; SAVE A.┆ 0x1820…1840 0d 0a 09 4d 4f 56 09 41 2c 44 0d 0a 09 43 50 49 09 30 0d 0a 09 4d 4f 56 09 41 2c 45 09 3b 20 52 ┆ MOV A,D CPI 0 MOV A,E ; R┆ 0x1840…1860 45 53 54 4f 52 45 20 41 2e 0d 0a 09 52 5a 09 09 3b 20 52 45 54 55 52 4e 20 49 46 20 44 3d 30 2e ┆ESTORE A. RZ ; RETURN IF D=0.┆ 0x1860…1880 0d 0a 09 52 4c 43 0d 0a 09 44 43 52 09 44 0d 0a 09 4a 4d 50 09 4c 4f 53 48 0d 0a 0d 0a 3b 20 52 ┆ RLC DCR D JMP LOSH ; R┆ 0x1880…18a0 4f 55 54 49 4e 45 20 54 4f 20 50 45 52 46 4f 52 4d 20 41 20 4e 55 4d 42 45 52 20 4f 46 20 4c 4f ┆OUTINE TO PERFORM A NUMBER OF LO┆ 0x18a0…18c0 47 49 43 41 4c 0d 0a 3b 20 53 48 49 46 54 20 52 49 47 48 54 20 4f 46 20 41 22 2e 0d 0a 3b 20 44 ┆GICAL ; SHIFT RIGHT OF A". ; D┆ 0x18c0…18e0 3d 20 4e 55 4d 42 45 52 20 4f 46 20 53 48 49 46 54 53 20 3c 52 41 4e 47 45 20 30 2d 37 3e 2e 0d ┆= NUMBER OF SHIFTS <RANGE 0-7>. ┆ 0x18e0…1900 0a 52 4f 53 48 3a 09 4d 4f 56 09 45 2c 41 09 3b 20 53 41 56 45 20 41 2e 0d 0a 09 4d 4f 56 09 41 ┆ ROSH: MOV E,A ; SAVE A. MOV A┆ 0x1900…1920 2c 44 0d 0a 09 43 50 49 09 30 0d 0a 09 4d 4f 56 09 41 2c 45 09 3b 20 52 45 53 54 4f 52 45 20 41 ┆,D CPI 0 MOV A,E ; RESTORE A┆ 0x1920…1940 2e 0d 0a 09 52 5a 09 09 3b 20 52 45 54 55 52 4e 20 49 46 20 44 3d 30 2e 0d 0a 09 52 52 43 0d 0a ┆. RZ ; RETURN IF D=0. RRC ┆ 0x1940…1960 09 44 43 52 09 44 0d 0a 09 4a 4d 50 09 52 4f 53 48 0d 0a 0d 0a 0d 0a 3b 20 52 4f 55 54 49 4e 45 ┆ DCR D JMP ROSH ; ROUTINE┆ 0x1960…1980 20 54 4f 20 53 45 54 20 54 48 45 20 45 52 52 4f 52 0d 0a 3b 20 49 4e 44 49 43 41 54 4f 52 2e 0d ┆ TO SET THE ERROR ; INDICATOR. ┆ 0x1980…19a0 0a 0d 0a 45 52 52 31 3a 09 4d 56 49 09 41 2c 31 0d 0a 09 53 54 41 09 45 52 52 0d 0a 09 52 45 54 ┆ ERR1: MVI A,1 STA ERR RET┆ 0x19a0…19c0 0d 0a 0d 0a 0d 0a 3b 20 52 4f 55 54 49 4e 45 20 54 4f 20 52 45 53 45 54 20 54 48 45 20 45 52 52 ┆ ; ROUTINE TO RESET THE ERR┆ 0x19c0…19e0 4f 52 20 0d 0a 3b 20 49 4e 44 49 43 41 54 4f 52 2e 0d 0a 0d 0a 0d 0a 45 52 52 30 3a 09 58 52 41 ┆OR ; INDICATOR. ERR0: XRA┆ 0x19e0…19f6 09 41 0d 0a 09 53 54 41 09 45 52 52 0d 0a 09 52 45 54 0d 0a 0d 0a ┆ A STA ERR RET ┆ 0x19f6…19f9 FormFeed { 0x19f6…19f9 0c 82 f1 ┆ ┆ 0x19f6…19f9 } 0x19f9…1a00 0d 0a 3b 20 52 4f 55 ┆ ; ROU┆ 0x1a00…1a20 (13,) 54 49 4e 45 20 54 4f 20 52 45 41 44 20 53 54 41 54 55 53 20 46 52 4f 4d 20 41 20 55 41 52 54 2e ┆TINE TO READ STATUS FROM A UART.┆ 0x1a20…1a40 0d 0a 3b 20 57 48 45 4e 20 43 41 4c 4c 45 44 3a 20 0d 0a 3b 20 41 3d 09 30 09 54 45 52 4d 49 4e ┆ ; WHEN CALLED: ; A= 0 TERMIN┆ 0x1a40…1a60 41 4c 31 0d 0a 3b 09 31 09 54 45 52 4d 49 4e 41 4c 32 0d 0a 3b 09 32 09 54 45 52 4d 49 4e 41 4c ┆AL1 ; 1 TERMINAL2 ; 2 TERMINAL┆ 0x1a60…1a80 33 0d 0a 3b 09 33 09 50 52 49 4e 54 45 52 0d 0a 3b 09 34 09 48 4f 53 54 0d 0a 3b 20 48 4c 2c 44 ┆3 ; 3 PRINTER ; 4 HOST ; HL,D┆ 0x1a80…1aa0 45 20 41 52 45 20 44 45 53 54 52 4f 59 45 44 2e 0d 0a 52 53 54 41 54 3a 09 52 4c 43 0d 0a 09 52 ┆E ARE DESTROYED. RSTAT: RLC R┆ 0x1aa0…1ac0 4c 43 0d 0a 09 4d 4f 56 09 45 2c 41 0d 0a 09 58 52 41 09 41 0d 0a 09 4d 4f 56 09 44 2c 41 0d 0a ┆LC MOV E,A XRA A MOV D,A ┆ 0x1ac0…1ae0 09 4c 58 49 09 48 4c 2c 53 54 41 54 31 0d 0a 09 44 41 44 09 44 45 0d 0a 09 50 43 48 4c 0d 0a 0d ┆ LXI HL,STAT1 DAD DE PCHL ┆ 0x1ae0…1b00 0a 53 54 41 54 31 3a 09 4c 44 41 09 54 45 52 4d 31 2b 31 0d 0a 09 52 45 54 0d 0a 09 4c 44 41 09 ┆ STAT1: LDA TERM1+1 RET LDA ┆ 0x1b00…1b20 54 45 52 4d 32 2b 31 0d 0a 09 52 45 54 0d 0a 09 4c 44 41 09 54 45 52 4d 33 2b 31 0d 0a 09 52 45 ┆TERM2+1 RET LDA TERM3+1 RE┆ 0x1b20…1b40 54 0d 0a 09 4c 44 41 09 50 52 49 4e 54 2b 31 0d 0a 09 52 45 54 0d 0a 09 4c 44 41 09 48 4f 53 54 ┆T LDA PRINT+1 RET LDA HOST┆ 0x1b40…1b4a 2b 31 0d 0a 09 52 45 54 0d 0a ┆+1 RET ┆ 0x1b4a…1b4d FormFeed { 0x1b4a…1b4d 0c 81 f3 ┆ ┆ 0x1b4a…1b4d } 0x1b4d…1b60 0d 0a 3b 20 52 4f 55 54 49 4e 45 20 54 4f 20 52 45 41 44 ┆ ; ROUTINE TO READ┆ 0x1b60…1b80 20 41 20 42 59 54 45 20 46 52 4f 4d 20 41 4e 20 55 41 52 54 2e 0d 0a 3b 20 57 48 45 4e 20 43 41 ┆ A BYTE FROM AN UART. ; WHEN CA┆ 0x1b80…1ba0 4c 4c 45 44 3a 0d 0a 3b 20 41 3d 09 30 09 54 45 52 4d 49 4e 41 4c 31 0d 0a 3b 09 31 09 54 45 52 ┆LLED: ; A= 0 TERMINAL1 ; 1 TER┆ 0x1ba0…1bc0 4d 49 4e 41 4c 32 0d 0a 3b 09 32 09 54 45 52 4d 49 4e 41 4c 33 0d 0a 3b 09 33 09 50 52 49 4e 54 ┆MINAL2 ; 2 TERMINAL3 ; 3 PRINT┆ 0x1bc0…1be0 45 52 0d 0a 3b 09 34 09 48 4f 53 54 0d 0a 0d 0a 0d 0a 0d 0a 52 44 41 54 41 3a 09 52 4c 43 0d 0a ┆ER ; 4 HOST RDATA: RLC ┆ 0x1be0…1c00 09 52 4c 43 0d 0a 09 4d 4f 56 09 45 2c 41 0d 0a 09 58 52 41 09 41 0d 0a 09 4d 4f 56 09 44 2c 41 ┆ RLC MOV E,A XRA A MOV D,A┆ 0x1c00…1c20 (14,) 0d 0a 09 4c 58 49 09 48 4c 2c 44 49 4e 31 0d 0a 09 44 41 44 09 44 45 0d 0a 09 50 43 48 4c 0d 0a ┆ LXI HL,DIN1 DAD DE PCHL ┆ 0x1c20…1c40 0d 0a 44 49 4e 31 3a 09 4c 44 41 09 54 45 52 4d 31 0d 0a 09 52 45 54 0d 0a 09 4c 44 41 09 54 45 ┆ DIN1: LDA TERM1 RET LDA TE┆ 0x1c40…1c60 52 4d 32 0d 0a 09 52 45 54 0d 0a 09 4c 44 41 09 54 45 52 4d 33 0d 0a 09 52 45 54 0d 0a 09 4c 44 ┆RM2 RET LDA TERM3 RET LD┆ 0x1c60…1c80 41 09 50 52 49 4e 54 0d 0a 09 52 45 54 0d 0a 09 4c 44 41 09 48 4f 53 54 0d 0a 09 52 45 54 0d 0a ┆A PRINT RET LDA HOST RET ┆ 0x1c80…1c82 0d 0a ┆ ┆ 0x1c82…1c85 FormFeed { 0x1c82…1c85 0c 82 8e ┆ ┆ 0x1c82…1c85 } 0x1c85…1ca0 0d 0a 3b 20 52 4f 55 54 49 4e 45 20 54 4f 20 4f 55 54 50 55 54 20 41 20 42 59 54 ┆ ; ROUTINE TO OUTPUT A BYT┆ 0x1ca0…1cc0 45 20 54 4f 20 41 4e 20 55 41 52 54 2e 0d 0a 3b 20 57 48 45 4e 20 43 41 4c 4c 45 44 3a 0d 0a 3b ┆E TO AN UART. ; WHEN CALLED: ;┆ 0x1cc0…1ce0 20 41 3d 09 30 09 54 45 52 4d 49 4e 41 4c 31 0d 0a 3b 09 31 09 54 45 52 4d 49 4e 41 4c 32 0d 0a ┆ A= 0 TERMINAL1 ; 1 TERMINAL2 ┆ 0x1ce0…1d00 3b 09 32 09 54 45 52 4d 49 4e 41 4c 33 0d 0a 3b 09 33 09 50 52 49 4e 54 45 52 2e 0d 0a 3b 09 34 ┆; 2 TERMINAL3 ; 3 PRINTER. ; 4┆ 0x1d00…1d20 09 48 4f 53 54 0d 0a 0d 0a 3b 48 3d 20 44 41 54 41 0d 0a 0d 0a 0d 0a 0d 0a 57 4f 55 54 3a 09 52 ┆ HOST ;H= DATA WOUT: R┆ 0x1d20…1d40 4c 43 0d 0a 09 52 4c 43 0d 0a 09 4d 4f 56 09 45 2c 41 0d 0a 09 58 52 41 09 41 0d 0a 09 4d 4f 56 ┆LC RLC MOV E,A XRA A MOV┆ 0x1d40…1d60 09 44 2c 41 0d 0a 09 4d 4f 56 09 41 2c 48 0d 0a 09 4c 58 49 09 48 4c 2c 44 4f 55 54 31 0d 0a 09 ┆ D,A MOV A,H LXI HL,DOUT1 ┆ 0x1d60…1d80 44 41 44 09 44 45 0d 0a 09 50 43 48 4c 0d 0a 0d 0a 44 4f 55 54 31 3a 09 53 54 41 09 54 45 52 4d ┆DAD DE PCHL DOUT1: STA TERM┆ 0x1d80…1da0 31 0d 0a 09 52 45 54 0d 0a 09 53 54 41 09 54 45 52 4d 32 0d 0a 09 52 45 54 0d 0a 09 53 54 41 09 ┆1 RET STA TERM2 RET STA ┆ 0x1da0…1dc0 54 45 52 4d 33 0d 0a 09 52 45 54 0d 0a 09 53 54 41 09 50 52 49 4e 54 0d 0a 09 52 45 54 0d 0a 09 ┆TERM3 RET STA PRINT RET ┆ 0x1dc0…1dd0 53 54 41 09 48 4f 53 54 0d 0a 09 52 45 54 0d 0a ┆STA HOST RET ┆ 0x1dd0…1dd3 FormFeed { 0x1dd0…1dd3 0c 82 a0 ┆ ┆ 0x1dd0…1dd3 } 0x1dd3…1de0 52 4f 55 54 49 4e 45 20 54 4f 20 45 4d ┆ROUTINE TO EM┆ 0x1de0…1e00 50 54 59 20 41 20 42 55 46 46 45 52 2e 0d 0a 3b 20 49 4e 50 55 54 2d 4f 55 54 50 55 54 20 50 4f ┆PTY A BUFFER. ; INPUT-OUTPUT PO┆ 0x1e00…1e20 (15,) 49 4e 54 45 52 53 20 20 41 52 45 20 53 45 54 20 54 4f 20 42 55 46 46 45 52 53 54 41 52 54 0d 0a ┆INTERS ARE SET TO BUFFERSTART ┆ 0x1e20…1e40 3b 09 41 4e 44 20 42 55 46 45 4d 20 28 32 2a 4e 4f 20 2b 20 42 4f 4f 4c 45 41 4e 20 54 59 50 45 ┆; AND BUFEM (2*NO + BOOLEAN TYPE┆ 0x1e40…1e60 29 20 3a 3d 20 30 3b 0d 0a 3b 20 41 3d 09 54 45 52 4d 49 4e 41 4c 20 4e 4f 20 28 30 2d 33 29 2e ┆) := 0; ; A= TERMINAL NO (0-3).┆ 0x1e60…1e80 0d 0a 3b 20 4c 3d 09 58 4d 54 2f 52 45 43 20 54 59 50 45 20 4f 46 20 42 55 46 45 52 20 28 20 30 ┆ ; L= XMT/REC TYPE OF BUFER ( 0┆ 0x1e80…1ea0 3d 58 4d 54 2c 31 3d 52 45 43 29 2e 0d 0a 0d 0a 45 4d 50 54 31 3a 09 50 55 53 48 09 42 43 0d 0a ┆=XMT,1=REC). EMPT1: PUSH BC ┆ 0x1ea0…1ec0 09 50 55 53 48 09 44 45 0d 0a 09 50 55 53 48 09 48 4c 0d 0a 09 52 4c 43 0d 0a 09 41 44 44 09 4c ┆ PUSH DE PUSH HL RLC ADD L┆ 0x1ec0…1ee0 0d 0a 09 50 55 53 48 50 53 57 0d 0a 09 52 4c 43 0d 0a 09 50 55 53 48 50 53 57 0d 0a 09 4c 58 49 ┆ PUSHPSW RLC PUSHPSW LXI┆ 0x1ee0…1f00 09 42 43 2c 42 55 46 53 54 41 42 0d 0a 09 43 41 4c 4c 09 42 43 41 44 44 0d 0a 45 4d 50 54 32 3a ┆ BC,BUFSTAB CALL BCADD EMPT2:┆ 0x1f00…1f20 09 50 4f 50 50 53 57 0d 0a 09 52 4c 43 0d 0a 09 4c 58 49 09 44 45 2c 42 31 58 49 4e 50 0d 0a 09 ┆ POPPSW RLC LXI DE,B1XINP ┆ 0x1f20…1f40 43 41 4c 4c 09 44 45 41 44 44 0d 0a 45 4d 50 54 33 3a 09 4c 44 41 58 09 42 43 09 3b 20 53 45 54 ┆CALL DEADD EMPT3: LDAX BC ; SET┆ 0x1f40…1f60 20 49 4e 50 55 54 20 50 4f 49 4e 54 45 52 0d 0a 09 53 54 41 58 09 44 45 09 3b 20 3d 20 42 55 46 ┆ INPUT POINTER STAX DE ; = BUF┆ 0x1f60…1f80 46 45 52 20 53 54 41 52 54 2e 0d 0a 09 49 4e 58 09 42 43 0d 0a 09 49 4e 58 09 44 45 0d 0a 09 4c ┆FER START. INX BC INX DE L┆ 0x1f80…1fa0 44 41 58 09 42 43 0d 0a 09 53 54 41 58 09 44 45 0d 0a 09 49 4e 58 09 44 45 0d 0a 09 44 43 58 09 ┆DAX BC STAX DE INX DE DCX ┆ 0x1fa0…1fc0 42 43 0d 0a 09 4c 44 41 58 09 42 43 09 3b 20 53 45 54 20 4f 55 54 50 55 54 20 50 4f 49 4e 54 45 ┆BC LDAX BC ; SET OUTPUT POINTE┆ 0x1fc0…1fe0 52 0d 0a 09 53 54 41 58 09 44 45 09 3b 20 3d 20 42 55 46 46 45 52 20 53 54 41 52 54 2e 0d 0a 09 ┆R STAX DE ; = BUFFER START. ┆ 0x1fe0…2000 49 4e 58 09 42 43 0d 0a 09 49 4e 58 09 44 45 0d 0a 09 4c 44 41 58 09 42 43 0d 0a 09 53 54 41 58 ┆INX BC INX DE LDAX BC STAX┆ 0x2000…2020 (16,) 09 44 45 0d 0a 09 4c 58 49 09 44 45 2c 42 55 46 45 4d 0d 0a 09 50 4f 50 50 53 57 0d 0a 09 41 44 ┆ DE LXI DE,BUFEM POPPSW AD┆ 0x2020…2040 44 09 45 0d 0a 09 4d 4f 56 09 45 2c 41 0d 0a 09 4a 4e 43 09 45 4d 50 54 34 0d 0a 09 49 4e 52 09 ┆D E MOV E,A JNC EMPT4 INR ┆ 0x2040…2060 44 0d 0a 45 4d 50 54 34 3a 09 58 52 41 09 41 0d 0a 09 53 54 41 58 09 44 45 0d 0a 09 50 4f 50 09 ┆D EMPT4: XRA A STAX DE POP ┆ 0x2060…207c 48 4c 0d 0a 09 50 4f 50 09 44 45 0d 0a 09 50 4f 50 09 42 43 0d 0a 09 52 45 54 0d 0a ┆HL POP DE POP BC RET ┆ 0x207c…207f FormFeed { 0x207c…207f 0c 83 95 ┆ ┆ 0x207c…207f } 0x207f…2080 3b ┆;┆ 0x2080…20a0 20 52 4f 55 54 49 4e 45 20 54 4f 20 43 4f 4d 50 41 52 45 20 54 4f 20 42 55 46 46 45 52 20 45 4c ┆ ROUTINE TO COMPARE TO BUFFER EL┆ 0x20a0…20c0 45 4d 45 4e 54 20 45 41 43 48 20 4f 46 20 32 20 42 59 54 45 53 20 28 50 4f 49 4e 54 45 52 53 29 ┆EMENT EACH OF 2 BYTES (POINTERS)┆ 0x20c0…20e0 0d 0a 3b 20 57 48 45 4e 20 43 41 4c 4c 45 44 3a 20 0d 0a 3b 09 42 43 3d 09 50 4f 49 4e 54 45 52 ┆ ; WHEN CALLED: ; BC= POINTER┆ 0x20e0…2100 20 54 4f 20 20 42 55 46 2d 45 4c 45 4d 45 4e 54 31 0d 0a 3b 09 44 45 3d 09 50 4f 49 4e 54 45 52 ┆ TO BUF-ELEMENT1 ; DE= POINTER┆ 0x2100…2120 20 54 4f 20 42 55 46 2d 45 4c 45 4d 45 4e 54 20 32 0d 0a 3b 52 45 54 55 52 4e 3a 20 5a 45 52 4f ┆ TO BUF-ELEMENT 2 ;RETURN: ZERO┆ 0x2120…2140 20 46 4c 41 47 3d 31 20 49 46 20 45 51 55 41 4c 2e 0d 0a 0d 0a 45 51 55 41 4c 3a 09 50 55 53 48 ┆ FLAG=1 IF EQUAL. EQUAL: PUSH┆ 0x2140…2160 09 48 4c 0d 0a 09 4c 44 41 58 09 42 43 0d 0a 09 4d 4f 56 09 48 2c 41 0d 0a 09 4c 44 41 58 09 44 ┆ HL LDAX BC MOV H,A LDAX D┆ 0x2160…2180 45 0d 0a 09 53 55 42 09 48 0d 0a 09 4a 4e 5a 09 45 51 55 31 0d 0a 09 49 4e 58 09 42 43 0d 0a 09 ┆E SUB H JNZ EQU1 INX BC ┆ 0x2180…21a0 49 4e 58 09 44 45 0d 0a 09 4c 44 41 58 09 42 43 0d 0a 09 4d 4f 56 09 48 2c 41 0d 0a 09 4c 44 41 ┆INX DE LDAX BC MOV H,A LDA┆ 0x21a0…21c0 58 09 44 45 0d 0a 09 44 43 58 09 42 43 0d 0a 09 44 43 58 09 44 45 0d 0a 09 53 55 42 09 48 0d 0a ┆X DE DCX BC DCX DE SUB H ┆ 0x21c0…21e0 45 51 55 31 3a 09 50 4f 50 09 48 4c 0d 0a 09 52 45 54 0d 0a 0d 0a 0d 0a 3b 20 52 4f 55 54 49 4e ┆EQU1: POP HL RET ; ROUTIN┆ 0x21e0…2200 45 20 54 4f 20 54 45 53 54 20 41 20 42 55 46 46 45 52 20 46 4f 52 20 45 4d 50 54 59 20 53 54 41 ┆E TO TEST A BUFFER FOR EMPTY STA┆ 0x2200…2220 (17,) 54 45 0d 0a 3b 20 28 49 4e 50 55 54 20 50 4f 49 4e 54 45 52 3d 4f 55 54 50 55 54 20 50 4f 49 4e ┆TE ; (INPUT POINTER=OUTPUT POIN┆ 0x2220…2240 54 45 52 29 0d 0a 3b 20 57 48 45 4e 20 43 41 4c 4c 45 44 3a 0d 0a 3b 20 41 3d 09 54 45 52 4d 49 ┆TER) ; WHEN CALLED: ; A= TERMI┆ 0x2240…2260 4e 41 4c 20 4e 4f 20 28 30 2d 34 29 0d 0a 3b 20 4c 3d 09 58 4d 54 2f 52 45 43 20 54 59 50 45 20 ┆NAL NO (0-4) ; L= XMT/REC TYPE ┆ 0x2260…2280 42 55 46 46 45 52 28 30 3d 58 4d 54 2c 31 3d 52 45 43 29 2e 0d 0a 3b 20 52 45 54 55 52 4e 3a 0d ┆BUFFER(0=XMT,1=REC). ; RETURN: ┆ 0x2280…22a0 0a 3b 20 5a 45 52 4f 2d 46 4c 41 47 3d 31 20 49 46 20 42 55 46 46 45 52 20 45 4d 50 54 59 2e 0d ┆ ; ZERO-FLAG=1 IF BUFFER EMPTY. ┆ 0x22a0…22c0 0a 0d 0a 42 34 3a 09 50 55 53 48 09 44 45 0d 0a 09 4c 58 49 09 44 45 2c 42 55 46 45 4d 0d 0a 09 ┆ B4: PUSH DE LXI DE,BUFEM ┆ 0x22c0…22e0 52 4c 43 0d 0a 09 41 44 44 09 4c 0d 0a 09 41 44 44 09 45 0d 0a 09 4d 4f 56 09 45 2c 41 0d 0a 09 ┆RLC ADD L ADD E MOV E,A ┆ 0x22e0…2300 4a 4e 43 09 42 35 0d 0a 09 49 4e 52 09 44 0d 0a 42 35 3a 09 4c 44 41 58 09 44 45 0d 0a 09 43 50 ┆JNC B5 INR D B5: LDAX DE CP┆ 0x2300…2314 49 09 30 0d 0a 09 50 4f 50 09 44 45 0d 0a 09 52 45 54 0d 0a ┆I 0 POP DE RET ┆ 0x2314…2317 FormFeed { 0x2314…2317 0c 83 83 ┆ ┆ 0x2314…2317 } 0x2317…2320 0d 0a 3b 20 52 4f 55 54 49 ┆ ; ROUTI┆ 0x2320…2340 4e 45 20 54 4f 20 49 4e 50 55 54 20 41 20 42 59 54 45 20 54 4f 20 41 20 42 55 46 46 45 52 2e 0d ┆NE TO INPUT A BYTE TO A BUFFER. ┆ 0x2340…2360 0a 3b 20 49 4e 43 52 45 4d 45 4e 54 20 49 4e 50 55 54 20 50 4f 49 4e 54 45 52 0d 0a 3b 20 49 46 ┆ ; INCREMENT INPUT POINTER ; IF┆ 0x2360…2380 20 49 4e 50 55 54 20 50 4f 49 4e 54 45 52 20 45 51 55 41 4c 53 20 54 4f 50 20 4f 46 20 42 55 46 ┆ INPUT POINTER EQUALS TOP OF BUF┆ 0x2380…23a0 46 45 52 20 54 48 45 4e 0d 0a 3b 20 49 4e 50 55 54 20 50 4f 49 4e 54 45 52 3a 3d 20 42 55 46 46 ┆FER THEN ; INPUT POINTER:= BUFF┆ 0x23a0…23c0 45 52 20 53 54 41 52 54 2e 0d 0a 3b 20 57 48 45 4e 20 43 41 4c 4c 45 44 3a 0d 0a 3b 09 41 3d 09 ┆ER START. ; WHEN CALLED: ; A= ┆ 0x23c0…23e0 54 45 52 4d 49 4e 41 4c 20 4e 4f 2e 28 30 2d 34 29 0d 0a 3b 09 4c 3d 09 58 4d 54 2f 52 45 43 20 ┆TERMINAL NO.(0-4) ; L= XMT/REC ┆ 0x23e0…2400 54 59 50 45 20 42 55 46 46 45 52 28 30 3d 58 4d 54 2c 31 3d 52 45 43 29 2e 0d 0a 3b 09 48 3d 09 ┆TYPE BUFFER(0=XMT,1=REC). ; H= ┆ 0x2400…2420 (18,) 49 4e 50 55 54 20 43 48 41 52 41 43 54 45 52 2e 0d 0a 0d 0a 0d 0a 42 36 3a 09 50 55 53 48 09 42 ┆INPUT CHARACTER. B6: PUSH B┆ 0x2420…2440 43 0d 0a 09 50 55 53 48 09 44 45 0d 0a 09 50 55 53 48 09 48 4c 0d 0a 09 4c 58 49 09 42 43 2c 42 ┆C PUSH DE PUSH HL LXI BC,B┆ 0x2440…2460 31 58 49 4e 50 09 3b 20 47 45 54 20 42 55 46 46 45 52 20 50 4f 49 4e 54 45 52 2e 0d 0a 09 4d 4f ┆1XINP ; GET BUFFER POINTER. MO┆ 0x2460…2480 56 09 48 2c 41 0d 0a 09 52 4c 43 0d 0a 09 41 44 44 09 4c 0d 0a 09 52 4c 43 0d 0a 09 52 4c 43 0d ┆V H,A RLC ADD L RLC RLC ┆ 0x2480…24a0 0a 09 41 44 44 09 43 0d 0a 09 4d 4f 56 09 43 2c 41 0d 0a 09 4a 4e 43 09 42 37 0d 0a 09 49 4e 52 ┆ ADD C MOV C,A JNC B7 INR┆ 0x24a0…24c0 09 42 0d 0a 42 37 3a 09 4c 44 41 58 09 42 43 0d 0a 09 4d 4f 56 09 45 2c 41 0d 0a 09 49 4e 58 09 ┆ B B7: LDAX BC MOV E,A INX ┆ 0x24c0…24e0 42 43 0d 0a 09 4c 44 41 58 09 42 43 0d 0a 09 4d 4f 56 09 44 2c 41 09 3b 20 44 45 3d 43 55 52 52 ┆BC LDAX BC MOV D,A ; DE=CURR┆ 0x24e0…2500 45 4e 54 20 42 55 46 20 41 44 44 52 45 53 53 2e 0d 0a 09 58 54 48 4c 0d 0a 09 4d 4f 56 09 41 2c ┆ENT BUF ADDRESS. XTHL MOV A,┆ 0x2500…2520 48 0d 0a 09 53 54 41 58 09 44 45 0d 0a 09 58 54 48 4c 0d 0a 09 44 43 58 09 42 43 09 3b 20 49 4e ┆H STAX DE XTHL DCX BC ; IN┆ 0x2520…2540 43 52 45 4d 45 4e 54 20 42 55 46 46 45 52 20 50 4f 49 4e 54 45 52 2e 0d 0a 09 4c 44 41 58 09 42 ┆CREMENT BUFFER POINTER. LDAX B┆ 0x2540…2560 43 0d 0a 09 49 4e 52 09 41 0d 0a 09 53 54 41 58 09 42 43 0d 0a 09 4a 4e 5a 09 42 38 0d 0a 0d 0a ┆C INR A STAX BC JNZ B8 ┆ 0x2560…2580 09 49 4e 58 09 42 43 0d 0a 09 4c 44 41 58 09 42 43 0d 0a 09 49 4e 52 09 41 0d 0a 09 53 54 41 58 ┆ INX BC LDAX BC INR A STAX┆ 0x2580…259b 09 42 43 0d 0a 09 44 43 58 09 42 43 09 3b 20 42 43 3d 50 4f 49 4e 54 45 52 0d 0a ┆ BC DCX BC ; BC=POINTER ┆ 0x259b…259e FormFeed { 0x259b…259e 0c 83 83 ┆ ┆ 0x259b…259e } 0x259e…25a0 0d 0a ┆ ┆ 0x25a0…25c0 42 38 3a 09 4d 4f 56 09 41 2c 48 0d 0a 09 52 4c 43 0d 0a 09 41 44 44 09 4c 0d 0a 09 52 4c 43 0d ┆B8: MOV A,H RLC ADD L RLC ┆ 0x25c0…25e0 0a 09 4c 58 49 09 44 45 2c 42 55 46 54 54 41 42 0d 0a 09 43 41 4c 4c 09 44 45 41 44 44 09 3b 20 ┆ LXI DE,BUFTTAB CALL DEADD ; ┆ 0x25e0…2600 44 45 3d 20 42 55 46 46 45 52 20 4d 41 58 2e 0d 0a 09 43 41 4c 4c 09 45 51 55 41 4c 09 3b 20 49 ┆DE= BUFFER MAX. CALL EQUAL ; I┆ 0x2600…2620 (19,) 46 20 28 42 43 29 3d 28 44 45 29 20 54 48 45 4e 0d 0a 09 4a 4e 5a 09 42 31 30 09 3b 20 28 42 43 ┆F (BC)=(DE) THEN JNZ B10 ; (BC┆ 0x2620…2640 29 3a 3d 20 42 55 46 46 45 52 20 53 54 41 52 54 2e 0d 0a 0d 0a 09 4d 4f 56 09 41 2c 48 0d 0a 09 ┆):= BUFFER START. MOV A,H ┆ 0x2640…2660 52 4c 43 0d 0a 09 41 44 44 09 4c 0d 0a 09 52 4c 43 0d 0a 09 4c 58 49 09 44 45 2c 42 55 46 53 54 ┆RLC ADD L RLC LXI DE,BUFST┆ 0x2660…2680 41 42 0d 0a 09 43 41 4c 4c 09 44 45 41 44 44 0d 0a 09 4c 44 41 58 09 44 45 0d 0a 09 53 54 41 58 ┆AB CALL DEADD LDAX DE STAX┆ 0x2680…26a0 09 42 43 0d 0a 09 49 4e 58 09 44 45 0d 0a 09 49 4e 58 09 42 43 0d 0a 09 4c 44 41 58 09 44 45 0d ┆ BC INX DE INX BC LDAX DE ┆ 0x26a0…26c0 0a 09 53 54 41 58 09 42 43 0d 0a 42 31 30 3a 09 4d 4f 56 09 41 2c 48 0d 0a 09 52 4c 43 0d 0a 09 ┆ STAX BC B10: MOV A,H RLC ┆ 0x26c0…26e0 41 44 44 09 4c 0d 0a 09 4c 58 49 09 48 4c 2c 42 55 46 45 4d 0d 0a 09 41 44 44 09 4c 0d 0a 09 4d ┆ADD L LXI HL,BUFEM ADD L M┆ 0x26e0…2700 4f 56 09 4c 2c 41 0d 0a 09 4a 4e 43 09 45 42 31 30 0d 0a 09 49 4e 52 09 48 0d 0a 45 42 31 30 3a ┆OV L,A JNC EB10 INR H EB10:┆ 0x2700…2720 09 49 4e 52 09 4d 0d 0a 09 50 4f 50 09 48 4c 0d 0a 09 50 4f 50 09 44 45 0d 0a 09 50 4f 50 09 42 ┆ INR M POP HL POP DE POP B┆ 0x2720…2729 43 0d 0a 09 52 45 54 0d 0a ┆C RET ┆ 0x2729…272c FormFeed { 0x2729…272c 0c 82 b2 ┆ ┆ 0x2729…272c } 0x272c…2740 3b 20 52 4f 55 54 49 4e 45 20 54 4f 20 4f 55 54 50 55 54 20 ┆; ROUTINE TO OUTPUT ┆ 0x2740…2760 41 20 42 59 54 45 20 46 52 4f 4d 20 41 20 42 55 46 46 45 52 2e 0d 0a 3b 20 49 4e 43 52 45 4d 45 ┆A BYTE FROM A BUFFER. ; INCREME┆ 0x2760…2780 4e 54 20 54 48 45 20 4f 55 54 50 55 54 20 50 4f 49 4e 54 45 52 0d 0a 3b 20 49 46 20 4f 55 54 50 ┆NT THE OUTPUT POINTER ; IF OUTP┆ 0x2780…27a0 55 54 20 50 4f 49 4e 54 45 52 3d 54 4f 50 20 4f 46 20 42 55 46 46 45 52 20 54 48 45 4e 0d 0a 3b ┆UT POINTER=TOP OF BUFFER THEN ;┆ 0x27a0…27c0 20 4f 55 54 50 55 54 20 50 4f 49 4e 54 45 52 3a 3d 20 42 55 46 46 45 52 20 53 54 41 52 54 2e 0d ┆ OUTPUT POINTER:= BUFFER START. ┆ 0x27c0…27e0 0a 3b 20 57 48 45 4e 20 43 41 4c 4c 45 44 3a 0d 0a 3b 20 09 41 3d 09 54 45 52 4d 49 4e 41 4c 20 ┆ ; WHEN CALLED: ; A= TERMINAL ┆ 0x27e0…2800 4e 4f 28 30 2d 34 29 0d 0a 3b 09 4c 3d 09 58 4d 54 2f 52 45 43 20 42 55 46 46 45 52 28 30 3d 58 ┆NO(0-4) ; L= XMT/REC BUFFER(0=X┆ 0x2800…2820 (20,) 4d 54 2c 31 3d 52 45 43 29 2e 0d 0a 3b 52 45 54 55 52 4e 3a 0d 0a 3b 09 48 3d 09 43 48 41 52 41 ┆MT,1=REC). ;RETURN: ; H= CHARA┆ 0x2820…2840 43 54 45 52 2e 0d 0a 0d 0a 0d 0a 42 31 32 3a 09 50 55 53 48 09 42 43 09 3b 20 53 41 56 45 20 41 ┆CTER. B12: PUSH BC ; SAVE A┆ 0x2840…2860 43 43 55 4d 55 4c 41 54 4f 52 53 2e 0d 0a 09 50 55 53 48 09 44 45 0d 0a 09 50 55 53 48 09 48 4c ┆CCUMULATORS. PUSH DE PUSH HL┆ 0x2860…2880 0d 0a 09 4c 58 49 09 42 43 2c 42 31 58 49 4e 50 2b 32 09 3b 20 47 45 54 20 42 55 46 46 45 52 20 ┆ LXI BC,B1XINP+2 ; GET BUFFER ┆ 0x2880…28a0 50 4f 49 4e 54 45 52 2e 0d 0a 09 4d 4f 56 09 48 2c 41 0d 0a 09 52 4c 43 0d 0a 09 41 44 44 09 4c ┆POINTER. MOV H,A RLC ADD L┆ 0x28a0…28c0 0d 0a 09 52 4c 43 0d 0a 09 52 4c 43 0d 0a 09 41 44 44 09 43 0d 0a 09 4d 4f 56 09 43 2c 41 0d 0a ┆ RLC RLC ADD C MOV C,A ┆ 0x28c0…28e0 09 4a 4e 43 09 42 31 33 0d 0a 09 49 4e 52 09 42 0d 0a 42 31 33 3a 09 4c 44 41 58 09 42 43 0d 0a ┆ JNC B13 INR B B13: LDAX BC ┆ 0x28e0…2900 09 4d 4f 56 09 45 2c 41 0d 0a 09 49 4e 58 09 42 43 0d 0a 09 4c 44 41 58 09 42 43 0d 0a 09 4d 4f ┆ MOV E,A INX BC LDAX BC MO┆ 0x2900…2920 56 09 44 2c 41 09 3b 20 44 45 3d 43 55 52 52 45 4e 54 20 42 55 46 46 45 52 20 41 44 44 52 45 53 ┆V D,A ; DE=CURRENT BUFFER ADDRES┆ 0x2920…2940 53 2e 0d 0a 09 4c 44 41 58 09 44 45 0d 0a 09 4d 4f 56 09 44 2c 48 0d 0a 09 4d 4f 56 09 48 2c 41 ┆S. LDAX DE MOV D,H MOV H,A┆ 0x2940…2960 0d 0a 09 58 54 48 4c 0d 0a 09 44 43 58 09 42 43 0d 0a 09 4c 44 41 58 09 42 43 09 3b 20 49 4e 43 ┆ XTHL DCX BC LDAX BC ; INC┆ 0x2960…2980 52 20 50 4f 49 4e 54 45 52 2e 0d 0a 09 49 4e 52 09 41 0d 0a 09 53 54 41 58 09 42 43 0d 0a 09 4a ┆R POINTER. INR A STAX BC J┆ 0x2980…29a0 4e 5a 09 42 31 34 0d 0a 0d 0a 09 49 4e 58 09 42 43 0d 0a 09 4c 44 41 58 09 42 43 0d 0a 09 49 4e ┆NZ B14 INX BC LDAX BC IN┆ 0x29a0…29b8 52 09 41 0d 0a 09 53 54 41 58 09 42 43 0d 0a 09 44 43 58 09 42 43 0d 0a ┆R A STAX BC DCX BC ┆ 0x29b8…29bb FormFeed { 0x29b8…29bb 0c 83 83 ┆ ┆ 0x29b8…29bb } 0x29bb…29c0 0d 0a 42 31 34 ┆ B14┆ 0x29c0…29e0 3a 09 4d 4f 56 09 41 2c 44 09 3b 20 54 45 53 54 20 50 4f 49 4e 54 45 52 3d 20 42 55 46 46 45 52 ┆: MOV A,D ; TEST POINTER= BUFFER┆ 0x29e0…2a00 20 54 4f 50 2e 0d 0a 09 4d 4f 56 09 48 2c 44 0d 0a 09 52 4c 43 0d 0a 09 41 44 44 09 4c 0d 0a 09 ┆ TOP. MOV H,D RLC ADD L ┆ 0x2a00…2a20 (21,) 52 4c 43 0d 0a 09 4c 58 49 09 44 45 2c 42 55 46 54 54 41 42 0d 0a 09 43 41 4c 4c 09 44 45 41 44 ┆RLC LXI DE,BUFTTAB CALL DEAD┆ 0x2a20…2a40 44 09 3b 20 28 44 45 29 3d 20 42 55 46 46 45 52 20 54 4f 50 2e 0d 0a 09 43 41 4c 4c 09 45 51 55 ┆D ; (DE)= BUFFER TOP. CALL EQU┆ 0x2a40…2a60 41 4c 0d 0a 09 4a 4e 5a 09 42 31 36 09 3b 20 49 46 20 28 42 43 29 3d 28 44 45 29 20 54 48 45 4e ┆AL JNZ B16 ; IF (BC)=(DE) THEN┆ 0x2a60…2a80 0d 0a 0d 0a 09 4d 4f 56 09 41 2c 48 09 3b 20 28 42 43 29 3a 3d 42 55 46 46 45 52 20 53 54 41 52 ┆ MOV A,H ; (BC):=BUFFER STAR┆ 0x2a80…2aa0 54 2e 0d 0a 09 52 4c 43 0d 0a 09 41 44 44 09 4c 0d 0a 09 52 4c 43 0d 0a 09 4c 58 49 09 44 45 2c ┆T. RLC ADD L RLC LXI DE,┆ 0x2aa0…2ac0 42 55 46 53 54 41 42 0d 0a 09 43 41 4c 4c 09 44 45 41 44 44 0d 0a 42 31 37 3a 09 4c 44 41 58 09 ┆BUFSTAB CALL DEADD B17: LDAX ┆ 0x2ac0…2ae0 44 45 0d 0a 09 53 54 41 58 09 42 43 0d 0a 09 49 4e 58 09 44 45 0d 0a 09 49 4e 58 09 42 43 0d 0a ┆DE STAX BC INX DE INX BC ┆ 0x2ae0…2b00 09 4c 44 41 58 09 44 45 0d 0a 09 53 54 41 58 09 42 43 0d 0a 42 31 36 3a 09 4d 4f 56 09 41 2c 48 ┆ LDAX DE STAX BC B16: MOV A,H┆ 0x2b00…2b20 0d 0a 09 52 4c 43 0d 0a 09 41 44 44 09 4c 0d 0a 09 4c 58 49 09 48 4c 2c 42 55 46 45 4d 0d 0a 09 ┆ RLC ADD L LXI HL,BUFEM ┆ 0x2b20…2b40 41 44 44 09 4c 0d 0a 09 4d 4f 56 09 4c 2c 41 0d 0a 09 4a 4e 43 09 45 42 31 36 0d 0a 09 49 4e 52 ┆ADD L MOV L,A JNC EB16 INR┆ 0x2b40…2b60 09 48 0d 0a 45 42 31 36 3a 09 44 43 52 09 4d 0d 0a 09 50 4f 50 09 48 4c 0d 0a 09 50 4f 50 09 44 ┆ H EB16: DCR M POP HL POP D┆ 0x2b60…2b72 45 0d 0a 09 50 4f 50 09 42 43 0d 0a 09 52 45 54 0d 0a ┆E POP BC RET ┆ 0x2b72…2b75 FormFeed { 0x2b72…2b75 0c 82 bb ┆ ┆ 0x2b72…2b75 } 0x2b75…2b80 0d 0a 3b 20 52 4f 55 54 49 4e 45 ┆ ; ROUTINE┆ 0x2b80…2ba0 20 54 4f 20 41 44 44 20 54 48 45 20 43 4f 4e 54 45 4e 54 53 20 4f 46 0d 0a 3b 20 41 22 20 54 4f ┆ TO ADD THE CONTENTS OF ; A" TO┆ 0x2ba0…2bc0 20 54 48 45 20 52 45 47 49 53 54 45 52 20 50 41 49 52 20 42 43 22 2e 0d 0a 0d 0a 42 43 41 44 44 ┆ THE REGISTER PAIR BC". BCADD┆ 0x2bc0…2be0 3a 09 41 44 44 09 43 0d 0a 09 4d 4f 56 09 43 2c 41 0d 0a 09 4a 4e 43 09 4b 31 0d 0a 09 49 4e 52 ┆: ADD C MOV C,A JNC K1 INR┆ 0x2be0…2c00 09 42 0d 0a 4b 31 3a 09 52 45 54 0d 0a 0d 0a 0d 0a 3b 20 52 4f 55 54 49 4e 45 20 54 4f 20 41 44 ┆ B K1: RET ; ROUTINE TO AD┆ 0x2c00…2c20 (22,) 44 20 54 48 45 20 43 4f 4e 54 45 4e 54 53 20 4f 46 0d 0a 3b 20 41 22 20 54 4f 20 54 48 45 20 52 ┆D THE CONTENTS OF ; A" TO THE R┆ 0x2c20…2c40 45 47 49 53 54 45 52 20 50 41 49 52 20 44 45 22 0d 0a 0d 0a 44 45 41 44 44 3a 09 41 44 44 09 45 ┆EGISTER PAIR DE" DEADD: ADD E┆ 0x2c40…2c60 0d 0a 09 4d 4f 56 09 45 2c 41 0d 0a 09 4a 4e 43 09 4b 32 0d 0a 09 49 4e 52 09 44 0d 0a 4b 32 3a ┆ MOV E,A JNC K2 INR D K2:┆ 0x2c60…2c80 09 52 45 54 0d 0a 0d 0a 3b 20 52 4f 55 54 49 4e 45 20 54 4f 20 41 44 44 20 54 48 45 20 43 4f 4e ┆ RET ; ROUTINE TO ADD THE CON┆ 0x2c80…2ca0 54 45 4e 54 53 20 4f 46 0d 0a 3b 20 41 22 20 54 4f 20 54 48 45 20 52 45 47 49 53 54 45 52 20 50 ┆TENTS OF ; A" TO THE REGISTER P┆ 0x2ca0…2cc0 41 49 52 20 48 4c 22 2e 0d 0a 0d 0a 48 4c 41 44 44 3a 09 41 44 44 09 4c 0d 0a 09 4d 4f 56 09 4c ┆AIR HL". HLADD: ADD L MOV L┆ 0x2cc0…2cde 2c 41 0d 0a 09 4a 4e 43 09 4b 33 0d 0a 09 49 4e 52 09 48 0d 0a 4b 33 3a 09 52 45 54 0d 0a ┆,A JNC K3 INR H K3: RET ┆ 0x2cde…2ce1 FormFeed { 0x2cde…2ce1 0c 81 f3 ┆ ┆ 0x2cde…2ce1 } 0x2ce1…2d00 52 4f 55 54 49 4e 45 20 54 4f 20 57 52 49 54 45 20 54 48 45 20 43 4f 4e 54 45 4e 54 53 20 4f ┆ROUTINE TO WRITE THE CONTENTS O┆ 0x2d00…2d20 46 20 48 22 0d 0a 3b 20 49 4e 54 4f 20 54 48 45 20 56 41 52 49 41 42 4c 45 20 4d 4f 44 45 58 0d ┆F H" ; INTO THE VARIABLE MODEX ┆ 0x2d20…2d40 0a 3b 20 57 48 45 52 45 20 41 3d 20 54 45 52 4d 49 4e 41 4c 20 4e 4f 2e 0d 0a 0d 0a 57 52 4d 4f ┆ ; WHERE A= TERMINAL NO. WRMO┆ 0x2d40…2d60 44 45 3a 09 4c 58 49 09 42 43 2c 4d 4f 44 45 31 0d 0a 09 43 41 4c 4c 09 42 43 41 44 44 0d 0a 09 ┆DE: LXI BC,MODE1 CALL BCADD ┆ 0x2d60…2d80 4d 4f 56 09 41 2c 48 0d 0a 09 53 54 41 58 09 42 43 0d 0a 09 52 45 54 0d 0a 0d 0a 3b 20 52 4f 55 ┆MOV A,H STAX BC RET ; ROU┆ 0x2d80…2da0 54 49 4e 45 20 54 4f 20 52 45 41 44 20 54 48 45 20 43 4f 4e 54 45 4e 54 53 20 4f 46 20 54 48 45 ┆TINE TO READ THE CONTENTS OF THE┆ 0x2da0…2dc0 0d 0a 3b 20 56 41 52 49 41 42 4c 45 20 4d 4f 44 45 58 20 49 4e 54 4f 20 41 2e 0d 0a 3b 20 57 48 ┆ ; VARIABLE MODEX INTO A. ; WH┆ 0x2dc0…2de0 45 4e 20 43 41 4c 4c 45 44 20 41 3d 20 54 45 52 4d 49 4e 41 4c 20 4e 4f 2e 0d 0a 0d 0a 52 44 4d ┆EN CALLED A= TERMINAL NO. RDM┆ 0x2de0…2e00 4f 44 45 3a 09 4c 58 49 09 42 43 2c 4d 4f 44 45 31 0d 0a 09 43 41 4c 4c 09 42 43 41 44 44 0d 0a ┆ODE: LXI BC,MODE1 CALL BCADD ┆ 0x2e00…2e20 (23,) 09 4c 44 41 58 09 42 43 0d 0a 09 52 45 54 0d 0a 0d 0a 0d 0a 3b 20 52 4f 55 54 49 4e 45 20 54 4f ┆ LDAX BC RET ; ROUTINE TO┆ 0x2e20…2e40 20 50 55 54 20 4c 4f 47 49 43 41 4c 20 31 22 20 49 4e 54 4f 20 54 48 45 20 56 41 52 49 41 42 4c ┆ PUT LOGICAL 1" INTO THE VARIABL┆ 0x2e40…2e60 45 20 53 54 41 46 58 0d 0a 3b 20 57 48 45 4e 20 43 41 4c 4c 45 44 20 41 3d 20 54 45 52 4d 49 4e ┆E STAFX ; WHEN CALLED A= TERMIN┆ 0x2e60…2e80 41 4c 20 4e 4f 2e 0d 0a 0d 0a 57 52 53 46 3a 09 4c 58 49 09 42 43 2c 53 54 41 46 31 0d 0a 09 43 ┆AL NO. WRSF: LXI BC,STAF1 C┆ 0x2e80…2ea0 41 4c 4c 09 42 43 41 44 44 0d 0a 09 4d 56 49 09 41 2c 31 0d 0a 09 53 54 41 58 09 42 43 0d 0a 09 ┆ALL BCADD MVI A,1 STAX BC ┆ 0x2ea0…2ec0 52 45 54 0d 0a 0d 0a 0d 0a 3b 20 52 4f 55 54 49 4e 45 20 54 4f 20 50 55 54 20 4c 4f 47 49 43 41 ┆RET ; ROUTINE TO PUT LOGICA┆ 0x2ec0…2ee0 4c 20 22 30 22 20 49 4e 54 4f 20 54 48 45 20 56 41 52 49 41 42 4c 45 20 22 53 54 41 46 58 22 0d ┆L "0" INTO THE VARIABLE "STAFX" ┆ 0x2ee0…2f00 0a 3b 20 57 48 45 4e 20 43 41 4c 4c 45 44 20 41 3d 20 54 45 52 4d 49 4e 41 4c 20 4e 55 4d 42 45 ┆ ; WHEN CALLED A= TERMINAL NUMBE┆ 0x2f00…2f20 52 2e 0d 0a 0d 0a 57 52 53 43 3a 09 4c 58 49 09 42 43 2c 53 54 41 46 31 09 3b 0d 0a 09 43 41 4c ┆R. WRSC: LXI BC,STAF1 ; CAL┆ 0x2f20…2f40 4c 09 42 43 41 44 44 09 3b 0d 0a 09 58 52 41 09 41 09 3b 0d 0a 09 53 54 41 58 09 42 43 09 3b 0d ┆L BCADD ; XRA A ; STAX BC ; ┆ 0x2f40…2f60 0a 09 52 45 54 09 09 3b 0d 0a 0d 0a 0d 0a 3b 20 52 4f 55 54 49 4e 45 20 54 4f 20 52 45 41 44 20 ┆ RET ; ; ROUTINE TO READ ┆ 0x2f60…2f80 54 48 45 20 43 4f 4e 54 45 4e 54 53 20 4f 46 20 53 54 41 46 58 20 49 4e 54 4f 20 22 41 22 2e 0d ┆THE CONTENTS OF STAFX INTO "A". ┆ 0x2f80…2fa0 0a 3b 20 57 48 45 4e 20 43 41 4c 4c 45 44 20 41 3d 20 54 45 52 4d 49 4e 41 4c 20 4e 4f 2e 0d 0a ┆ ; WHEN CALLED A= TERMINAL NO. ┆ 0x2fa0…2fc0 0d 0a 52 44 53 46 3a 09 4c 58 49 09 42 43 2c 53 54 41 46 31 0d 0a 09 43 41 4c 4c 09 42 43 41 44 ┆ RDSF: LXI BC,STAF1 CALL BCAD┆ 0x2fc0…2fd3 44 0d 0a 09 4c 44 41 58 09 42 43 0d 0a 09 52 45 54 0d 0a ┆D LDAX BC RET ┆ 0x2fd3…2fd6 FormFeed { 0x2fd3…2fd6 0c 83 9e ┆ ┆ 0x2fd3…2fd6 } 0x2fd6…2fe0 3b 20 52 4f 55 54 49 4e 45 20 ┆; ROUTINE ┆ 0x2fe0…3000 54 4f 20 57 52 49 54 45 20 54 48 45 20 43 4f 4e 54 45 4e 54 53 20 4f 46 20 48 22 0d 0a 3b 20 49 ┆TO WRITE THE CONTENTS OF H" ; I┆ 0x3000…3020 (24,) 4e 54 4f 20 54 48 45 20 56 41 52 49 41 42 4c 45 20 53 54 41 42 58 2e 0d 0a 3b 20 41 3d 20 54 45 ┆NTO THE VARIABLE STABX. ; A= TE┆ 0x3020…3040 52 4d 49 4e 41 4c 20 4e 4f 2e 0d 0a 0d 0a 57 52 53 42 3a 09 4c 58 49 09 42 43 2c 53 54 41 42 31 ┆RMINAL NO. WRSB: LXI BC,STAB1┆ 0x3040…3060 0d 0a 09 43 41 4c 4c 09 42 43 41 44 44 0d 0a 09 4d 4f 56 09 41 2c 48 0d 0a 09 53 54 41 58 09 42 ┆ CALL BCADD MOV A,H STAX B┆ 0x3060…3080 43 0d 0a 09 52 45 54 0d 0a 0d 0a 3b 20 52 4f 55 54 49 4e 45 20 54 4f 20 52 45 41 44 20 54 48 45 ┆C RET ; ROUTINE TO READ THE┆ 0x3080…30a0 20 43 4f 4e 54 45 4e 54 53 20 4f 46 20 56 41 52 49 41 42 4c 45 0d 0a 3b 20 53 54 41 42 58 20 49 ┆ CONTENTS OF VARIABLE ; STABX I┆ 0x30a0…30c0 4e 54 4f 20 41 22 2e 0d 0a 3b 20 57 48 45 4e 20 43 41 4c 4c 45 44 20 41 3d 20 54 45 52 4d 49 4e ┆NTO A". ; WHEN CALLED A= TERMIN┆ 0x30c0…30e0 41 4c 20 4e 4f 2e 0d 0a 0d 0a 52 44 53 42 3a 09 4c 58 49 09 42 43 2c 53 54 41 42 31 0d 0a 09 43 ┆AL NO. RDSB: LXI BC,STAB1 C┆ 0x30e0…3100 41 4c 4c 09 42 43 41 44 44 0d 0a 09 4c 44 41 58 09 42 43 0d 0a 09 52 45 54 0d 0a 0d 0a 0d 0a 3b ┆ALL BCADD LDAX BC RET ;┆ 0x3100…3120 20 52 4f 55 54 49 4e 45 20 54 4f 20 54 45 53 54 20 49 46 20 54 48 45 20 43 48 41 52 0d 0a 3b 20 ┆ ROUTINE TO TEST IF THE CHAR ; ┆ 0x3120…3140 28 3c 33 32 29 20 49 4e 20 41 22 20 49 53 20 4f 4e 45 20 4f 46 20 54 48 45 20 53 50 45 43 49 41 ┆(<32) IN A" IS ONE OF THE SPECIA┆ 0x3140…3160 4c 20 0d 0a 3b 20 43 48 41 52 41 43 54 45 52 53 2e 0d 0a 3b 20 54 48 45 20 54 41 42 4c 45 20 4b ┆L ; CHARACTERS. ; THE TABLE K┆ 0x3160…3180 45 59 54 41 42 22 20 49 53 20 55 53 45 44 2e 0d 0a 3b 20 52 45 54 55 52 4e 3a 20 5a 45 52 4f 2d ┆EYTAB" IS USED. ; RETURN: ZERO-┆ 0x3180…31a0 46 4c 41 47 3d 20 30 20 49 46 20 53 50 45 43 20 43 48 41 52 2e 0d 0a 0d 0a 53 50 45 43 48 3a 09 ┆FLAG= 0 IF SPEC CHAR. SPECH: ┆ 0x31a0…31c0 4c 58 49 09 42 43 2c 4b 45 59 54 41 42 0d 0a 09 4d 4f 56 09 48 2c 41 0d 0a 09 41 4e 49 09 33 37 ┆LXI BC,KEYTAB MOV H,A ANI 37┆ 0x31c0…31e0 0d 0a 09 43 41 4c 4c 09 42 43 41 44 44 0d 0a 09 4c 44 41 58 09 42 43 0d 0a 09 43 50 49 09 33 37 ┆ CALL BCADD LDAX BC CPI 37┆ 0x31e0…31ec 37 0d 0a 09 52 45 54 0d 0a 3b 0d 0a ┆7 RET ; ┆ 0x31ec…31ef FormFeed { 0x31ec…31ef 0c 82 a9 ┆ ┆ 0x31ec…31ef } 0x31ef…3200 52 4f 55 54 49 4e 45 20 54 4f 20 53 45 52 56 49 43 ┆ROUTINE TO SERVIC┆ 0x3200…3220 (25,) 45 20 41 20 54 45 52 4d 49 4e 41 4c 2e 0d 0a 3b 20 56 32 34 20 45 52 52 4f 52 53 20 41 52 45 20 ┆E A TERMINAL. ; V24 ERRORS ARE ┆ 0x3220…3240 55 50 44 41 54 45 44 20 49 4e 20 53 54 41 42 58 2e 0d 0a 3b 20 54 45 53 54 20 52 58 52 44 59 2e ┆UPDATED IN STABX. ; TEST RXRDY.┆ 0x3240…3260 0d 0a 3b 20 54 45 53 54 20 54 58 52 44 59 2e 42 55 46 46 45 52 20 45 4d 50 54 59 2e 0d 0a 3b 20 ┆ ; TEST TXRDY.BUFFER EMPTY. ; ┆ 0x3260…3280 44 45 56 4e 4f 3d 20 54 45 52 4d 49 4e 41 4c 20 4e 4f 2e 0d 0a 3b 20 54 45 4d 50 53 20 41 4e 44 ┆DEVNO= TERMINAL NO. ; TEMPS AND┆ 0x3280…32a0 20 54 45 4d 50 44 20 41 52 45 20 55 53 45 44 20 54 4f 20 53 41 56 45 0d 0a 3b 20 53 54 41 54 55 ┆ TEMPD ARE USED TO SAVE ; STATU┆ 0x32a0…32c0 53 20 41 4e 44 20 44 41 54 41 2e 0d 0a 0d 0a 54 53 45 52 56 3a 09 4c 44 41 09 44 45 56 4e 4f 0d ┆S AND DATA. TSERV: LDA DEVNO ┆ 0x32c0…32e0 0a 09 43 41 4c 4c 09 52 53 54 41 54 09 09 3b 20 49 4e 50 55 54 20 53 54 41 54 55 53 2e 0d 0a 09 ┆ CALL RSTAT ; INPUT STATUS. ┆ 0x32e0…3300 53 54 41 09 54 45 4d 50 53 09 09 3b 20 46 52 4f 4d 20 55 41 52 54 2e 0d 0a 09 4c 44 41 09 44 45 ┆STA TEMPS ; FROM UART. LDA DE┆ 0x3300…3320 56 4e 4f 0d 0a 09 43 41 4c 4c 09 52 44 53 46 0d 0a 09 43 50 49 09 30 0d 0a 09 4a 4e 5a 09 54 53 ┆VNO CALL RDSF CPI 0 JNZ TS┆ 0x3320…3340 45 52 31 09 3b 20 4e 4f 54 20 52 45 41 44 59 20 54 4f 20 41 43 43 45 50 54 20 43 48 41 4e 47 45 ┆ER1 ; NOT READY TO ACCEPT CHANGE┆ 0x3340…3360 20 4f 46 20 53 54 41 54 55 53 2e 0d 0a 0d 0a 09 4c 44 41 09 54 45 4d 50 53 0d 0a 09 41 4e 49 09 ┆ OF STATUS. LDA TEMPS ANI ┆ 0x3360…3380 33 37 30 09 3b 40 40 20 43 48 41 4e 47 45 44 20 38 31 2e 31 31 2e 30 39 0d 0a 09 43 50 49 09 33 ┆370 ;@@ CHANGED 81.11.09 CPI 3┆ 0x3380…33a0 30 30 0d 0a 09 4a 5a 09 43 56 32 34 45 09 3b 20 43 4c 45 41 52 20 56 32 34 20 45 52 52 4f 52 2e ┆00 JZ CV24E ; CLEAR V24 ERROR.┆ 0x33a0…33c0 0d 0a 0d 0a 09 44 49 0d 0a 09 4c 44 41 09 44 45 56 4e 4f 0d 0a 09 43 41 4c 4c 09 52 44 53 42 0d ┆ DI LDA DEVNO CALL RDSB ┆ 0x33c0…33e0 0a 09 41 4e 49 09 36 0d 0a 09 4d 4f 56 09 48 2c 41 0d 0a 09 49 4e 52 09 48 0d 0a 09 4c 44 41 09 ┆ ANI 6 MOV H,A INR H LDA ┆ 0x33e0…3400 44 45 56 4e 4f 0d 0a 09 43 41 4c 4c 09 57 52 53 42 09 3b 20 53 45 54 20 56 32 34 20 45 52 52 4f ┆DEVNO CALL WRSB ; SET V24 ERRO┆ 0x3400…3420 (26,) 52 2e 0d 0a 09 4c 44 41 09 44 45 56 4e 4f 09 3b 40 40 20 43 48 41 4e 47 45 44 20 38 31 2e 31 31 ┆R. LDA DEVNO ;@@ CHANGED 81.11┆ 0x3420…3440 2e 30 39 20 49 4e 49 54 20 44 45 56 4e 4f 0d 0a 09 43 41 4c 4c 09 54 49 4e 49 54 09 3b 40 40 0d ┆.09 INIT DEVNO CALL TINIT ;@@ ┆ 0x3440…3460 0a 09 4c 44 41 09 44 45 56 4e 4f 0d 0a 09 43 41 4c 4c 09 52 44 4d 4f 44 45 0d 0a 09 43 50 49 09 ┆ LDA DEVNO CALL RDMODE CPI ┆ 0x3460…3480 31 09 3b 20 53 4b 49 50 20 4d 4f 44 45 2e 0d 0a 09 4a 4e 5a 09 4e 4f 53 4b 49 50 0d 0a 0d 0a 09 ┆1 ; SKIP MODE. JNZ NOSKIP ┆ 0x3480…34a0 45 49 0d 0a 09 4a 4d 50 09 54 53 45 52 31 0d 0a 0d 0a 4e 4f 53 4b 49 50 3a 09 4c 44 41 09 44 45 ┆EI JMP TSER1 NOSKIP: LDA DE┆ 0x34a0…34c0 56 4e 4f 0d 0a 09 43 41 4c 4c 09 57 52 53 46 09 3b 20 53 45 54 20 58 4d 54 20 53 54 41 54 55 53 ┆VNO CALL WRSF ; SET XMT STATUS┆ 0x34c0…34e0 2e 0d 0a 09 4d 56 49 09 48 2c 31 0d 0a 09 4c 44 41 09 44 45 56 4e 4f 0d 0a 09 43 41 4c 4c 09 57 ┆. MVI H,1 LDA DEVNO CALL W┆ 0x34e0…3500 52 4d 4f 44 45 09 3b 20 53 45 54 20 53 4b 49 50 0d 0a 09 45 49 0d 0a 09 4a 4d 50 09 54 53 45 52 ┆RMODE ; SET SKIP EI JMP TSER┆ 0x3500…3503 31 0d 0a ┆1 ┆ 0x3503…3506 FormFeed { 0x3503…3506 0c 83 95 ┆ ┆ 0x3503…3506 } 0x3506…3520 43 56 32 34 45 3a 09 4c 44 41 09 44 45 56 4e 4f 0d 0a 09 43 41 4c 4c 09 52 44 ┆CV24E: LDA DEVNO CALL RD┆ 0x3520…3540 53 42 0d 0a 09 41 4e 49 09 36 0d 0a 09 4d 4f 56 09 48 2c 41 0d 0a 09 4c 44 41 09 44 45 56 4e 4f ┆SB ANI 6 MOV H,A LDA DEVNO┆ 0x3540…3560 0d 0a 09 43 41 4c 4c 09 57 52 53 42 09 3b 20 43 4c 45 41 52 20 56 32 34 20 45 52 52 4f 52 2e 0d ┆ CALL WRSB ; CLEAR V24 ERROR. ┆ 0x3560…3580 0a 54 53 45 52 31 3a 0d 0a 09 4c 44 41 09 54 45 4d 50 53 0d 0a 09 41 4e 49 09 32 09 09 3b 20 54 ┆ TSER1: LDA TEMPS ANI 2 ; T┆ 0x3580…35a0 45 53 54 20 46 4f 52 20 52 58 52 44 59 3d 31 2e 0d 0a 09 4a 5a 09 4e 4f 52 58 52 0d 0a 0d 0a 09 ┆EST FOR RXRDY=1. JZ NORXR ┆ 0x35a0…35c0 4c 44 41 09 44 45 56 4e 4f 0d 0a 09 43 41 4c 4c 09 52 44 41 54 41 09 09 3b 20 41 3d 20 44 41 54 ┆LDA DEVNO CALL RDATA ; A= DAT┆ 0x35c0…35e0 41 20 42 59 54 45 2e 0d 0a 09 53 54 41 09 54 45 4d 50 44 0d 0a 09 44 49 0d 0a 09 4c 44 41 09 44 ┆A BYTE. STA TEMPD DI LDA D┆ 0x35e0…3600 45 56 4e 4f 0d 0a 09 43 41 4c 4c 09 52 44 4d 4f 44 45 09 3b 20 47 45 54 20 4d 4f 44 45 2e 0d 0a ┆EVNO CALL RDMODE ; GET MODE. ┆ 0x3600…3620 (27,) 09 41 4e 49 09 33 0d 0a 09 43 50 49 09 30 0d 0a 09 4a 5a 09 43 4f 4e 4d 4f 44 45 09 09 3b 20 30 ┆ ANI 3 CPI 0 JZ CONMODE ; 0┆ 0x3620…3640 30 3d 20 43 4f 4e 54 52 4f 4c 20 4d 4f 44 45 2e 0d 0a 0d 0a 09 43 50 49 09 31 0d 0a 09 4a 5a 09 ┆0= CONTROL MODE. CPI 1 JZ ┆ 0x3640…3660 4e 4f 52 58 52 09 09 3b 20 30 31 3d 20 53 4b 49 50 20 4d 4f 44 45 2e 0d 0a 0d 0a 09 4c 44 41 09 ┆NORXR ; 01= SKIP MODE. LDA ┆ 0x3660…3680 54 45 4d 50 44 09 09 3b 20 45 4c 53 45 20 44 41 54 41 20 4d 4f 44 45 2e 0d 0a 09 4d 4f 56 09 48 ┆TEMPD ; ELSE DATA MODE. MOV H┆ 0x3680…36a0 2c 41 0d 0a 09 41 4e 49 09 33 34 30 09 09 3b 20 54 45 53 54 20 43 48 41 52 20 3c 33 32 2e 0d 0a ┆,A ANI 340 ; TEST CHAR <32. ┆ 0x36a0…36c0 09 4d 4f 56 09 41 2c 48 0d 0a 09 4a 5a 09 4c 45 53 53 0d 0a 0d 0a 53 54 43 48 52 3a 09 4c 44 41 ┆ MOV A,H JZ LESS STCHR: LDA┆ 0x36c0…36e0 09 44 45 56 4e 4f 09 09 3b 20 53 54 4f 52 45 20 43 48 41 52 2e 0d 0a 09 4d 56 49 09 4c 2c 31 09 ┆ DEVNO ; STORE CHAR. MVI L,1 ┆ 0x36e0…3700 09 3b 20 49 4e 54 4f 20 52 45 43 20 42 55 46 46 45 52 2e 0d 0a 09 44 49 0d 0a 09 43 41 4c 4c 09 ┆ ; INTO REC BUFFER. DI CALL ┆ 0x3700…3720 42 36 0d 0a 09 45 49 0d 0a 09 4a 4d 50 09 4e 4f 52 58 52 0d 0a 0d 0a 4c 45 53 53 3a 09 43 41 4c ┆B6 EI JMP NORXR LESS: CAL┆ 0x3720…3740 4c 09 53 50 45 43 48 09 09 3b 20 54 45 53 54 20 46 4f 52 20 53 50 45 43 20 43 48 41 52 2e 0d 0a ┆L SPECH ; TEST FOR SPEC CHAR. ┆ 0x3740…3760 09 4a 4e 5a 09 4e 4f 52 58 52 0d 0a 0d 0a 53 45 54 53 4b 3a 09 4d 56 49 09 48 2c 31 09 09 3b 20 ┆ JNZ NORXR SETSK: MVI H,1 ; ┆ 0x3760…3780 53 45 54 20 53 4b 49 50 20 4d 4f 44 45 2e 0d 0a 09 4c 44 41 09 44 45 56 4e 4f 0d 0a 09 43 41 4c ┆SET SKIP MODE. LDA DEVNO CAL┆ 0x3780…37a0 4c 09 57 52 4d 4f 44 45 0d 0a 09 4c 44 41 09 54 45 4d 50 44 0d 0a 09 4d 4f 56 09 48 2c 41 0d 0a ┆L WRMODE LDA TEMPD MOV H,A ┆ 0x37a0…37ac 09 4a 4d 50 09 53 54 43 48 52 0d 0a ┆ JMP STCHR ┆ 0x37ac…37af FormFeed { 0x37ac…37af 0c 83 95 ┆ ┆ 0x37ac…37af } 0x37af…37c0 0d 0a 43 4f 4e 4d 4f 44 45 3a 4c 44 41 09 54 45 4d ┆ CONMODE:LDA TEM┆ 0x37c0…37e0 50 44 09 3b 20 43 4f 4e 54 52 4f 4c 20 4d 4f 44 45 3a 0d 0a 09 4d 4f 56 09 48 2c 41 09 3b 20 20 ┆PD ; CONTROL MODE: MOV H,A ; ┆ 0x37e0…3800 43 48 41 52 20 3c 33 32 20 41 4e 44 20 4e 4f 54 20 53 50 45 43 20 54 48 45 4e 0d 0a 09 41 4e 49 ┆CHAR <32 AND NOT SPEC THEN ANI┆ 0x3800…3820 (28,) 09 33 34 30 09 3b 20 20 20 20 20 53 54 4f 52 45 20 49 4e 54 4f 20 52 45 43 20 42 55 46 3b 0d 0a ┆ 340 ; STORE INTO REC BUF; ┆ 0x3820…3840 09 4a 4e 5a 09 4e 4f 52 58 52 09 3b 20 20 43 48 41 52 20 3e 3d 33 32 20 54 48 45 4e 20 53 4b 49 ┆ JNZ NORXR ; CHAR >=32 THEN SKI┆ 0x3840…3860 50 20 43 48 41 52 2e 0d 0a 0d 0a 09 4d 4f 56 09 41 2c 48 0d 0a 09 43 41 4c 4c 09 53 50 45 43 48 ┆P CHAR. MOV A,H CALL SPECH┆ 0x3860…3880 0d 0a 09 4a 4e 5a 09 4e 4f 52 58 52 0d 0a 0d 0a 09 4a 4d 50 09 53 45 54 53 4b 0d 0a 0d 0a 4e 4f ┆ JNZ NORXR JMP SETSK NO┆ 0x3880…38a0 52 58 52 3a 09 45 49 0d 0a 09 4c 44 41 09 44 45 56 4e 4f 0d 0a 09 4d 56 49 09 4c 2c 30 0d 0a 09 ┆RXR: EI LDA DEVNO MVI L,0 ┆ 0x38a0…38c0 44 49 0d 0a 09 43 41 4c 4c 09 42 34 09 09 3b 20 54 45 53 54 20 58 4d 54 2d 20 42 55 46 46 45 52 ┆DI CALL B4 ; TEST XMT- BUFFER┆ 0x38c0…38e0 20 45 4d 50 54 59 3b 0d 0a 09 45 49 0d 0a 09 52 5a 0d 0a 0d 0a 09 4c 44 41 09 54 45 4d 50 53 0d ┆ EMPTY; EI RZ LDA TEMPS ┆ 0x38e0…3900 0a 09 41 4e 49 09 31 0d 0a 09 52 5a 09 09 09 3b 20 54 45 53 54 20 54 58 52 44 59 3d 31 2e 0d 0a ┆ ANI 1 RZ ; TEST TXRDY=1. ┆ 0x3900…3920 0d 0a 09 4c 44 41 09 44 45 56 4e 4f 0d 0a 09 4d 56 49 09 4c 2c 30 0d 0a 09 44 49 0d 0a 09 43 41 ┆ LDA DEVNO MVI L,0 DI CA┆ 0x3920…3940 4c 4c 09 42 31 32 09 09 3b 20 52 45 41 44 20 41 20 43 48 41 52 20 46 52 4f 4d 0d 0a 09 4c 44 41 ┆LL B12 ; READ A CHAR FROM LDA┆ 0x3940…3960 09 44 45 56 4e 4f 09 09 3b 20 58 4d 54 20 42 55 46 20 41 4e 44 0d 0a 09 43 41 4c 4c 09 57 4f 55 ┆ DEVNO ; XMT BUF AND CALL WOU┆ 0x3960…3980 54 09 09 3b 20 4f 55 54 50 55 54 20 54 4f 20 55 41 52 54 2e 0d 0a 09 45 49 09 09 09 3b 0d 0a 09 ┆T ; OUTPUT TO UART. EI ; ┆ 0x3980…3985 52 45 54 0d 0a ┆RET ┆ 0x3985…3988 FormFeed { 0x3985…3988 0c 82 97 ┆ ┆ 0x3985…3988 } 0x3988…39a0 0d 0a 3b 20 52 4f 55 54 49 4e 45 20 54 4f 20 54 45 53 54 20 54 48 41 54 ┆ ; ROUTINE TO TEST THAT┆ 0x39a0…39c0 20 54 48 45 20 32 20 42 59 54 45 53 20 49 4e 20 42 55 46 31 0d 0a 3b 20 41 52 45 20 47 52 45 41 ┆ THE 2 BYTES IN BUF1 ; ARE GREA┆ 0x39c0…39e0 54 45 52 20 54 48 41 4e 20 54 48 45 20 32 20 42 59 54 45 53 20 49 4e 20 42 55 46 32 2e 0d 0a 3b ┆TER THAN THE 2 BYTES IN BUF2. ;┆ 0x39e0…3a00 20 57 48 45 4e 20 43 41 4c 4c 45 44 3a 0d 0a 3b 09 42 43 3d 50 4f 49 4e 54 45 52 20 54 4f 20 42 ┆ WHEN CALLED: ; BC=POINTER TO B┆ 0x3a00…3a20 (29,) 55 46 31 0d 0a 3b 09 44 45 3d 50 4f 49 4e 54 45 52 20 54 4f 20 42 55 46 32 0d 0a 3b 52 45 54 55 ┆UF1 ; DE=POINTER TO BUF2 ;RETU┆ 0x3a20…3a40 52 4e 3a 20 43 59 3d 31 20 49 46 20 42 55 46 31 3e 42 55 46 32 2e 0d 0a 0d 0a 47 52 45 41 54 3a ┆RN: CY=1 IF BUF1>BUF2. GREAT:┆ 0x3a40…3a60 09 50 55 53 48 09 48 4c 0d 0a 09 49 4e 58 09 42 43 09 3b 20 4d 4f 53 54 20 53 49 47 4e 49 46 49 ┆ PUSH HL INX BC ; MOST SIGNIFI┆ 0x3a60…3a80 43 41 4e 54 0d 0a 09 49 4e 58 09 44 45 09 3b 20 42 59 54 45 53 2e 0d 0a 09 4c 44 41 58 09 42 43 ┆CANT INX DE ; BYTES. LDAX BC┆ 0x3a80…3aa0 0d 0a 09 4d 4f 56 09 48 2c 41 0d 0a 09 4c 44 41 58 09 44 45 0d 0a 09 43 4d 50 09 48 0d 0a 09 4a ┆ MOV H,A LDAX DE CMP H J┆ 0x3aa0…3ac0 43 09 47 52 31 09 3b 20 4a 55 4d 50 20 49 46 20 42 55 46 31 28 4d 53 42 29 3e 0d 0a 09 4a 4e 5a ┆C GR1 ; JUMP IF BUF1(MSB)> JNZ┆ 0x3ac0…3ae0 09 47 52 31 09 3b 20 42 55 46 32 28 4d 53 42 29 0d 0a 0d 0a 09 44 43 58 09 42 43 0d 0a 09 44 43 ┆ GR1 ; BUF2(MSB) DCX BC DC┆ 0x3ae0…3b00 58 09 44 45 0d 0a 09 4c 44 41 58 09 42 43 0d 0a 09 4d 4f 56 09 48 2c 41 0d 0a 09 4c 44 41 58 09 ┆X DE LDAX BC MOV H,A LDAX ┆ 0x3b00…3b20 44 45 0d 0a 09 43 4d 50 09 48 0d 0a 09 50 4f 50 09 48 4c 0d 0a 09 52 45 54 0d 0a 47 52 31 3a 09 ┆DE CMP H POP HL RET GR1: ┆ 0x3b20…3b40 44 43 58 09 42 43 0d 0a 09 44 43 58 09 44 45 0d 0a 09 50 4f 50 09 48 4c 0d 0a 09 52 45 54 0d 0a ┆DCX BC DCX DE POP HL RET ┆ 0x3b40…3b43 FormFeed { 0x3b40…3b43 0c 82 85 ┆ ┆ 0x3b40…3b43 } 0x3b43…3b60 3b 20 52 4f 55 54 49 4e 45 20 54 4f 20 54 45 53 54 20 54 48 41 54 20 54 48 45 20 50 52 ┆; ROUTINE TO TEST THAT THE PR┆ 0x3b60…3b80 49 4e 54 45 52 20 42 55 46 46 45 52 20 49 53 0d 0a 3b 20 4d 4f 52 45 20 54 48 41 4e 20 48 41 4c ┆INTER BUFFER IS ; MORE THAN HAL┆ 0x3b80…3ba0 46 20 46 55 4c 4c 3b 0d 0a 3b 20 4c 45 4e 47 54 48 20 4f 46 20 42 55 46 46 45 52 20 42 35 58 53 ┆F FULL; ; LENGTH OF BUFFER B5XS┆ 0x3ba0…3bc0 54 41 52 54 2d 42 34 58 53 54 41 52 54 0d 0a 3b 20 52 45 54 55 52 4e 3a 20 43 59 3d 31 20 49 46 ┆TART-B4XSTART ; RETURN: CY=1 IF┆ 0x3bc0…3be0 20 4d 4f 52 45 20 54 48 41 4e 20 48 41 4c 46 20 46 55 4c 4c 2e 0d 0a 0d 0a 48 46 55 4c 4c 3a 09 ┆ MORE THAN HALF FULL. HFULL: ┆ 0x3be0…3c00 50 55 53 48 09 44 45 0d 0a 09 50 55 53 48 09 42 43 0d 0a 09 50 55 53 48 09 48 4c 0d 0a 09 4c 58 ┆PUSH DE PUSH BC PUSH HL LX┆ 0x3c00…3c20 (30,) 49 09 44 45 2c 42 34 58 49 4e 50 0d 0a 09 4c 58 49 09 42 43 2c 42 34 58 4f 55 54 50 0d 0a 09 43 ┆I DE,B4XINP LXI BC,B4XOUTP C┆ 0x3c20…3c40 41 4c 4c 09 47 52 45 41 54 09 3b 20 4f 55 54 50 55 54 20 50 4f 49 4e 54 45 52 20 3e 0d 0a 09 4a ┆ALL GREAT ; OUTPUT POINTER > J┆ 0x3c40…3c60 43 09 4f 47 52 45 41 54 09 3b 20 49 4e 50 55 54 20 50 4f 49 4e 54 45 52 2e 0d 0a 0d 0a 09 58 52 ┆C OGREAT ; INPUT POINTER. XR┆ 0x3c60…3c80 41 09 41 09 3b 20 43 4c 45 41 52 20 43 41 52 52 59 0d 0a 09 4c 44 41 58 09 42 43 0d 0a 09 4d 4f ┆A A ; CLEAR CARRY LDAX BC MO┆ 0x3c80…3ca0 56 09 48 2c 41 0d 0a 09 4c 44 41 58 09 44 45 0d 0a 09 53 42 42 09 48 0d 0a 09 4d 4f 56 09 4c 2c ┆V H,A LDAX DE SBB H MOV L,┆ 0x3ca0…3cc0 41 0d 0a 09 49 4e 58 09 42 43 0d 0a 09 49 4e 58 09 44 45 0d 0a 09 4c 44 41 58 09 42 43 0d 0a 09 ┆A INX BC INX DE LDAX BC ┆ 0x3cc0…3ce0 4d 4f 56 09 48 2c 41 0d 0a 09 4c 44 41 58 09 44 45 0d 0a 09 53 42 42 09 48 0d 0a 09 4d 4f 56 09 ┆MOV H,A LDAX DE SBB H MOV ┆ 0x3ce0…3d00 48 2c 41 09 3b 20 48 4c 3d 20 52 45 53 55 4c 54 0d 0a 09 50 55 53 48 09 48 4c 0d 0a 09 50 4f 50 ┆H,A ; HL= RESULT PUSH HL POP┆ 0x3d00…3d20 09 42 43 09 3b 20 42 43 3d 20 42 55 46 46 45 52 20 43 4f 4e 54 45 4e 54 53 2e 0d 0a 09 4c 58 49 ┆ BC ; BC= BUFFER CONTENTS. LXI┆ 0x3d20…3d40 09 44 45 2c 28 42 34 52 53 54 41 52 54 2d 42 34 58 53 54 41 52 54 29 2f 32 0d 0a 09 4d 4f 56 09 ┆ DE,(B4RSTART-B4XSTART)/2 MOV ┆ 0x3d40…3d60 41 2c 45 0d 0a 09 43 4d 50 09 43 0d 0a 09 50 4f 50 09 48 4c 09 3b 20 48 41 4c 46 20 46 55 4c 4c ┆A,E CMP C POP HL ; HALF FULL┆ 0x3d60…3d7a 0d 0a 09 50 4f 50 09 42 43 0d 0a 09 50 4f 50 09 44 45 0d 0a 09 52 45 54 0d 0a ┆ POP BC POP DE RET ┆ 0x3d7a…3d7d FormFeed { 0x3d7a…3d7d 0c 82 b2 ┆ ┆ 0x3d7a…3d7d } 0x3d7d…3d80 0d 0a 4f ┆ O┆ 0x3d80…3da0 47 52 45 41 54 3a 09 58 52 41 09 41 0d 0a 09 4c 44 41 58 09 44 45 0d 0a 09 4d 4f 56 09 48 2c 41 ┆GREAT: XRA A LDAX DE MOV H,A┆ 0x3da0…3dc0 0d 0a 09 4c 44 41 58 09 42 43 0d 0a 09 53 42 42 09 48 0d 0a 09 4d 4f 56 09 4c 2c 41 0d 0a 09 49 ┆ LDAX BC SBB H MOV L,A I┆ 0x3dc0…3de0 4e 58 09 42 43 0d 0a 09 49 4e 58 09 44 45 0d 0a 09 4c 44 41 58 09 44 45 0d 0a 09 4d 4f 56 09 48 ┆NX BC INX DE LDAX DE MOV H┆ 0x3de0…3e00 2c 41 0d 0a 09 4c 44 41 58 09 42 43 0d 0a 09 53 42 42 09 48 0d 0a 09 4d 4f 56 09 48 2c 41 09 3b ┆,A LDAX BC SBB H MOV H,A ;┆ 0x3e00…3e20 (31,) 20 48 4c 3d 20 52 45 53 55 4c 54 0d 0a 09 58 43 48 47 0d 0a 09 4c 58 49 09 42 43 2c 28 42 34 52 ┆ HL= RESULT XCHG LXI BC,(B4R┆ 0x3e20…3e40 53 54 41 52 54 2d 42 34 58 53 54 41 52 54 29 2f 32 0d 0a 09 4d 4f 56 09 41 2c 45 0d 0a 09 43 4d ┆START-B4XSTART)/2 MOV A,E CM┆ 0x3e40…3e60 50 09 43 0d 0a 09 50 4f 50 09 48 4c 0d 0a 09 50 4f 50 09 42 43 0d 0a 09 50 4f 50 09 44 45 0d 0a ┆P C POP HL POP BC POP DE ┆ 0x3e60…3e66 09 52 45 54 0d 0a ┆ RET ┆ 0x3e66…3e69 FormFeed { 0x3e66…3e69 0c 81 bd ┆ ┆ 0x3e66…3e69 } 0x3e69…3e80 0d 0a 3b 20 52 4f 55 54 49 4e 45 20 54 4f 20 53 45 52 56 49 43 45 20 ┆ ; ROUTINE TO SERVICE ┆ 0x3e80…3ea0 54 48 45 20 53 45 52 49 41 4c 20 50 52 49 4e 54 45 52 20 55 41 52 54 2e 0d 0a 3b 20 56 32 34 20 ┆THE SERIAL PRINTER UART. ; V24 ┆ 0x3ea0…3ec0 45 52 52 4f 52 20 41 52 45 20 55 50 44 41 54 45 44 20 49 4e 20 53 54 41 42 50 2e 0d 0a 3b 20 49 ┆ERROR ARE UPDATED IN STABP. ; I┆ 0x3ec0…3ee0 46 20 46 49 46 4f 20 28 42 34 58 53 54 41 52 54 29 20 49 53 20 45 4d 50 54 59 20 54 48 45 4e 20 ┆F FIFO (B4XSTART) IS EMPTY THEN ┆ 0x3ee0…3f00 52 45 41 44 59 0d 0a 3b 20 53 54 41 54 55 53 20 49 53 20 54 52 41 4e 53 4d 49 54 54 45 44 2e 0d ┆READY ; STATUS IS TRANSMITTED. ┆ 0x3f00…3f20 0a 3b 20 43 48 41 52 20 46 52 4f 4d 20 46 49 46 4f 20 49 53 20 54 52 41 4e 53 46 45 52 52 45 44 ┆ ; CHAR FROM FIFO IS TRANSFERRED┆ 0x3f20…3f40 20 54 4f 20 55 41 52 54 0d 0a 3b 20 57 48 45 4e 20 54 58 45 4d 50 54 59 2e 0d 0a 0d 0a 50 44 45 ┆ TO UART ; WHEN TXEMPTY. PDE┆ 0x3f40…3f60 56 3d 09 33 09 3b 20 50 52 49 4e 54 45 52 20 54 45 52 4d 49 4e 41 4c 20 4e 4f 2e 0d 0a 0d 0a 50 ┆V= 3 ; PRINTER TERMINAL NO. P┆ 0x3f60…3f80 53 45 52 56 3a 09 4c 44 41 09 50 52 49 4e 54 2b 31 0d 0a 09 41 4e 49 09 32 30 30 09 3b 2a 2a 20 ┆SERV: LDA PRINT+1 ANI 200 ;** ┆ 0x3f80…3fa0 54 45 53 54 20 56 32 34 20 45 52 52 4f 52 2e 0d 0a 09 43 50 49 09 32 30 30 09 3b 2a 2a 20 4e 4f ┆TEST V24 ERROR. CPI 200 ;** NO┆ 0x3fa0…3fc0 54 49 43 45 3a 20 42 59 53 59 20 49 53 20 49 4e 50 55 54 20 54 4f 20 44 41 54 41 20 43 41 52 52 ┆TICE: BYSY IS INPUT TO DATA CARR┆ 0x3fc0…3fe0 49 45 52 20 44 45 54 45 43 54 0d 0a 09 4a 5a 09 50 4e 4f 56 32 34 0d 0a 0d 0a 09 4c 44 41 09 53 ┆IER DETECT JZ PNOV24 LDA S┆ 0x3fe0…4000 54 41 42 50 0d 0a 09 41 4e 49 09 36 09 3b 20 53 45 54 20 31 3c 30 2e 0d 0a 09 49 4e 52 09 41 0d ┆TABP ANI 6 ; SET 1<0. INR A ┆ 0x4000…4020 (32,) 0a 09 53 54 41 09 53 54 41 42 50 0d 0a 09 4a 4d 50 09 50 53 45 52 31 0d 0a 0d 0a 50 4e 4f 56 32 ┆ STA STABP JMP PSER1 PNOV2┆ 0x4020…4040 34 3a 09 4c 44 41 09 53 54 41 42 50 0d 0a 09 41 4e 49 09 36 09 3b 20 52 45 53 45 54 20 56 32 34 ┆4: LDA STABP ANI 6 ; RESET V24┆ 0x4040…4060 20 45 52 52 4f 52 2e 0d 0a 09 53 54 41 09 53 54 41 42 50 0d 0a 50 53 45 52 31 3a 09 4c 44 41 09 ┆ ERROR. STA STABP PSER1: LDA ┆ 0x4060…4080 50 52 49 4e 54 2b 31 0d 0a 09 41 4e 49 09 33 30 31 0d 0a 09 43 50 49 09 33 30 31 09 3b 2a 2a 20 ┆PRINT+1 ANI 301 CPI 301 ;** ┆ 0x4080…40a0 54 58 45 4d 50 54 59 2c 20 4e 4f 54 49 43 45 20 42 59 53 59 20 3d 20 44 43 44 3b 0d 0a 09 52 4e ┆TXEMPTY, NOTICE BYSY = DCD; RN┆ 0x40a0…40c0 5a 0d 0a 0d 0a 09 4d 56 49 09 41 2c 50 44 45 56 0d 0a 09 4d 56 49 09 4c 2c 30 0d 0a 09 44 49 09 ┆Z MVI A,PDEV MVI L,0 DI ┆ 0x40c0…40e0 09 3b 0d 0a 09 43 41 4c 4c 09 42 34 09 3b 20 54 45 53 54 20 46 49 46 4f 20 46 4f 52 20 45 4d 50 ┆ ; CALL B4 ; TEST FIFO FOR EMP┆ 0x40e0…4100 54 59 2e 0d 0a 09 4a 4e 5a 09 50 53 45 52 32 09 3b 0d 0a 0d 0a 09 43 41 4c 4c 09 43 4c 42 55 53 ┆TY. JNZ PSER2 ; CALL CLBUS┆ 0x4100…4120 09 3b 20 43 4c 45 41 52 20 42 55 53 59 20 49 46 20 45 4d 50 54 59 0d 0a 09 45 49 0d 0a 09 52 45 ┆ ; CLEAR BUSY IF EMPTY EI RE┆ 0x4120…4123 54 0d 0a ┆T ┆ 0x4123…4126 FormFeed { 0x4123…4126 0c 82 cd ┆ ┆ 0x4123…4126 } 0x4126…4140 50 53 45 52 32 3a 09 4d 56 49 09 41 2c 50 44 45 56 0d 0a 09 4d 56 49 09 4c 2c ┆PSER2: MVI A,PDEV MVI L,┆ 0x4140…4160 30 0d 0a 09 44 49 0d 0a 09 43 41 4c 4c 09 42 31 32 09 3b 20 4f 55 54 50 55 54 20 41 20 42 59 54 ┆0 DI CALL B12 ; OUTPUT A BYT┆ 0x4160…4180 45 20 46 52 4f 4d 0d 0a 09 45 49 0d 0a 09 4d 4f 56 09 41 2c 48 09 3b 20 46 49 46 4f 2e 20 4d 4f ┆E FROM EI MOV A,H ; FIFO. MO┆ 0x4180…41a0 56 45 20 43 48 41 52 0d 0a 09 53 54 41 09 50 52 49 4e 54 09 3b 20 54 4f 20 50 52 49 4e 54 20 55 ┆VE CHAR STA PRINT ; TO PRINT U┆ 0x41a0…41c0 41 52 54 2e 0d 0a 0d 0a 09 4d 56 49 09 41 2c 50 44 45 56 0d 0a 09 4d 56 49 09 4c 2c 30 0d 0a 09 ┆ART. MVI A,PDEV MVI L,0 ┆ 0x41c0…41e0 44 49 09 09 3b 0d 0a 09 43 41 4c 4c 09 42 34 09 3b 20 49 46 20 46 49 46 4f 20 4e 4f 54 20 45 4d ┆DI ; CALL B4 ; IF FIFO NOT EM┆ 0x41e0…4200 50 54 59 20 54 48 45 4e 20 52 45 54 55 52 4e 0d 0a 09 4a 5a 09 50 53 45 52 33 09 3b 0d 0a 09 45 ┆PTY THEN RETURN JZ PSER3 ; E┆ 0x4200…4220 (33,) 49 09 09 3b 0d 0a 09 52 45 54 09 09 3b 0d 0a 0d 0a 50 53 45 52 33 3a 09 43 41 4c 4c 09 43 4c 42 ┆I ; RET ; PSER3: CALL CLB┆ 0x4220…4240 55 53 09 3b 0d 0a 09 4c 44 41 09 47 52 44 59 09 3b 20 46 49 46 4f 20 45 4d 50 54 59 3a 0d 0a 09 ┆US ; LDA GRDY ; FIFO EMPTY: ┆ 0x4240…4260 41 4e 41 09 41 0d 0a 09 45 49 09 09 3b 0d 0a 09 52 5a 09 09 3b 0d 0a 0d 0a 09 44 49 0d 0a 09 4c ┆ANA A EI ; RZ ; DI L┆ 0x4260…4280 44 41 09 53 54 41 42 50 0d 0a 09 41 4e 49 09 33 0d 0a 09 41 44 49 09 34 09 3b 20 53 45 54 20 52 ┆DA STABP ANI 3 ADI 4 ; SET R┆ 0x4280…42a0 45 41 44 59 20 53 54 41 54 55 53 2e 0d 0a 09 53 54 41 09 53 54 41 42 50 0d 0a 09 4d 56 49 09 41 ┆EADY STATUS. STA STABP MVI A┆ 0x42a0…42c0 2c 31 0d 0a 09 53 54 41 09 53 54 41 46 50 0d 0a 09 58 52 41 09 41 0d 0a 09 53 54 41 09 47 52 44 ┆,1 STA STAFP XRA A STA GRD┆ 0x42c0…42e0 59 0d 0a 09 45 49 0d 0a 09 52 45 54 0d 0a 0d 0a 43 4c 42 55 53 3a 09 4c 44 41 09 53 54 41 46 50 ┆Y EI RET CLBUS: LDA STAFP┆ 0x42e0…4300 09 3b 20 43 4c 45 41 52 20 42 55 53 59 20 53 54 41 54 55 53 2e 0d 0a 09 43 50 49 09 30 0d 0a 09 ┆ ; CLEAR BUSY STATUS. CPI 0 ┆ 0x4300…4320 52 4e 5a 09 09 3b 0d 0a 09 4c 44 41 09 53 54 41 42 50 0d 0a 09 41 4e 49 09 35 0d 0a 09 53 54 41 ┆RNZ ; LDA STABP ANI 5 STA┆ 0x4320…4340 09 53 54 41 42 50 0d 0a 09 52 45 54 09 09 3b 20 45 4e 44 20 4f 46 20 43 4c 45 41 52 20 42 55 53 ┆ STABP RET ; END OF CLEAR BUS┆ 0x4340…4345 59 0d 0a 0d 0a ┆Y ┆ 0x4345…4348 FormFeed { 0x4345…4348 0c 82 f1 ┆ ┆ 0x4345…4348 } 0x4348…4360 0d 0a 3b 20 50 52 4f 47 52 41 4d 20 54 4f 20 53 43 41 4e 20 54 48 45 20 ┆ ; PROGRAM TO SCAN THE ┆ 0x4360…4380 54 45 52 4d 49 4e 41 4c 53 0d 0a 3b 20 41 4e 44 20 50 52 49 4e 54 45 52 20 46 4f 52 20 53 45 52 ┆TERMINALS ; AND PRINTER FOR SER┆ 0x4380…43a0 56 49 43 45 2e 0d 0a 0d 0a 50 52 4f 31 3a 09 58 52 41 09 41 09 3b 20 53 54 41 52 54 20 57 49 54 ┆VICE. PRO1: XRA A ; START WIT┆ 0x43a0…43c0 48 20 54 45 52 4d 49 4e 41 4c 31 0d 0a 09 53 54 41 09 44 45 56 4e 4f 0d 0a 09 43 41 4c 4c 09 54 ┆H TERMINAL1 STA DEVNO CALL T┆ 0x43c0…43e0 53 45 52 56 0d 0a 09 4c 44 41 09 44 45 56 4e 4f 0d 0a 09 49 4e 52 09 41 0d 0a 09 43 50 49 09 50 ┆SERV LDA DEVNO INR A CPI P┆ 0x43e0…4400 44 45 56 0d 0a 09 4a 4e 5a 09 50 52 4f 31 2b 31 0d 0a 09 43 41 4c 4c 09 49 58 4d 54 0d 0a 50 52 ┆DEV JNZ PRO1+1 CALL IXMT PR┆ 0x4400…4420 (34,) 4f 32 3a 09 58 52 41 09 41 0d 0a 09 53 54 41 09 44 45 56 4e 4f 0d 0a 09 43 41 4c 4c 09 54 53 45 ┆O2: XRA A STA DEVNO CALL TSE┆ 0x4420…4440 52 56 0d 0a 09 4c 44 41 09 44 45 56 4e 4f 0d 0a 09 49 4e 52 09 41 0d 0a 09 43 50 49 09 50 44 45 ┆RV LDA DEVNO INR A CPI PDE┆ 0x4440…4460 56 0d 0a 09 4a 4e 5a 09 50 52 4f 32 2b 31 0d 0a 09 43 41 4c 4c 09 50 53 45 52 56 0d 0a 0d 0a 3b ┆V JNZ PRO2+1 CALL PSERV ;┆ 0x4460…4480 20 56 32 34 20 45 52 52 4f 52 20 44 45 54 45 43 54 45 44 20 4f 4e 20 54 48 45 20 48 4f 53 54 20 ┆ V24 ERROR DETECTED ON THE HOST ┆ 0x4480…44a0 4c 49 4e 45 20 53 48 4f 55 4c 44 0d 0a 3b 20 52 45 4d 4f 56 45 20 44 41 54 41 20 54 45 52 4d 49 ┆LINE SHOULD ; REMOVE DATA TERMI┆ 0x44a0…44c0 4e 41 4c 20 52 45 41 44 59 20 54 4f 20 54 48 45 20 54 45 52 4d 49 4e 41 4c 53 2e 0d 0a 0d 0a 09 ┆NAL READY TO THE TERMINALS. ┆ 0x44c0…44e0 4c 44 41 09 48 4f 53 54 2b 31 09 3b 20 52 45 41 44 20 48 4f 53 54 20 53 54 41 54 55 53 2e 0d 0a ┆LDA HOST+1 ; READ HOST STATUS. ┆ 0x44e0…4500 09 41 4e 49 09 33 30 30 0d 0a 09 43 50 49 09 33 30 30 0d 0a 09 4a 4e 5a 09 48 56 32 34 45 0d 0a ┆ ANI 300 CPI 300 JNZ HV24E ┆ 0x4500…4520 09 4a 4d 50 09 50 52 4f 31 0d 0a 48 56 32 34 45 3a 09 4d 56 49 09 41 2c 34 35 09 3b 20 53 45 54 ┆ JMP PRO1 HV24E: MVI A,45 ; SET┆ 0x4520…4540 20 44 54 52 3d 30 2e 0d 0a 09 53 54 41 09 54 45 52 4d 31 2b 33 0d 0a 09 53 54 41 09 54 45 52 4d ┆ DTR=0. STA TERM1+3 STA TERM┆ 0x4540…4560 32 2b 33 0d 0a 09 53 54 41 09 54 45 52 4d 33 2b 33 0d 0a 09 4c 44 41 09 48 4f 53 54 2b 31 0d 0a ┆2+3 STA TERM3+3 LDA HOST+1 ┆ 0x4560…4580 48 56 32 34 53 3a 09 4c 44 41 09 48 4f 53 54 2b 31 0d 0a 09 41 4e 49 09 33 30 30 0d 0a 09 43 50 ┆HV24S: LDA HOST+1 ANI 300 CP┆ 0x4580…45a0 49 09 33 30 30 0d 0a 09 4a 5a 09 52 45 54 41 58 0d 0a 09 43 41 4c 4c 09 50 53 45 52 56 0d 0a 09 ┆I 300 JZ RETAX CALL PSERV ┆ 0x45a0…45c0 4a 4d 50 09 48 56 32 34 53 0d 0a 52 45 54 41 58 3a 09 4d 56 49 09 41 2c 36 37 0d 0a 09 53 54 41 ┆JMP HV24S RETAX: MVI A,67 STA┆ 0x45c0…45e0 09 54 45 52 4d 31 2b 33 0d 0a 09 53 54 41 09 54 45 52 4d 32 2b 33 0d 0a 09 53 54 41 09 54 45 52 ┆ TERM1+3 STA TERM2+3 STA TER┆ 0x45e0…45f3 4d 33 2b 33 0d 0a 09 4a 4d 50 09 50 52 4f 31 0d 0a 0d 0a ┆M3+3 JMP PRO1 ┆ 0x45f3…45f6 FormFeed { 0x45f3…45f6 0c 83 95 ┆ ┆ 0x45f3…45f6 } 0x45f6…4600 0d 0a 3b 20 52 4f 55 54 49 4e ┆ ; ROUTIN┆ 0x4600…4620 (35,) 45 20 54 4f 20 53 45 52 56 49 43 45 20 48 4f 53 54 20 52 45 43 45 49 56 45 52 0d 0a 3b 20 49 4e ┆E TO SERVICE HOST RECEIVER ; IN┆ 0x4620…4640 54 45 52 52 55 50 54 53 2e 0d 0a 3b 20 41 4c 4c 20 52 45 43 45 49 56 45 44 20 43 48 41 52 41 43 ┆TERRUPTS. ; ALL RECEIVED CHARAC┆ 0x4640…4660 54 45 52 53 20 41 52 45 20 54 45 53 54 45 44 20 46 4f 52 0d 0a 3b 20 54 48 45 20 43 4c 41 53 53 ┆TERS ARE TESTED FOR ; THE CLASS┆ 0x4660…4680 20 3c 33 32 2e 0d 0a 3b 20 49 46 20 43 48 41 52 3c 33 32 20 54 48 45 4e 20 54 48 45 20 43 48 41 ┆ <32. ; IF CHAR<32 THEN THE CHA┆ 0x4680…46a0 52 20 49 53 20 54 45 53 54 45 44 20 42 59 20 0d 0a 3b 20 54 48 45 20 4b 45 59 54 41 42 20 54 4f ┆R IS TESTED BY ; THE KEYTAB TO┆ 0x46a0…46c0 20 53 45 45 20 49 46 20 49 54 20 49 53 20 41 4e 20 3c 41 44 44 52 3e 20 4f 52 0d 0a 3b 20 3c 45 ┆ SEE IF IT IS AN <ADDR> OR ; <E┆ 0x46c0…46e0 4e 41 42 4c 45 3e 2e 20 41 4c 4c 20 4f 54 48 45 52 20 43 48 41 52 41 43 54 45 52 53 20 41 52 45 ┆NABLE>. ALL OTHER CHARACTERS ARE┆ 0x46e0…4700 20 53 45 4e 44 0d 0a 3b 20 54 4f 20 54 48 45 20 54 45 52 4d 49 4e 41 4c 20 41 44 44 52 45 53 53 ┆ SEND ; TO THE TERMINAL ADDRESS┆ 0x4700…4720 45 44 20 42 59 20 22 4c 52 45 43 22 2e 0d 0a 3b 20 49 46 20 3c 41 44 44 52 3e 20 49 53 20 44 45 ┆ED BY "LREC". ; IF <ADDR> IS DE┆ 0x4720…4740 54 45 43 54 45 44 20 54 48 45 4e 20 54 48 45 20 43 4f 52 52 45 53 50 4f 4e 44 49 4e 47 0d 0a 3b ┆TECTED THEN THE CORRESPONDING ;┆ 0x4740…4760 20 54 45 52 4d 49 4e 41 4c 20 49 53 20 53 45 54 20 54 4f 20 43 4f 4e 54 52 4f 4c 20 4d 4f 44 45 ┆ TERMINAL IS SET TO CONTROL MODE┆ 0x4760…4780 20 2d 20 3c 54 45 47 4e 3e 20 49 53 0d 0a 3b 20 53 45 4e 44 20 54 4f 20 52 43 33 36 30 30 2e 0d ┆ - <TEGN> IS ; SEND TO RC3600. ┆ 0x4780…47a0 0a 3b 20 49 46 20 50 52 49 4e 54 45 52 20 46 49 46 4f 20 49 53 20 4d 4f 52 45 20 54 48 41 4e 20 ┆ ; IF PRINTER FIFO IS MORE THAN ┆ 0x47a0…47c0 48 41 4c 46 20 46 55 4c 4c 20 54 48 45 4e 0d 0a 3b 20 3c 42 55 53 59 3e 20 53 54 41 54 55 53 20 ┆HALF FULL THEN ; <BUSY> STATUS ┆ 0x47c0…47e0 49 53 20 53 45 4e 44 2e 0d 0a 0d 0a 50 45 52 52 3d 09 35 30 09 09 3b 20 50 41 52 49 54 59 20 45 ┆IS SEND. PERR= 50 ; PARITY E┆ 0x47e0…4800 52 52 4f 52 2e 0d 0a 45 4e 41 3d 09 36 09 09 3b 20 49 4e 54 45 52 4e 41 4c 20 45 4e 41 42 4c 45 ┆RROR. ENA= 6 ; INTERNAL ENABLE┆ 0x4800…4820 (36,) 20 56 41 4c 55 45 2e 0d 0a 54 45 47 4e 3d 09 32 30 09 09 0d 0a 50 45 43 48 41 3d 09 31 30 30 09 ┆ VALUE. TEGN= 20 PECHA= 100 ┆ 0x4820…4840 09 3b 20 50 41 52 49 54 59 20 45 52 52 4f 52 20 53 55 42 53 54 49 54 55 54 45 2e 0d 0a 0d 0a 49 ┆ ; PARITY ERROR SUBSTITUTE. I┆ 0x4840…4860 52 45 43 3a 09 44 49 0d 0a 09 50 55 53 48 50 53 57 0d 0a 09 50 55 53 48 09 48 4c 0d 0a 09 50 55 ┆REC: DI PUSHPSW PUSH HL PU┆ 0x4860…4880 53 48 09 42 43 0d 0a 09 50 55 53 48 09 44 45 0d 0a 09 4c 44 41 09 48 4f 53 54 2b 31 0d 0a 09 41 ┆SH BC PUSH DE LDA HOST+1 A┆ 0x4880…48a0 4e 49 09 50 45 52 52 0d 0a 09 4a 5a 09 49 52 31 0d 0a 0d 0a 09 43 41 4c 4c 09 45 52 52 31 09 3b ┆NI PERR JZ IR1 CALL ERR1 ;┆ 0x48a0…48c0 20 53 45 54 20 50 41 52 49 54 59 20 45 52 52 4f 52 20 49 4e 44 49 43 41 54 4f 52 0d 0a 09 4c 44 ┆ SET PARITY ERROR INDICATOR LD┆ 0x48c0…48e0 41 09 48 4f 53 54 09 3b 20 52 45 41 44 20 43 48 41 52 20 41 4e 44 20 53 4b 49 50 20 43 48 41 52 ┆A HOST ; READ CHAR AND SKIP CHAR┆ 0x48e0…4900 20 28 53 55 42 53 54 49 54 55 54 45 29 0d 0a 09 4c 44 41 09 4d 54 41 42 2b 32 0d 0a 09 41 44 49 ┆ (SUBSTITUTE) LDA MTAB+2 ADI┆ 0x4900…4920 09 32 30 09 3b 20 43 4c 45 41 52 20 45 52 52 4f 52 20 46 4c 41 47 53 2e 0d 0a 09 53 54 41 09 48 ┆ 20 ; CLEAR ERROR FLAGS. STA H┆ 0x4920…4940 4f 53 54 2b 33 0d 0a 09 4d 56 49 09 41 2c 50 45 43 48 41 0d 0a 09 4a 4d 50 09 49 52 32 0d 0a 0d ┆OST+3 MVI A,PECHA JMP IR2 ┆ 0x4940…4941 0a ┆ ┆ 0x4941…4944 FormFeed { 0x4941…4944 0c 82 c4 ┆ ┆ 0x4941…4944 } 0x4944…4960 0d 0a 49 52 31 3a 09 4c 44 41 09 48 4f 53 54 0d 0a 49 52 32 3a 09 4d 4f 56 09 48 2c ┆ IR1: LDA HOST IR2: MOV H,┆ 0x4960…4980 41 09 3b 20 48 3d 44 41 54 41 20 42 59 54 45 2e 0d 0a 09 41 4e 49 09 33 34 30 09 3b 20 54 45 53 ┆A ; H=DATA BYTE. ANI 340 ; TES┆ 0x4980…49a0 54 20 49 46 20 43 48 41 52 3c 33 32 2e 0d 0a 09 4a 5a 09 49 52 34 0d 0a 0d 0a 49 52 33 3a 09 4c ┆T IF CHAR<32. JZ IR4 IR3: L┆ 0x49a0…49c0 44 41 09 4c 52 45 43 09 3b 20 43 48 41 52 20 49 4e 54 4f 20 58 4d 54 20 42 55 46 46 45 52 0d 0a ┆DA LREC ; CHAR INTO XMT BUFFER ┆ 0x49c0…49e0 09 4d 56 49 09 4c 2c 30 09 3b 20 47 49 56 45 4e 20 42 59 20 22 4c 52 45 43 22 2e 0d 0a 09 43 41 ┆ MVI L,0 ; GIVEN BY "LREC". CA┆ 0x49e0…4a00 4c 4c 09 42 36 0d 0a 09 4c 44 41 09 4c 52 45 43 0d 0a 09 43 50 49 09 50 44 45 56 09 3b 20 49 53 ┆LL B6 LDA LREC CPI PDEV ; IS┆ 0x4a00…4a20 (37,) 20 49 54 20 50 52 49 4e 54 45 52 0d 0a 09 4a 5a 09 50 46 55 4c 4c 0d 0a 0d 0a 52 45 4e 44 3a 09 ┆ IT PRINTER JZ PFULL REND: ┆ 0x4a20…4a40 50 4f 50 09 44 45 0d 0a 09 50 4f 50 09 42 43 0d 0a 09 50 4f 50 09 48 4c 0d 0a 09 50 4f 50 50 53 ┆POP DE POP BC POP HL POPPS┆ 0x4a40…4a4e 57 0d 0a 09 45 49 0d 0a 09 52 45 54 0d 0a ┆W EI RET ┆ 0x4a4e…4a51 FormFeed { 0x4a4e…4a51 0c 81 a2 ┆ ┆ 0x4a4e…4a51 } 0x4a51…4a60 34 3a 09 4d 4f 56 09 41 2c 48 09 3b 20 49 46 ┆4: MOV A,H ; IF┆ 0x4a60…4a80 20 4e 4f 54 20 53 50 45 43 49 41 4c 20 43 48 41 52 20 54 48 45 4e 20 52 45 54 55 52 4e 0d 0a 09 ┆ NOT SPECIAL CHAR THEN RETURN ┆ 0x4a80…4aa0 43 41 4c 4c 09 53 50 45 43 48 09 3b 20 45 4c 53 45 0d 0a 09 4a 5a 09 49 52 33 09 3b 20 0d 0a 0d ┆CALL SPECH ; ELSE JZ IR3 ; ┆ 0x4aa0…4ac0 0a 09 43 50 49 09 45 4e 41 09 3b 20 42 45 47 49 4e 0d 0a 09 4a 4e 5a 09 49 52 35 09 3b 20 20 49 ┆ CPI ENA ; BEGIN JNZ IR5 ; I┆ 0x4ac0…4ae0 46 20 3c 45 4e 41 42 4c 45 3e 20 52 45 43 45 49 56 45 44 20 54 48 45 4e 0d 0a 0d 0a 45 4e 41 42 ┆F <ENABLE> RECEIVED THEN ENAB┆ 0x4ae0…4b00 4c 3a 09 4c 44 41 09 4c 52 45 43 09 3b 42 45 47 49 4e 0d 0a 09 43 50 49 09 50 44 45 56 09 3b 20 ┆L: LDA LREC ;BEGIN CPI PDEV ; ┆ 0x4b00…4b20 49 46 20 44 45 56 4e 4f 20 3d 20 50 52 49 4e 54 45 52 20 54 48 45 4e 20 45 58 49 54 20 54 4f 20 ┆IF DEVNO = PRINTER THEN EXIT TO ┆ 0x4b20…4b40 53 55 4d 2d 41 4e 53 57 45 52 3b 0d 0a 09 4a 5a 09 53 55 4d 41 4e 53 09 3b 0d 0a 09 43 41 4c 4c ┆SUM-ANSWER; JZ SUMANS ; CALL┆ 0x4b40…4b60 09 52 44 4d 4f 44 45 09 3b 20 49 46 20 44 45 56 2d 4d 4f 44 45 20 3d 20 43 4f 4e 54 52 4f 4c 20 ┆ RDMODE ; IF DEV-MODE = CONTROL ┆ 0x4b60…4b80 54 48 45 4e 20 52 45 54 55 52 4e 3b 0d 0a 09 43 50 49 09 30 09 3b 0d 0a 09 4a 4e 5a 09 52 45 4e ┆THEN RETURN; CPI 0 ; JNZ REN┆ 0x4b80…4ba0 44 09 3b 0d 0a 09 4c 44 41 09 4c 52 45 43 09 3b 0d 0a 09 4d 56 49 09 48 2c 33 09 3b 20 53 45 54 ┆D ; LDA LREC ; MVI H,3 ; SET┆ 0x4ba0…4bc0 20 44 45 56 2d 4d 4f 44 45 20 3a 3d 20 44 41 54 41 2d 4d 4f 44 45 20 41 4e 44 20 52 45 54 55 52 ┆ DEV-MODE := DATA-MODE AND RETUR┆ 0x4bc0…4be0 4e 3b 0d 0a 09 43 41 4c 4c 09 57 52 4d 4f 44 45 09 3b 0d 0a 09 4a 4d 50 09 52 45 4e 44 09 3b 45 ┆N; CALL WRMODE ; JMP REND ;E┆ 0x4be0…4c00 4e 44 3b 0d 0a 0d 0a 49 52 35 3a 09 43 50 49 09 45 4e 41 2b 31 0d 0a 09 4a 5a 09 52 45 4e 44 0d ┆ND; IR5: CPI ENA+1 JZ REND ┆ 0x4c00…4c20 (38,) 0a 0d 0a 09 53 54 41 09 4c 52 45 43 09 3b 20 53 45 54 20 4e 45 57 20 3c 41 44 44 52 3e 0d 0a 09 ┆ STA LREC ; SET NEW <ADDR> ┆ 0x4c20…4c40 43 50 49 09 50 44 45 56 09 3b 20 49 53 20 49 54 20 50 52 49 4e 54 45 52 0d 0a 09 4a 5a 09 50 41 ┆CPI PDEV ; IS IT PRINTER JZ PA┆ 0x4c40…4c60 4e 53 09 3b 20 3c 41 44 44 52 3e 3d 20 50 52 49 4e 54 45 52 0d 0a 09 4c 44 41 09 4c 52 45 43 09 ┆NS ; <ADDR>= PRINTER LDA LREC ┆ 0x4c60…4c80 3b 20 45 4c 53 45 20 54 45 52 4d 49 4e 41 4c 0d 0a 09 43 41 4c 4c 09 52 44 4d 4f 44 45 0d 0a 09 ┆; ELSE TERMINAL CALL RDMODE ┆ 0x4c80…4ca0 41 4e 49 09 32 0d 0a 09 4a 4e 5a 09 44 4d 4f 44 45 0d 0a 0d 0a 09 4d 56 49 09 48 2c 30 0d 0a 09 ┆ANI 2 JNZ DMODE MVI H,0 ┆ 0x4ca0…4cc0 4c 44 41 09 4c 52 45 43 09 3b 20 53 45 54 20 54 45 52 4d 49 4e 41 4c 20 49 4e 54 4f 20 43 4f 4e ┆LDA LREC ; SET TERMINAL INTO CON┆ 0x4cc0…4ce0 54 52 4f 4c 20 4d 4f 44 45 3b 0d 0a 09 43 41 4c 4c 09 57 52 4d 4f 44 45 0d 0a 09 4c 44 41 09 4c ┆TROL MODE; CALL WRMODE LDA L┆ 0x4ce0…4d00 52 45 43 09 3b 20 4e 4f 54 20 44 41 54 41 20 4d 4f 44 45 2e 0d 0a 09 43 41 4c 4c 09 52 44 53 42 ┆REC ; NOT DATA MODE. CALL RDSB┆ 0x4d00…4d20 0d 0a 09 43 50 49 09 30 09 3b 20 2a 2a 2a 2a 2a 20 45 52 52 4f 52 20 53 48 4f 55 4c 44 20 42 45 ┆ CPI 0 ; ***** ERROR SHOULD BE┆ 0x4d20…4d40 20 22 20 41 4e 49 20 35 22 20 46 49 52 53 54 20 2a 2a 2a 2a 2a 0d 0a 09 4a 5a 09 52 45 4e 44 0d ┆ " ANI 5" FIRST ***** JZ REND ┆ 0x4d40…4d60 0a 09 4c 44 41 09 4c 52 45 43 0d 0a 09 43 41 4c 4c 09 57 52 53 46 09 3b 20 53 45 54 20 53 54 41 ┆ LDA LREC CALL WRSF ; SET STA┆ 0x4d60…4d80 46 58 0d 0a 09 4a 4d 50 09 52 45 4e 44 0d 0a 0d 0a 44 4d 4f 44 45 3a 09 4d 56 49 09 48 2c 54 45 ┆FX JMP REND DMODE: MVI H,TE┆ 0x4d80…4da0 47 4e 0d 0a 09 4c 44 41 09 4c 52 45 43 09 3b 20 50 55 54 20 3c 54 45 47 4e 3e 20 49 4e 54 4f 0d ┆GN LDA LREC ; PUT <TEGN> INTO ┆ 0x4da0…4dc0 0a 09 4d 56 49 09 4c 2c 31 09 3b 20 52 45 43 20 42 55 46 46 45 52 2e 0d 0a 09 43 41 4c 4c 09 42 ┆ MVI L,1 ; REC BUFFER. CALL B┆ 0x4dc0…4de0 36 0d 0a 09 4d 56 49 09 48 2c 30 0d 0a 09 4c 44 41 09 4c 52 45 43 09 3b 20 53 45 54 20 54 45 52 ┆6 MVI H,0 LDA LREC ; SET TER┆ 0x4de0…4e00 4d 49 4e 41 4c 0d 0a 09 43 41 4c 4c 09 57 52 4d 4f 44 45 09 3b 20 54 4f 20 43 4f 4e 54 52 4f 4c ┆MINAL CALL WRMODE ; TO CONTROL┆ 0x4e00…4e13 (39,) 20 4d 4f 44 45 2e 0d 0a 09 4a 4d 50 09 52 45 4e 44 0d 0a ┆ MODE. JMP REND ┆ 0x4e13…4e16 FormFeed { 0x4e13…4e16 0c 83 a7 ┆ ┆ 0x4e13…4e16 } 0x4e16…4e20 50 46 55 4c 4c 3a 09 4c 44 41 ┆PFULL: LDA┆ 0x4e20…4e40 09 50 53 55 4d 0d 0a 09 41 44 44 09 48 0d 0a 09 53 54 41 09 50 53 55 4d 0d 0a 20 09 43 41 4c 4c ┆ PSUM ADD H STA PSUM CALL┆ 0x4e40…4e60 09 48 46 55 4c 4c 09 3b 20 50 52 49 4e 54 45 52 20 46 49 46 4f 20 46 55 4c 4c 20 3f 0d 0a 09 4a ┆ HFULL ; PRINTER FIFO FULL ? J┆ 0x4e60…4e80 4e 43 09 52 45 4e 44 0d 0a 0d 0a 09 4c 44 41 09 53 54 41 42 50 09 3b 20 2a 2a 20 50 52 49 4e 54 ┆NC REND LDA STABP ; ** PRINT┆ 0x4e80…4ea0 45 52 20 42 55 46 46 45 52 20 3e 20 31 2f 32 20 46 55 4c 4c 20 3a 0d 0a 09 41 4e 49 09 35 0d 0a ┆ER BUFFER > 1/2 FULL : ANI 5 ┆ 0x4ea0…4ec0 09 41 44 49 09 32 09 3b 20 53 45 54 20 42 55 53 59 20 53 54 41 54 55 53 2e 0d 0a 09 53 54 41 09 ┆ ADI 2 ; SET BUSY STATUS. STA ┆ 0x4ec0…4ee0 53 54 41 42 50 0d 0a 09 4c 44 41 09 47 52 44 59 0d 0a 09 41 4e 41 09 41 0d 0a 09 4a 4e 5a 09 52 ┆STABP LDA GRDY ANA A JNZ R┆ 0x4ee0…4f00 45 4e 44 0d 0a 0d 0a 09 4d 56 49 09 41 2c 31 0d 0a 09 53 54 41 09 53 54 41 46 50 0d 0a 09 53 54 ┆END MVI A,1 STA STAFP ST┆ 0x4f00…4f20 41 09 47 52 44 59 0d 0a 09 4a 4d 50 09 52 45 4e 44 0d 0a 0d 0a 50 41 4e 53 3a 09 4c 44 41 09 53 ┆A GRDY JMP REND PANS: LDA S┆ 0x4f20…4f40 54 41 42 50 09 3b 20 53 54 41 54 55 53 20 41 4e 53 57 45 52 0d 0a 09 41 4e 49 09 33 09 3b 0d 0a ┆TABP ; STATUS ANSWER ANI 3 ; ┆ 0x4f40…4f60 09 43 50 49 09 30 0d 0a 09 4a 5a 09 52 45 4e 44 09 3b 20 49 46 20 3c 45 4e 41 42 4c 45 3e 20 49 ┆ CPI 0 JZ REND ; IF <ENABLE> I┆ 0x4f60…4f80 53 0d 0a 09 4d 56 49 09 41 2c 31 09 3b 20 53 45 4e 44 20 54 4f 20 50 52 49 4e 54 45 52 2e 0d 0a ┆S MVI A,1 ; SEND TO PRINTER. ┆ 0x4f80…4fa0 09 53 54 41 09 53 54 41 46 50 0d 0a 09 4a 4d 50 09 52 45 4e 44 0d 0a 0d 0a 53 55 4d 41 4e 53 3a ┆ STA STAFP JMP REND SUMANS:┆ 0x4fa0…4fc0 09 4c 44 41 09 50 53 55 4d 09 3b 20 58 4d 54 20 50 53 55 4d 20 54 4f 20 48 4f 53 54 0d 0a 09 41 ┆ LDA PSUM ; XMT PSUM TO HOST A┆ 0x4fc0…4fe0 4e 49 09 31 37 37 09 3b 20 41 4e 44 20 50 53 55 4d 3a 3d 30 2e 0d 0a 09 4d 4f 56 09 48 2c 41 0d ┆NI 177 ; AND PSUM:=0. MOV H,A ┆ 0x4fe0…5000 0a 09 41 4e 49 09 33 34 30 0d 0a 09 4a 4e 5a 09 4c 43 48 45 43 0d 0a 09 4d 56 49 09 41 2c 34 30 ┆ ANI 340 JNZ LCHEC MVI A,40┆ 0x5000…5020 (40,) 0d 0a 09 41 44 44 09 48 0d 0a 09 4d 4f 56 09 48 2c 41 0d 0a 4c 43 48 45 43 3a 09 4d 56 49 09 41 ┆ ADD H MOV H,A LCHEC: MVI A┆ 0x5020…5040 2c 50 44 45 56 0d 0a 09 4d 56 49 09 4c 2c 31 0d 0a 09 43 41 4c 4c 09 42 36 0d 0a 09 58 52 41 09 ┆,PDEV MVI L,1 CALL B6 XRA ┆ 0x5040…5059 41 0d 0a 09 53 54 41 09 50 53 55 4d 0d 0a 09 4a 4d 50 09 52 45 4e 44 0d 0a ┆A STA PSUM JMP REND ┆ 0x5059…505c FormFeed { 0x5059…505c 0c 82 e8 ┆ ┆ 0x5059…505c } 0x505c…5060 0d 0a 3b 20 ┆ ; ┆ 0x5060…5080 52 4f 55 54 49 4e 45 20 54 4f 20 53 45 52 56 49 43 45 20 48 4f 53 54 20 54 52 41 4e 53 4d 49 54 ┆ROUTINE TO SERVICE HOST TRANSMIT┆ 0x5080…50a0 54 45 52 0d 0a 3b 20 49 4e 54 45 52 52 55 50 54 53 2e 0d 0a 3b 20 58 4d 54 20 4d 4f 44 45 53 20 ┆TER ; INTERRUPTS. ; XMT MODES ┆ 0x50a0…50c0 28 4d 4f 44 45 58 29 3a 0d 0a 3b 20 31 3d 09 4e 45 58 54 20 53 48 4f 55 4c 44 20 42 45 20 53 54 ┆(MODEX): ; 1= NEXT SHOULD BE ST┆ 0x50c0…50e0 41 54 55 53 2e 0d 0a 3b 20 32 3d 09 54 45 53 54 20 53 54 41 54 55 53 20 46 4c 41 47 53 2e 0d 0a ┆ATUS. ; 2= TEST STATUS FLAGS. ┆ 0x50e0…5100 3b 20 35 3d 09 4e 45 58 54 20 53 48 4f 55 4c 44 20 42 45 20 44 41 54 41 2e 0d 0a 3b 20 36 3d 09 ┆; 5= NEXT SHOULD BE DATA. ; 6= ┆ 0x5100…5120 54 45 53 54 20 53 54 41 54 55 53 20 46 4c 41 47 53 2e 0d 0a 0d 0a 4e 53 54 41 54 3d 09 31 0d 0a ┆TEST STATUS FLAGS. NSTAT= 1 ┆ 0x5120…5140 54 53 54 41 54 3d 09 32 09 3b 20 55 53 45 44 20 49 4e 49 54 49 41 4c 4c 59 20 4f 4e 4c 59 20 28 ┆TSTAT= 2 ; USED INITIALLY ONLY (┆ 0x5140…5160 4c 58 4d 54 20 3d 20 4f 46 20 21 21 21 21 21 29 3b 0d 0a 4e 44 41 54 3d 09 35 0d 0a 54 53 54 41 ┆LXMT = OF !!!!!); NDAT= 5 TSTA┆ 0x5160…5180 46 3d 09 36 09 3b 20 55 53 45 44 20 45 4c 53 45 57 48 45 52 45 3b 0d 0a 54 58 52 44 59 3d 09 31 ┆F= 6 ; USED ELSEWHERE; TXRDY= 1┆ 0x5180…51a0 0d 0a 0d 0a 49 58 4d 54 3a 09 44 49 0d 0a 09 50 55 53 48 50 53 57 0d 0a 09 50 55 53 48 09 48 4c ┆ IXMT: DI PUSHPSW PUSH HL┆ 0x51a0…51c0 0d 0a 09 50 55 53 48 09 42 43 0d 0a 09 50 55 53 48 09 44 45 0d 0a 09 4c 44 41 09 48 4f 53 54 2b ┆ PUSH BC PUSH DE LDA HOST+┆ 0x51c0…51e0 31 09 3b 20 54 45 53 54 20 53 54 41 54 55 53 20 46 4f 52 20 54 58 52 44 59 2e 0d 0a 09 41 4e 49 ┆1 ; TEST STATUS FOR TXRDY. ANI┆ 0x51e0…5200 09 54 58 52 44 59 0d 0a 09 4a 5a 09 58 45 4e 44 0d 0a 0d 0a 09 4c 44 41 09 4d 4f 44 45 58 0d 0a ┆ TXRDY JZ XEND LDA MODEX ┆ 0x5200…5220 (41,) 09 43 50 49 09 4e 53 54 41 54 09 3b 20 4e 45 58 54 20 53 54 41 54 55 53 0d 0a 09 4a 5a 09 58 4d ┆ CPI NSTAT ; NEXT STATUS JZ XM┆ 0x5220…5225 54 53 54 0d 0a ┆TST ┆ 0x5225…5228 FormFeed { 0x5225…5228 0c 81 ea ┆ ┆ 0x5225…5228 } 0x5228…5240 0d 0a 09 43 50 49 09 4e 44 41 54 09 3b 20 4e 45 58 54 20 44 41 54 41 0d ┆ CPI NDAT ; NEXT DATA ┆ 0x5240…5260 0a 09 4a 5a 09 58 4d 54 44 0d 0a 09 4d 56 49 09 48 2c 30 0d 0a 09 4c 58 49 09 42 43 2c 53 54 41 ┆ JZ XMTD MVI H,0 LXI BC,STA┆ 0x5260…5280 46 31 09 3b 20 4c 4f 4f 50 20 54 4f 20 54 45 53 54 0d 0a 53 54 41 4c 4f 4f 3a 09 4c 44 41 58 09 ┆F1 ; LOOP TO TEST STALOO: LDAX ┆ 0x5280…52a0 42 43 09 09 3b 20 53 54 41 54 55 53 20 46 4c 41 47 53 0d 0a 09 49 4e 58 09 42 43 0d 0a 09 4f 52 ┆BC ; STATUS FLAGS INX BC OR┆ 0x52a0…52c0 41 09 41 0d 0a 09 4a 4e 5a 09 58 41 44 44 53 09 3b 20 58 4d 49 54 20 41 44 44 52 45 53 53 0d 0a ┆A A JNZ XADDS ; XMIT ADDRESS ┆ 0x52c0…52e0 09 49 4e 52 09 48 09 3b 20 48 3d 20 54 45 52 4d 20 41 44 44 52 2e 0d 0a 09 4d 4f 56 09 41 2c 48 ┆ INR H ; H= TERM ADDR. MOV A,H┆ 0x52e0…5300 0d 0a 09 43 50 49 09 50 44 45 56 2b 31 0d 0a 09 4a 4e 5a 09 53 54 41 4c 4f 4f 0d 0a 09 58 52 41 ┆ CPI PDEV+1 JNZ STALOO XRA┆ 0x5300…5320 09 41 09 3b 20 54 45 53 54 20 44 41 54 41 20 42 55 46 46 45 52 53 2e 0d 0a 44 4c 4f 4f 50 3a 09 ┆ A ; TEST DATA BUFFERS. DLOOP: ┆ 0x5320…5340 53 54 41 09 43 55 52 53 54 41 54 0d 0a 09 4d 56 49 09 4c 2c 31 0d 0a 09 43 41 4c 4c 09 42 34 09 ┆STA CURSTAT MVI L,1 CALL B4 ┆ 0x5340…5360 3b 20 45 4d 50 54 59 3f 0d 0a 09 4a 4e 5a 09 58 41 44 44 44 0d 0a 09 4c 44 41 09 43 55 52 53 54 ┆; EMPTY? JNZ XADDD LDA CURST┆ 0x5360…5380 41 54 0d 0a 09 49 4e 52 09 41 0d 0a 09 43 50 49 09 50 44 45 56 2b 31 0d 0a 09 4a 4e 5a 09 44 4c ┆AT INR A CPI PDEV+1 JNZ DL┆ 0x5380…53a0 4f 4f 50 0d 0a 58 45 4e 44 3a 09 50 4f 50 09 44 45 0d 0a 09 50 4f 50 09 42 43 0d 0a 09 50 4f 50 ┆OOP XEND: POP DE POP BC POP┆ 0x53a0…53b9 09 48 4c 0d 0a 09 50 4f 50 50 53 57 0d 0a 09 45 49 0d 0a 09 52 45 54 0d 0a ┆ HL POPPSW EI RET ┆ 0x53b9…53bc FormFeed { 0x53b9…53bc 0c 81 f3 ┆ ┆ 0x53b9…53bc } 0x53bc…53c0 0d 0a 3b 20 ┆ ; ┆ 0x53c0…53e0 54 52 41 4e 53 4d 49 54 20 53 54 41 54 55 53 0d 0a 3b 20 22 4c 58 4d 54 22 3d 20 54 45 52 4d 49 ┆TRANSMIT STATUS ; "LXMT"= TERMI┆ 0x53e0…5400 4e 41 4c 20 4e 4f 2e 0d 0a 58 4d 54 53 54 3a 09 4c 44 41 09 4c 58 4d 54 0d 0a 09 43 41 4c 4c 09 ┆NAL NO. XMTST: LDA LXMT CALL ┆ 0x5400…5420 (42,) 52 44 53 42 0d 0a 09 4c 58 49 09 44 45 2c 53 54 41 54 41 42 0d 0a 09 43 41 4c 4c 09 44 45 41 44 ┆RDSB LXI DE,STATAB CALL DEAD┆ 0x5420…5440 44 0d 0a 09 4c 44 41 58 09 44 45 09 3b 20 43 4f 4e 56 45 52 54 20 53 54 41 54 55 53 0d 0a 09 53 ┆D LDAX DE ; CONVERT STATUS S┆ 0x5440…5460 54 41 09 48 4f 53 54 0d 0a 09 4c 44 41 09 4c 58 4d 54 0d 0a 09 43 41 4c 4c 09 57 52 53 43 0d 0a ┆TA HOST LDA LXMT CALL WRSC ┆ 0x5460…5480 09 4d 56 49 09 41 2c 54 53 54 41 46 0d 0a 09 53 54 41 09 4d 4f 44 45 58 0d 0a 09 4a 4d 50 09 58 ┆ MVI A,TSTAF STA MODEX JMP X┆ 0x5480…54a0 45 4e 44 0d 0a 0d 0a 0d 0a 3b 20 54 52 41 4e 53 4d 49 54 20 44 41 54 41 0d 0a 3b 20 4c 58 4d 54 ┆END ; TRANSMIT DATA ; LXMT┆ 0x54a0…54c0 3d 20 54 45 52 4d 49 4e 41 4c 20 4e 4f 2e 0d 0a 0d 0a 58 4d 54 44 3a 09 4c 44 41 09 4c 58 4d 54 ┆= TERMINAL NO. XMTD: LDA LXMT┆ 0x54c0…54e0 0d 0a 09 4d 56 49 09 4c 2c 31 09 3b 20 47 45 54 20 42 59 54 45 2e 0d 0a 09 43 41 4c 4c 09 42 31 ┆ MVI L,1 ; GET BYTE. CALL B1┆ 0x54e0…5500 32 09 3b 20 20 46 52 4f 4d 20 52 45 43 20 42 55 46 46 45 52 3b 0d 0a 09 4d 4f 56 09 41 2c 48 0d ┆2 ; FROM REC BUFFER; MOV A,H ┆ 0x5500…5520 0a 09 53 54 41 09 48 4f 53 54 09 3b 20 43 48 41 52 20 54 4f 20 48 4f 53 54 20 55 41 52 54 0d 0a ┆ STA HOST ; CHAR TO HOST UART ┆ 0x5520…5540 09 41 4e 49 09 33 34 30 0d 0a 09 4a 5a 09 4e 52 45 50 0d 0a 09 4c 44 41 09 4c 58 4d 54 0d 0a 09 ┆ ANI 340 JZ NREP LDA LXMT ┆ 0x5540…5560 43 50 49 09 50 44 45 56 0d 0a 09 4a 5a 09 4e 52 45 50 0d 0a 09 4d 4f 56 09 41 2c 48 09 3b 20 52 ┆CPI PDEV JZ NREP MOV A,H ; R┆ 0x5560…5580 45 50 45 41 54 20 43 48 41 52 20 28 58 4d 49 54 20 43 48 41 52 29 0d 0a 09 4d 56 49 09 4c 2c 30 ┆EPEAT CHAR (XMIT CHAR) MVI L,0┆ 0x5580…55a0 09 3b 20 54 4f 20 54 45 52 4d 49 4e 41 4c 0d 0a 09 4c 44 41 09 4c 58 4d 54 0d 0a 09 43 41 4c 4c ┆ ; TO TERMINAL LDA LXMT CALL┆ 0x55a0…55c0 09 42 36 09 3b 20 42 55 46 20 49 4e 0d 0a 4e 52 45 50 3a 09 4c 44 41 09 4c 58 4d 54 0d 0a 09 4d ┆ B6 ; BUF IN NREP: LDA LXMT M┆ 0x55c0…55e0 56 49 09 4c 2c 31 0d 0a 09 43 41 4c 4c 09 42 34 09 3b 20 45 4d 50 54 59 3f 0d 0a 09 4a 4e 5a 09 ┆VI L,1 CALL B4 ; EMPTY? JNZ ┆ 0x55e0…5600 58 45 4e 44 0d 0a 09 4d 56 49 09 41 2c 54 53 54 41 46 0d 0a 09 53 54 41 09 4d 4f 44 45 58 0d 0a ┆XEND MVI A,TSTAF STA MODEX ┆ 0x5600…560b (43,) 09 4a 4d 50 09 58 45 4e 44 0d 0a ┆ JMP XEND ┆ 0x560b…560e FormFeed { 0x560b…560e 0c 82 df ┆ ┆ 0x560b…560e } 0x560e…5620 0d 0a 3b 20 54 52 41 4e 53 4d 49 54 20 3c 41 44 44 52 ┆ ; TRANSMIT <ADDR┆ 0x5620…5640 3e 20 49 4e 20 53 54 41 54 55 53 20 53 45 51 55 45 4e 43 45 2e 0d 0a 0d 0a 0d 0a 58 41 44 44 53 ┆> IN STATUS SEQUENCE. XADDS┆ 0x5640…5660 3a 09 4c 44 41 09 4c 58 4d 54 09 3b 20 48 3d 20 54 45 52 4d 20 4e 4f 2e 0d 0a 09 53 55 42 09 48 ┆: LDA LXMT ; H= TERM NO. SUB H┆ 0x5660…5680 0d 0a 09 4a 5a 09 58 41 44 44 4f 0d 0a 0d 0a 09 4d 4f 56 09 41 2c 48 0d 0a 09 53 54 41 09 4c 58 ┆ JZ XADDO MOV A,H STA LX┆ 0x5680…56a0 4d 54 0d 0a 09 4c 58 49 09 42 43 2c 41 44 44 54 41 42 0d 0a 09 43 41 4c 4c 09 42 43 41 44 44 0d ┆MT LXI BC,ADDTAB CALL BCADD ┆ 0x56a0…56c0 0a 09 4c 44 41 58 09 42 43 0d 0a 09 53 54 41 09 48 4f 53 54 09 3b 20 3c 41 44 44 52 3e 20 54 4f ┆ LDAX BC STA HOST ; <ADDR> TO┆ 0x56c0…56e0 20 55 41 52 54 0d 0a 58 41 44 44 4f 3a 09 4d 56 49 09 41 2c 4e 53 54 41 54 0d 0a 09 53 54 41 09 ┆ UART XADDO: MVI A,NSTAT STA ┆ 0x56e0…5700 4d 4f 44 45 58 0d 0a 09 4a 4d 50 09 58 45 4e 44 0d 0a 0d 0a 3b 20 54 52 41 4e 53 4d 49 54 20 41 ┆MODEX JMP XEND ; TRANSMIT A┆ 0x5700…5720 44 44 52 45 53 53 20 49 4e 20 44 41 54 41 20 53 45 51 55 45 4e 43 45 2e 0d 0a 0d 0a 58 41 44 44 ┆DDRESS IN DATA SEQUENCE. XADD┆ 0x5720…5740 44 3a 09 4c 44 41 09 43 55 52 53 54 41 54 09 3b 20 53 41 56 45 20 54 45 52 4d 20 4e 4f 2e 0d 0a ┆D: LDA CURSTAT ; SAVE TERM NO. ┆ 0x5740…5760 09 4d 4f 56 09 48 2c 41 0d 0a 09 4c 44 41 09 4c 58 4d 54 0d 0a 09 53 55 42 09 48 0d 0a 09 4a 5a ┆ MOV H,A LDA LXMT SUB H JZ┆ 0x5760…5780 09 58 41 44 44 4b 0d 0a 0d 0a 09 4d 4f 56 09 41 2c 48 0d 0a 09 53 54 41 09 4c 58 4d 54 0d 0a 09 ┆ XADDK MOV A,H STA LXMT ┆ 0x5780…57a0 4c 58 49 09 42 43 2c 41 44 44 54 41 42 0d 0a 09 43 41 4c 4c 09 42 43 41 44 44 0d 0a 09 4c 44 41 ┆LXI BC,ADDTAB CALL BCADD LDA┆ 0x57a0…57c0 58 09 42 43 0d 0a 09 53 54 41 09 48 4f 53 54 09 3b 20 3c 41 44 44 52 3e 20 54 4f 20 55 41 52 54 ┆X BC STA HOST ; <ADDR> TO UART┆ 0x57c0…57e0 0d 0a 58 41 44 44 4b 3a 09 4d 56 49 09 41 2c 4e 44 41 54 0d 0a 09 53 54 41 09 4d 4f 44 45 58 0d ┆ XADDK: MVI A,NDAT STA MODEX ┆ 0x57e0…57ec 0a 09 4a 4d 50 09 58 45 4e 44 0d 0a ┆ JMP XEND ┆ 0x57ec…57ef FormFeed { 0x57ec…57ef 0c 82 b2 ┆ ┆ 0x57ec…57ef } 0x57ef…5800 0d 0a 3b 20 52 4f 55 54 49 4e 45 20 54 4f 20 49 4e ┆ ; ROUTINE TO IN┆ 0x5800…5820 (44,) 49 54 49 41 4c 49 5a 45 20 41 4e 20 55 41 52 54 2e 0d 0a 3b 20 57 48 45 4e 20 43 41 4c 4c 45 44 ┆ITIALIZE AN UART. ; WHEN CALLED┆ 0x5820…5840 3a 0d 0a 3b 20 42 43 3d 09 50 4f 49 4e 54 45 52 20 54 4f 20 4d 4f 44 45 20 54 41 42 28 4d 54 41 ┆: ; BC= POINTER TO MODE TAB(MTA┆ 0x5840…5860 42 29 0d 0a 3b 20 44 45 3d 09 4d 4f 44 45 20 52 45 47 20 44 45 53 54 49 4e 41 54 49 4f 4e 0d 0a ┆B) ; DE= MODE REG DESTINATION ┆ 0x5860…5880 3b 20 41 3d 09 42 41 55 44 20 52 41 54 45 0d 0a 3b 20 4c 3d 20 4e 4f 2e 20 4f 46 20 53 54 4f 50 ┆; A= BAUD RATE ; L= NO. OF STOP┆ 0x5880…58a0 42 49 54 53 28 20 31 3c 37 20 49 46 20 32 20 53 54 4f 50 42 49 54 53 2c 20 30 20 49 46 20 31 20 ┆BITS( 1<7 IF 2 STOPBITS, 0 IF 1 ┆ 0x58a0…58c0 53 54 4f 50 42 49 54 29 2e 0d 0a 49 4e 49 54 55 3a 09 4d 4f 56 09 48 2c 41 0d 0a 09 4c 44 41 58 ┆STOPBIT). INITU: MOV H,A LDAX┆ 0x58c0…58e0 09 42 43 0d 0a 09 41 44 44 09 4c 0d 0a 09 53 54 41 58 09 44 45 09 3b 20 53 45 54 20 4d 4f 44 45 ┆ BC ADD L STAX DE ; SET MODE┆ 0x58e0…5900 31 0d 0a 09 49 4e 58 09 42 43 0d 0a 09 4c 44 41 58 09 42 43 0d 0a 09 41 44 44 09 48 0d 0a 09 53 ┆1 INX BC LDAX BC ADD H S┆ 0x5900…5920 54 41 58 09 44 45 09 3b 20 53 45 54 20 4d 4f 44 45 32 0d 0a 09 49 4e 58 09 42 43 0d 0a 09 49 4e ┆TAX DE ; SET MODE2 INX BC IN┆ 0x5920…5940 58 09 44 45 0d 0a 09 4c 44 41 58 09 42 43 0d 0a 09 53 54 41 58 09 44 45 09 3b 20 53 45 54 20 43 ┆X DE LDAX BC STAX DE ; SET C┆ 0x5940…594e 4f 4d 4d 41 4e 44 0d 0a 09 52 45 54 0d 0a ┆OMMAND RET ┆ 0x594e…5951 FormFeed { 0x594e…5951 0c 81 ab ┆ ┆ 0x594e…5951 } 0x5951…5960 0d 0a 3b 20 49 4e 49 54 49 41 4c 49 5a 41 54 ┆ ; INITIALIZAT┆ 0x5960…5980 49 4f 4e 20 4f 46 20 55 41 52 54 53 2e 0d 0a 53 54 52 50 31 3d 09 33 32 30 30 30 09 3b 20 53 54 ┆ION OF UARTS. STRP1= 32000 ; ST┆ 0x5980…59a0 52 41 50 20 46 49 45 4c 44 31 0d 0a 53 54 52 50 32 3d 09 33 32 34 30 30 09 3b 20 53 54 52 41 50 ┆RAP FIELD1 STRP2= 32400 ; STRAP┆ 0x59a0…59c0 20 46 49 45 4c 44 32 0d 0a 0d 0a 53 50 49 4e 49 54 3d 09 33 31 37 37 37 09 3b 20 53 54 41 43 4b ┆ FIELD2 SPINIT= 31777 ; STACK┆ 0x59c0…59e0 20 50 4f 49 4e 54 45 52 20 49 4e 49 54 20 56 41 4c 55 45 2e 0d 0a 0d 0a 53 54 49 4e 49 54 3a 09 ┆ POINTER INIT VALUE. STINIT: ┆ 0x59e0…5a00 4c 58 49 09 44 45 2c 48 4f 53 54 2b 32 0d 0a 09 4c 58 49 09 53 50 2c 53 50 49 4e 49 54 0d 0a 09 ┆LXI DE,HOST+2 LXI SP,SPINIT ┆ 0x5a00…5a20 (45,) 4c 58 49 09 42 43 2c 4d 54 41 42 0d 0a 09 4c 44 41 09 53 54 52 50 32 0d 0a 09 41 4e 49 09 32 30 ┆LXI BC,MTAB LDA STRP2 ANI 20┆ 0x5a20…5a40 30 0d 0a 09 4d 4f 56 09 4c 2c 41 0d 0a 09 4c 44 41 09 53 54 52 50 32 0d 0a 09 41 4e 49 09 31 37 ┆0 MOV L,A LDA STRP2 ANI 17┆ 0x5a40…5a60 0d 0a 09 43 41 4c 4c 09 49 4e 49 54 55 09 3b 20 49 4e 49 54 20 48 4f 53 54 2e 0d 0a 09 4c 58 49 ┆ CALL INITU ; INIT HOST. LXI┆ 0x5a60…5a80 09 44 45 2c 54 45 52 4d 31 2b 32 0d 0a 09 4c 58 49 09 42 43 2c 4d 54 41 42 2b 33 0d 0a 09 4c 44 ┆ DE,TERM1+2 LXI BC,MTAB+3 LD┆ 0x5a80…5aa0 41 09 53 54 52 50 32 0d 0a 09 52 4c 43 0d 0a 09 41 4e 49 09 32 30 30 0d 0a 09 4d 4f 56 09 4c 2c ┆A STRP2 RLC ANI 200 MOV L,┆ 0x5aa0…5ac0 41 0d 0a 09 4c 44 41 09 53 54 52 50 31 0d 0a 09 41 4e 49 09 31 37 0d 0a 09 43 41 4c 4c 09 49 4e ┆A LDA STRP1 ANI 17 CALL IN┆ 0x5ac0…5ae0 49 54 55 09 3b 20 49 4e 49 54 20 54 45 52 4d 49 4e 41 4c 31 0d 0a 09 4c 44 41 09 53 54 52 50 32 ┆ITU ; INIT TERMINAL1 LDA STRP2┆ 0x5ae0…5b00 0d 0a 09 52 4c 43 0d 0a 09 41 4e 49 09 32 30 30 0d 0a 09 4d 4f 56 09 4c 2c 41 0d 0a 09 4c 44 41 ┆ RLC ANI 200 MOV L,A LDA┆ 0x5b00…5b20 09 53 54 52 50 31 0d 0a 09 41 4e 49 09 31 37 0d 0a 09 4c 58 49 09 44 45 2c 54 45 52 4d 32 2b 32 ┆ STRP1 ANI 17 LXI DE,TERM2+2┆ 0x5b20…5b40 0d 0a 09 4c 58 49 09 42 43 2c 4d 54 41 42 2b 36 0d 0a 09 43 41 4c 4c 09 49 4e 49 54 55 09 3b 20 ┆ LXI BC,MTAB+6 CALL INITU ; ┆ 0x5b40…5b50 49 4e 49 54 20 54 45 52 4d 49 4e 41 4c 32 0d 0a ┆INIT TERMINAL2 ┆ 0x5b50…5b53 FormFeed { 0x5b50…5b53 0c 82 a9 ┆ ┆ 0x5b50…5b53 } 0x5b53…5b60 0d 0a 09 4c 44 41 09 53 54 52 50 32 0d ┆ LDA STRP2 ┆ 0x5b60…5b80 0a 09 52 4c 43 0d 0a 09 41 4e 49 09 32 30 30 0d 0a 09 4d 4f 56 09 4c 2c 41 0d 0a 09 4c 44 41 09 ┆ RLC ANI 200 MOV L,A LDA ┆ 0x5b80…5ba0 53 54 52 50 31 0d 0a 09 41 4e 49 09 31 37 0d 0a 09 4c 58 49 09 44 45 2c 54 45 52 4d 33 2b 32 0d ┆STRP1 ANI 17 LXI DE,TERM3+2 ┆ 0x5ba0…5bc0 0a 09 4c 58 49 09 42 43 2c 4d 54 41 42 2b 31 31 0d 0a 09 43 41 4c 4c 09 49 4e 49 54 55 0d 0a 09 ┆ LXI BC,MTAB+11 CALL INITU ┆ 0x5bc0…5be0 4c 44 41 09 53 54 52 50 32 0d 0a 09 52 4c 43 0d 0a 09 52 4c 43 0d 0a 09 41 4e 49 09 32 30 30 0d ┆LDA STRP2 RLC RLC ANI 200 ┆ 0x5be0…5c00 0a 09 4d 4f 56 09 4c 2c 41 0d 0a 09 4c 44 41 09 53 54 52 50 31 0d 0a 09 4d 56 49 09 44 2c 34 0d ┆ MOV L,A LDA STRP1 MVI D,4 ┆ 0x5c00…5c20 (46,) 0a 09 43 41 4c 4c 09 52 4f 53 48 0d 0a 09 41 4e 49 09 31 37 0d 0a 09 4c 58 49 09 44 45 2c 50 52 ┆ CALL ROSH ANI 17 LXI DE,PR┆ 0x5c20…5c40 49 4e 54 2b 32 0d 0a 09 4c 58 49 09 42 43 2c 4d 54 41 42 2b 31 34 0d 0a 09 43 41 4c 4c 09 49 4e ┆INT+2 LXI BC,MTAB+14 CALL IN┆ 0x5c40…5c60 49 54 55 0d 0a 0d 0a 0d 0a 3b 20 49 4e 49 54 20 42 55 46 46 45 52 53 2e 0d 0a 0d 0a 09 4d 56 49 ┆ITU ; INIT BUFFERS. MVI┆ 0x5c60…5c80 09 48 2c 30 0d 0a 09 4d 56 49 09 4c 2c 30 0d 0a 09 4d 4f 56 09 41 2c 48 0d 0a 49 4e 49 31 3a 09 ┆ H,0 MVI L,0 MOV A,H INI1: ┆ 0x5c80…5ca0 43 41 4c 4c 09 45 4d 50 54 31 09 3b 20 45 4d 50 54 59 20 58 4d 54 20 42 55 46 46 45 52 53 2e 0d ┆CALL EMPT1 ; EMPTY XMT BUFFERS. ┆ 0x5ca0…5cc0 0a 09 49 4e 52 09 48 0d 0a 09 4d 4f 56 09 41 2c 48 0d 0a 09 43 50 49 09 50 44 45 56 2b 31 0d 0a ┆ INR H MOV A,H CPI PDEV+1 ┆ 0x5cc0…5ce0 09 4a 4e 5a 09 49 4e 49 31 0d 0a 0d 0a 09 4d 56 49 09 48 2c 30 0d 0a 09 4d 56 49 09 4c 2c 31 0d ┆ JNZ INI1 MVI H,0 MVI L,1 ┆ 0x5ce0…5d00 0a 09 4d 4f 56 09 41 2c 48 0d 0a 49 4e 49 32 3a 09 43 41 4c 4c 09 45 4d 50 54 31 09 3b 20 45 4d ┆ MOV A,H INI2: CALL EMPT1 ; EM┆ 0x5d00…5d20 50 54 59 20 52 45 43 20 42 55 46 46 45 52 53 2e 0d 0a 09 49 4e 52 09 48 0d 0a 09 4d 4f 56 09 41 ┆PTY REC BUFFERS. INR H MOV A┆ 0x5d20…5d3c 2c 48 0d 0a 09 43 50 49 09 50 44 45 56 2b 31 0d 0a 09 4a 4e 5a 09 49 4e 49 32 0d 0a ┆,H CPI PDEV+1 JNZ INI2 ┆ 0x5d3c…5d3f FormFeed { 0x5d3c…5d3f 0c 82 fa ┆ ┆ 0x5d3c…5d3f } 0x5d3f…5d40 0d ┆ ┆ 0x5d40…5d60 0a 3b 20 52 45 53 45 54 20 53 54 41 42 58 2d 2d 20 53 54 41 46 58 20 56 41 52 49 41 42 4c 45 53 ┆ ; RESET STABX-- STAFX VARIABLES┆ 0x5d60…5d80 2e 0d 0a 0d 0a 0d 0a 09 4d 56 49 09 44 2c 28 47 52 44 59 2d 53 54 41 42 31 29 2b 31 0d 0a 09 4c ┆. MVI D,(GRDY-STAB1)+1 L┆ 0x5d80…5da0 58 49 09 42 43 09 53 54 41 42 31 0d 0a 53 49 4e 49 31 3a 09 58 52 41 09 41 0d 0a 09 53 54 41 58 ┆XI BC STAB1 SINI1: XRA A STAX┆ 0x5da0…5dc0 09 42 43 0d 0a 09 49 4e 58 09 42 43 0d 0a 09 44 43 52 09 44 0d 0a 09 4a 4e 5a 09 53 49 4e 49 31 ┆ BC INX BC DCR D JNZ SINI1┆ 0x5dc0…5de0 0d 0a 0d 0a 09 4c 58 49 09 42 43 2c 53 54 41 42 50 09 3b 20 49 4e 49 54 20 52 45 41 44 59 3a 20 ┆ LXI BC,STABP ; INIT READY: ┆ 0x5de0…5e00 2a 2a 20 43 48 41 4e 47 45 20 54 4f 20 27 53 54 41 42 31 27 3a 20 49 4e 43 4c 20 54 45 52 4d 20 ┆** CHANGE TO 'STAB1': INCL TERM ┆ 0x5e00…5e20 (47,) 2a 2a 0d 0a 09 4d 56 49 09 44 2c 31 09 09 3b 20 20 20 2a 2a 20 43 48 41 4e 47 45 20 54 4f 20 34 ┆** MVI D,1 ; ** CHANGE TO 4┆ 0x5e20…5e40 3a 20 49 4e 43 4c 55 44 45 20 54 45 52 4d 49 4e 41 4c 53 20 2a 2a 0d 0a 09 4d 56 49 09 41 2c 34 ┆: INCLUDE TERMINALS ** MVI A,4┆ 0x5e40…5e60 09 09 3b 0d 0a 53 49 4e 49 32 3a 09 53 54 41 58 09 42 43 09 09 3b 0d 0a 09 49 4e 58 09 42 43 09 ┆ ; SINI2: STAX BC ; INX BC ┆ 0x5e60…5e80 09 3b 0d 0a 09 44 43 52 09 44 09 09 3b 0d 0a 09 4a 4e 5a 09 53 49 4e 49 32 09 09 3b 0d 0a 0d 0a ┆ ; DCR D ; JNZ SINI2 ; ┆ 0x5e80…5ea0 0d 0a 3b 20 53 45 54 20 54 45 52 4d 49 4e 41 4c 53 20 54 4f 20 53 4b 49 50 20 4d 4f 44 45 2e 0d ┆ ; SET TERMINALS TO SKIP MODE. ┆ 0x5ea0…5ec0 0a 09 4c 58 49 09 42 43 2c 4d 4f 44 45 31 0d 0a 09 4d 56 49 09 41 2c 31 0d 0a 09 53 54 41 58 09 ┆ LXI BC,MODE1 MVI A,1 STAX ┆ 0x5ec0…5ee0 42 43 0d 0a 09 49 4e 58 09 42 43 0d 0a 09 53 54 41 58 09 42 43 0d 0a 09 49 4e 58 09 42 43 0d 0a ┆BC INX BC STAX BC INX BC ┆ 0x5ee0…5f00 09 53 54 41 58 09 42 43 0d 0a 09 49 4e 58 09 42 43 0d 0a 09 4d 56 49 09 41 2c 54 53 54 41 54 09 ┆ STAX BC INX BC MVI A,TSTAT ┆ 0x5f00…5f20 3b 20 53 45 54 20 4d 4f 44 45 58 0d 0a 09 53 54 41 58 09 42 43 0d 0a 09 4d 56 49 09 41 2c 31 37 ┆; SET MODEX STAX BC MVI A,17┆ 0x5f20…5f40 0d 0a 09 53 54 41 09 4c 58 4d 54 0d 0a 09 58 52 41 09 41 0d 0a 09 53 54 41 09 4c 52 45 43 0d 0a ┆ STA LXMT XRA A STA LREC ┆ 0x5f40…5f60 09 53 54 41 09 50 53 55 4d 0d 0a 09 43 41 4c 4c 09 45 52 52 30 0d 0a 09 58 52 41 09 41 0d 0a 09 ┆ STA PSUM CALL ERR0 XRA A ┆ 0x5f60…5f80 53 54 41 09 47 52 44 59 0d 0a 09 4d 56 49 09 41 2c 31 31 0d 0a 09 53 49 4d 0d 0a 09 45 49 0d 0a ┆STA GRDY MVI A,11 SIM EI ┆ 0x5f80…5f8b 09 4a 4d 50 09 50 52 4f 31 0d 0a ┆ JMP PRO1 ┆ 0x5f8b…5f8e FormFeed { 0x5f8b…5f8e 0c 83 83 ┆ ┆ 0x5f8b…5f8e } 0x5f8e…5fa0 3b 20 2a 2a 2a 2a 09 52 4f 55 54 49 4e 45 20 54 4f 20 ┆; **** ROUTINE TO ┆ 0x5fa0…5fc0 49 4e 49 54 20 28 52 45 49 4e 49 54 49 41 4c 49 5a 45 29 20 4f 4e 45 20 54 45 52 4d 49 4e 41 4c ┆INIT (REINITIALIZE) ONE TERMINAL┆ 0x5fc0…5fe0 0d 0a 3b 20 2a 2a 2a 2a 0d 0a 3b 09 50 41 52 41 4d 3a 09 52 45 47 20 41 20 3d 20 44 45 56 4e 4f ┆ ; **** ; PARAM: REG A = DEVNO┆ 0x5fe0…6000 20 28 30 2e 2e 32 29 3b 0d 0a 0d 0a 54 49 4e 49 54 3a 09 4d 4f 56 09 48 2c 41 09 3b 42 45 47 49 ┆ (0..2); TINIT: MOV H,A ;BEGI┆ 0x6000…6020 (48,) 4e 0d 0a 09 52 4c 43 09 09 3b 20 52 45 53 45 54 20 55 41 52 54 3a 0d 0a 09 52 4c 43 09 09 3b 0d ┆N RLC ; RESET UART: RLC ; ┆ 0x6020…6040 0a 09 4c 58 49 09 44 45 2c 54 45 52 4d 31 2b 33 09 3b 0d 0a 09 43 41 4c 4c 09 44 45 41 44 44 09 ┆ LXI DE,TERM1+3 ; CALL DEADD ┆ 0x6040…6060 3b 20 20 20 43 4f 4d 4d 41 4e 44 20 3a 3d 20 52 45 53 45 54 20 45 52 52 4f 52 2c 44 49 53 41 42 ┆; COMMAND := RESET ERROR,DISAB┆ 0x6060…6080 4c 45 20 52 45 43 2c 58 4d 49 54 3b 0d 0a 09 4d 56 49 09 41 2c 32 30 09 3b 20 45 4e 44 20 52 45 ┆LE REC,XMIT; MVI A,20 ; END RE┆ 0x6080…60a0 53 45 54 3b 0d 0a 09 53 54 41 58 09 44 45 09 3b 0d 0a 0d 0a 09 58 52 41 09 41 09 3b 20 52 45 49 ┆SET; STAX DE ; XRA A ; REI┆ 0x60a0…60c0 4e 49 54 49 41 4c 49 5a 45 20 55 41 52 54 3a 0d 0a 09 4d 4f 56 09 44 2c 48 09 3b 0d 0a 09 41 44 ┆NITIALIZE UART: MOV D,H ; AD┆ 0x60c0…60e0 44 09 44 09 3b 0d 0a 09 41 44 44 09 44 09 3b 0d 0a 09 41 44 44 09 44 09 3b 0d 0a 09 4c 58 49 09 ┆D D ; ADD D ; ADD D ; LXI ┆ 0x60e0…6100 42 43 2c 4d 54 41 42 2b 33 09 3b 0d 0a 09 43 41 4c 4c 09 42 43 41 44 44 09 3b 20 20 20 47 45 54 ┆BC,MTAB+3 ; CALL BCADD ; GET┆ 0x6100…6120 20 50 41 52 41 4d 20 54 41 42 4c 45 20 41 44 44 52 45 53 53 3b 0d 0a 09 4d 4f 56 09 41 2c 48 09 ┆ PARAM TABLE ADDRESS; MOV A,H ┆ 0x6120…6140 3b 0d 0a 09 52 4c 43 09 09 3b 0d 0a 09 52 4c 43 09 09 3b 0d 0a 09 4c 58 49 09 44 45 2c 54 45 52 ┆; RLC ; RLC ; LXI DE,TER┆ 0x6140…6160 4d 31 2b 32 09 3b 0d 0a 09 43 41 4c 4c 09 44 45 41 44 44 09 3b 20 20 20 20 47 45 54 20 44 45 56 ┆M1+2 ; CALL DEADD ; GET DEV┆ 0x6160…6180 49 43 45 20 41 44 44 52 45 53 53 20 54 41 42 4c 45 20 41 44 44 52 45 53 53 3b 3b 0d 0a 09 50 55 ┆ICE ADDRESS TABLE ADDRESS;; PU┆ 0x6180…61a0 53 48 09 48 4c 09 3b 0d 0a 09 4c 44 41 09 53 54 52 50 32 09 3b 0d 0a 09 52 4c 43 09 09 3b 0d 0a ┆SH HL ; LDA STRP2 ; RLC ; ┆ 0x61a0…61c0 09 41 4e 49 09 32 30 30 09 3b 20 20 20 20 47 45 54 20 27 53 54 4f 50 20 42 49 54 53 20 53 45 4c ┆ ANI 200 ; GET 'STOP BITS SEL┆ 0x61c0…61e0 45 43 54 27 3b 0d 0a 09 4d 4f 56 09 4c 2c 41 09 3b 0d 0a 09 4c 44 41 09 53 54 52 50 31 09 3b 20 ┆ECT'; MOV L,A ; LDA STRP1 ; ┆ 0x61e0…6200 20 20 20 47 45 54 20 27 42 41 55 44 20 52 41 54 45 20 53 45 4c 45 43 54 27 3b 0d 0a 09 41 4e 49 ┆ GET 'BAUD RATE SELECT'; ANI┆ 0x6200…6220 (49,) 09 31 37 09 3b 0d 0a 09 43 41 4c 4c 09 49 4e 49 54 55 09 3b 20 20 20 20 49 4e 49 54 20 55 41 52 ┆ 17 ; CALL INITU ; INIT UAR┆ 0x6220…6240 54 20 28 50 41 52 41 4d 2c 44 45 56 49 43 45 29 3b 0d 0a 09 50 4f 50 09 48 4c 09 3b 20 45 4e 44 ┆T (PARAM,DEVICE); POP HL ; END┆ 0x6240…6253 20 52 45 49 4e 49 54 49 41 4c 49 5a 45 3b 0d 0a 3b 0d 0a ┆ REINITIALIZE; ; ┆ 0x6253…6256 FormFeed { 0x6253…6256 0c 82 a9 ┆ ┆ 0x6253…6256 } 0x6256…6260 09 4d 56 49 09 4c 2c 30 09 3b ┆ MVI L,0 ;┆ 0x6260…6280 0d 0a 09 4d 4f 56 09 41 2c 48 09 3b 0d 0a 09 43 41 4c 4c 09 45 4d 50 54 31 09 3b 20 45 4d 50 54 ┆ MOV A,H ; CALL EMPT1 ; EMPT┆ 0x6280…62a0 59 20 58 4d 49 54 20 42 55 46 3b 0d 0a 09 4d 56 49 09 4c 2c 31 09 3b 0d 0a 09 4d 4f 56 09 41 2c ┆Y XMIT BUF; MVI L,1 ; MOV A,┆ 0x62a0…62c0 48 09 3b 0d 0a 09 43 41 4c 4c 09 45 4d 50 54 31 09 3b 20 45 4d 50 54 59 20 52 45 43 20 42 55 46 ┆H ; CALL EMPT1 ; EMPTY REC BUF┆ 0x62c0…62e0 3b 0d 0a 09 52 45 54 09 09 3b 0d 0a 0d 0a 3b 09 4d 4f 56 09 45 2c 48 09 3b 0d 0a 3b 09 58 52 41 ┆; RET ; ; MOV E,H ; ; XRA┆ 0x62e0…6300 09 41 09 3b 0d 0a 3b 09 4d 4f 56 09 44 2c 41 09 3b 0d 0a 3b 09 4c 58 49 09 48 4c 2c 4d 4f 44 45 ┆ A ; ; MOV D,A ; ; LXI HL,MODE┆ 0x6300…6320 31 09 3b 0d 0a 3b 09 44 41 44 09 44 45 09 3b 0d 0a 3b 09 4d 56 49 09 41 2c 31 09 3b 0d 0a 3b 09 ┆1 ; ; DAD DE ; ; MVI A,1 ; ; ┆ 0x6320…6340 4d 4f 56 09 4d 2c 41 09 3b 20 52 45 53 45 54 20 54 45 52 4d 49 4e 41 4c 20 4d 4f 44 45 20 54 4f ┆MOV M,A ; RESET TERMINAL MODE TO┆ 0x6340…6360 20 43 4f 4e 54 52 4f 4c 20 4d 4f 44 45 3b 0d 0a 3b 09 4c 58 49 09 48 4c 2c 53 54 41 42 31 09 3b ┆ CONTROL MODE; ; LXI HL,STAB1 ;┆ 0x6360…6380 0d 0a 3b 09 44 41 44 09 44 45 09 3b 0d 0a 3b 09 4d 56 49 09 41 2c 31 09 3b 0d 0a 3b 09 4d 4f 56 ┆ ; DAD DE ; ; MVI A,1 ; ; MOV┆ 0x6380…63a0 09 4d 2c 41 09 3b 20 53 45 54 20 53 54 41 54 55 53 20 52 45 4d 20 54 4f 20 56 32 34 2d 45 52 52 ┆ M,A ; SET STATUS REM TO V24-ERR┆ 0x63a0…63c0 4f 52 20 53 54 41 54 55 53 3b 0d 0a 3b 09 4c 58 49 09 48 4c 2c 53 54 41 46 31 09 3b 0d 0a 3b 09 ┆OR STATUS; ; LXI HL,STAF1 ; ; ┆ 0x63c0…63e0 44 41 44 09 44 45 09 3b 0d 0a 3b 09 4d 4f 56 09 4d 2c 41 09 3b 20 53 45 54 20 53 54 41 54 55 53 ┆DAD DE ; ; MOV M,A ; SET STATUS┆ 0x63e0…6400 20 46 4c 41 47 20 27 53 54 41 54 55 53 20 4e 4f 54 20 50 52 4f 43 45 53 53 45 44 27 3b 0d 0a 3b ┆ FLAG 'STATUS NOT PROCESSED'; ;┆ 0x6400…6412 (50,) 09 52 45 54 09 09 3b 45 4e 44 20 49 4e 49 54 3b 0d 0a ┆ RET ;END INIT; ┆ 0x6412…6415 FormFeed { 0x6412…6415 0c 81 c6 ┆ ┆ 0x6412…6415 } 0x6415…6420 0d 0a 09 2e 4c 4f 43 09 30 0d 0a ┆ .LOC 0 ┆ 0x6420…6440 0d 0a 09 4a 4d 50 09 58 49 4e 49 54 09 3b 20 50 4f 57 45 52 20 52 45 53 54 41 52 54 2e 0d 0a 0d ┆ JMP XINIT ; POWER RESTART. ┆ 0x6440…6460 0a 09 2e 4c 4f 43 09 37 30 0d 0a 09 4a 4d 50 09 58 49 52 45 43 09 3b 20 48 4f 53 54 20 52 45 43 ┆ .LOC 70 JMP XIREC ; HOST REC┆ 0x6460…6480 20 49 4e 54 45 52 52 55 50 54 2e 0d 0a 09 52 45 54 0d 0a 09 4a 4d 50 09 58 49 4d 49 54 09 3b 20 ┆ INTERRUPT. RET JMP XIMIT ; ┆ 0x6480…64a0 48 4f 53 54 20 58 4d 54 20 49 4e 54 45 52 52 55 50 54 2e 0d 0a 09 52 45 54 0d 0a 0d 0a 09 2e 45 ┆HOST XMT INTERRUPT. RET .E┆ 0x64a0…64a6 4e 44 0d 0a 0d 0a ┆ND ┆ 0x64a6…64a9 FormFeed { 0x64a6…64a9 0c 00 00 ┆ ┆ 0x64a6…64a9 } 0x64a9…64c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ┆ ┆ 0x64c0…64e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ┆ ┆ […0xb…] 0x6640…6660 00 00 00 00 00 00 00 00 00 00 1a 1a 1a 1a 1a 1a 1a 1a 1a 1a 1a 1a 1a 1a 1a 1a 1a 1a 1a 1a 1a 1a ┆ ┆ 0x6660…6680 1a 1a 1a 1a 1a 1a 1a 1a 1a 1a 1a 1a 1a 1a 1a 1a 1a 1a 1a 1a 1a 1a 1a 1a 1a 1a 1a 1a 1a 1a 1a 1a ┆ ┆