'Mult I/O test' MACRO-80 3.36 17-Mar-80 PAGE 1 '(c) 1981 Morrow Designs' subttl '(c) 1981 Morrow Designs' title 'Mult I/O test' 0000' aseg org 0100h .z80 000D ACR equ 0Dh ;carriage return 000A ALF equ 0Ah ;line feed 0020 ASP equ ' ' ;space 000C AFF equ 0Ch ;form feed 0007 BEl equ 07H ;bell 0008 BSP equ 08H ;backspace 001A CLEAR equ 01ah ; ascii clear screen 001B ESC equ 01bh ; ascii escape char 0000 ANUL equ 0 ; ascii null 0005 bdos equ 5 0027 AQU equ 027h ;ascii quote ;**************************************************************** ;* * ;* Wunderbus I/O equates: * ;* * ;**************************************************************** 0048 base equ 048h ;I/O base address of wunderbus ports 0000 group0 equ 00h 0001 group1 equ 01h ;serial port 1 0002 group2 equ 02h ;serial port 2 0003 group3 equ 03h ;serial port 3 004F grpctl equ base+7 ;I/O group select port ; primary UART equates 0048 dll equ base ;divisor latch lsb 0049 dlm equ base+1 ;divisor latch msb 0049 ier equ base+1 ;interupt enable register 004B lcr equ base+3 ;line control register 004C mcr equ base+4 ;modem control register 004D lsr equ base+5 ;line status register 0048 rbr equ base ;read data buffer 0048 thr equ base ;transmitter data buffer ; secondary i/o equates 0058 sbase equ 058h ;I/O base address of wunderbus ports 005F sgrpctl equ sbase+7 ;I/O group select port 'Mult I/O test' MACRO-80 3.36 17-Mar-80 PAGE 1-1 '(c) 1981 Morrow Designs' 0058 sdll equ sbase ;divisor latch lsb 0059 sdlm equ sbase+1 ;divisor latch msb 0059 sier equ sbase+1 ;interupt enable register 005B slcr equ sbase+3 ;line control register 005C smcr equ sbase+4 ;modem control register 005D slsr equ sbase+5 ;line status register 0058 srbr equ sbase ;read data buffer 0058 sthr equ sbase ;transmitter data buffer 0080 dlab equ 80h ;divisor latch access bit 0020 thre equ 20h ;status line TBE 0001 dr equ 01 ;line status DR bit 0001 wls0 equ 01 ;word length select bit 0 0002 wls1 equ 02 ;word length select bit 1 (for 8 bit word) 0004 stb equ 04 ;stop bit count (2 stop bits) 0000 imask equ 00 ;non interupt mode 0010 loop equ 010h ;UART loop mode ;************************ ;* B E G I N * ;************************ 0100 31 1000 init: ld sp,1000h 0103 1E 1A ld e,CLEAR 0105 CD 0337 call printf ;clear screen 0108 11 036E ld de,signon 010B CD 0344 call pstring ; announce test 010E 3E 09 ld a,9 ;select group 1 0110 D3 5F out (sgrpctl),a 0112 DB 58 in a,(sthr) ; read the buffer 0114 FE FF cp 0ffh ; should be 0 if present 0116 20 05 jr nz,init1 0118 11 0592 ld de,ports3 011B 18 03 jr init2 011D 11 0577 init1: ld de,ports6 0120 CD 0344 init2: call pstring 0123 CD 015B call uartst ; initialize the uarts 0126 CD 01BA call bufill ; initialize buffers 0129 CD 01CB call test0 012C CD 01CB main: call test0 'Mult I/O test' MACRO-80 3.36 17-Mar-80 PAGE 1-2 '(c) 1981 Morrow Designs' 012F CD 0259 call test2 0132 21 05AD ld hl,qbf 0135 22 063E ld (pattern),hl 0138 CD 0234 call test1 ; quick brown fox 013B CD 0259 call test2 013E 21 05F5 ld hl,lqbf 0141 22 063E ld (pattern),hl ; again with lower case 0144 CD 0234 call test1 0147 CD 02F5 main2: call pbuffs ; print the buffers 014A 11 8000 ld de,8000h 014D D5 main3: push de 014E CD 0259 call test2 ; check for character input 0151 D1 pop de 0152 1B dec de 0153 7A ld a,d 0154 B3 or e 0155 C2 014D jp nz,main3 0158 C3 0147 jp main2 ;******************************************************** ;* * ;* The following code intitializes the I/O for * ;* the Decision 1 Motherboard and the Mult I/O. * ;* * ;******************************************************** 015B 16 01 uartst: ld d,1 ;start with uart 1 015D 7A uarts0: ld a,d 015E D3 4F out (grpctl),a 0160 D3 5F out (sgrpctl),a 0162 AF xor a 0163 D3 4D out (lsr),a ;clear line status register 0165 D3 5D out (slsr),a 0167 D3 49 out (ier),a ;initialialize interupt mask (off) 0169 D3 59 out (sier),a 016B 15 dec d 016C 20 EF jr nz,uarts0 016E D3 4F out (grpctl),a ;select sense switch port 0170 D3 5F out (sgrpctl),a 0172 DB 49 in a,(base+1) 0174 07 rlca 0175 07 rlca 0176 07 rlca 'Mult I/O test' MACRO-80 3.36 17-Mar-80 PAGE 1-3 '(c) 1981 Morrow Designs' 0177 E6 07 and 07h ;mask insignificant bits 0179 FE 07 cp 07h ;all off? 017B 16 00 ld d,0 017D 28 0B jr z,default ;default if all off 017F 21 0360 ld hl,btable ;point to baud rate table 0182 87 add a,a 0183 5F ld e,a 0184 19 add hl,de ;offset to selected baud rate 0185 4E ld c,(hl) 0186 23 inc hl 0187 46 ld b,(hl) ;bc = baud rate divisor value (D) 0188 18 03 jr setit 018A default: 018A 01 000C ld bc,12 ;default baud rate is 9600 018D 14 setit: inc d 018E 7A ld a,d 018F FE 04 cp 04h ;all UARTS initialized?? 0191 20 05 jr nz,setit1 ; keep going till done 0193 3E 01 ld a,1 0195 D3 4F out (grpctl),a ;set group back to ttyA 0197 C9 ret 0198 D3 4F setit1: out (grpctl),a 019A D3 5F out (sgrpctl),a 019C 3E 87 ld a,dlab+wls1+wls0+stb 019E D3 4B out (lcr),a ;divisor access bit is on 01A0 D3 5B out (slcr),a 01A2 78 ld a,b 01A3 D3 49 out (dlm),a ;load high divisor register 01A5 D3 59 out (sdlm),a 01A7 79 ld a,c 01A8 D3 48 out (dll),a ;load low divisor register 01AA D3 58 out (sdll),a 01AC 3E 07 ld a,wls1+wls0+stb 01AE D3 4B out (lcr),a ;divisor access bit is off 01B0 D3 5B out (slcr),a 01B2 3E 03 ld a,03h 01B4 D3 49 out (ier),a ;enable the interrupts 01B6 D3 59 out (sier),a 01B8 18 D3 jr setit ;loop till all UARTS initialized ; initialize the tty input buffers with an ASCII null 'Mult I/O test' MACRO-80 3.36 17-Mar-80 PAGE 1-4 '(c) 1981 Morrow Designs' 01BA bufill: 01BA 3E 00 ld a,ANUL ; fill character 01BC 21 0820 ld hl,bufend ; point to beginning of buffer 01BF 11 0640 ld de,abuff ; point to end of buffer 01C2 77 bufl0: ld (hl),a 01C3 2B dec hl ; next location 01C4 E5 push hl 01C5 ED 52 sbc hl,de ; check for end of buffer 01C7 E1 pop hl 01C8 20 F8 jr nz,bufl0 01CA C9 ret ; send the barber pole pattern 01CB 0E 03 test0: ld c,3 01CD 79 test00: ld a,c 01CE 06 30 ld b,'0' ;start with ascii zero 01D0 D3 4F out (grpctl),a ;select uart 01D2 D3 5F out (sgrpctl),a 01D4 CD 01EA test01: call tmout ;print it 01D7 CD 01FE call stmt 01DA 04 inc b 01DB 78 ld a,b 01DC FE 7B cp 'z' + 1 01DE 20 F4 jr nz,test01 01E0 CD 0216 call acrlf 01E3 CD 0225 call scrlf 01E6 0D dec c 01E7 20 E4 jr nz,test00 ;next uart 01E9 C9 ret ; send the character to primary I/O all resgisters preserved 01EA D5 tmout: push de 01EB F5 push af 01EC 16 00 ld d,0h ;retry count 01EE tmout1: 01EE 15 dec d 01EF CA 01FB jp z,tmret ;keep trying (255 times) 01F2 DB 4D conout: in a,(lsr) 01F4 E6 20 and thre 'Mult I/O test' MACRO-80 3.36 17-Mar-80 PAGE 1-5 '(c) 1981 Morrow Designs' 01F6 28 FA jr z,conout 01F8 78 ld a,b 01F9 D3 48 out (thr),a ;send char./clear interrupt 01FB F1 tmret: pop af 01FC D1 pop de 01FD C9 ret ; send character to secondary I/O all resgisters preserved 01FE D5 stmt: push de 01FF F5 push af 0200 16 00 ld d,0h 0202 stmt1: 0202 15 dec d 0203 CA 0213 jp z,scret 0206 DB 5D scout: in a,(slsr) 0208 FE FF cp 0ffh ;check for mio present 020A 28 07 jr z,scret ; return if none present 020C E6 20 and thre 020E 28 F6 jr z,scout 0210 78 ld a,b 0211 D3 58 out (sthr),a 0213 F1 scret: pop af 0214 D1 pop de 0215 C9 ret ; a carriage return / line feed with direct I/O 0216 C5 acrlf: push bc 0217 06 0A ld b,ALF 0219 CD 01EA call tmout 021C C1 pop bc 021D C5 pacr: push bc 021E 06 0D ld b,ACR 0220 CD 01EA call tmout 0223 C1 pop bc 0224 C9 ret 0225 C5 scrlf: push bc 0226 06 0A ld b,ALF 0228 CD 01FE call stmt 022B C1 pop bc 'Mult I/O test' MACRO-80 3.36 17-Mar-80 PAGE 1-6 '(c) 1981 Morrow Designs' 022C C5 psacr: push bc 022D 06 0D ld b,ACR 022F CD 01FE call stmt 0232 C1 pop bc 0233 C9 ret ; send the string 0234 0E 03 test1: ld c,3 0236 strng1: 0236 2A 063E ld hl,(pattern) ;get the pattern address 0239 strng2: 0239 79 ld a,c 023A D3 4F out (grpctl),a ;select uart 023C D3 5F out (sgrpctl),a 023E strng3: 023E 7E ld a,(hl) 023F FE 24 cp '$' ; loop till end of string 0241 CA 024F jp z,strng4 0244 23 inc hl 0245 47 ld b,a 0246 CD 01EA call tmout ;print it 0249 CD 01FE call stmt 024C C3 023E jp strng3 024F strng4: 024F CD 0216 call acrlf ; new line 0252 CD 0225 call scrlf 0255 0D dec c 0256 20 DE jr nz,strng1 ; loop for all uarts 0258 C9 ret ; check for uart character received 0259 3E 00 test2: ld a,0 025B 32 063D ld (board),a ; save for storit routine 025E 0E 03 ld c,3 0260 79 getchr: ld a,c 0261 D3 4F out (grpctl),a ; select the next uart 0263 32 063C ld (uart),a ; save for storit routine 0266 CD 028C call cstat ; was key pressed 0269 FE 00 cp 0 ; returns zero if not 026B C4 02C1 call nz,storit ; save it in buffer 'Mult I/O test' MACRO-80 3.36 17-Mar-80 PAGE 1-7 '(c) 1981 Morrow Designs' 026E 0D dec c 026F C2 0260 jp nz,getchr ; check second board 0272 3E 01 tst2: ld a,1 0274 32 063D ld (board),a ; save for storit routine 0277 0E 03 ld c,3 0279 79 sgtchr: ld a,c 027A D3 5F out (sgrpctl),a ; select the next uart 027C 32 063C ld (uart),a ; save for storit routine 027F CD 02A3 call scstat ; was key pressed 0282 FE 00 cp 0 ; returns zero if not 0284 C4 02C1 call nz,storit ; save it in buffer 0287 0D dec c 0288 C2 0279 jp nz,sgtchr 028B C9 ret ; check 1st 3 ports for data ready 028C DB 4D cstat: in a,(lsr) 028E E6 01 and dr ; check for character present 0290 C8 ret z 0291 DB 48 in a,(rbr) 0293 E6 7F and 07fh 0295 47 ld b,a 0296 FE 03 cp 03 ; check for ^C to quit 0298 CA 0000 jp z,0 ; quit if escape typed 029B FE 1B cp ESC 029D CA 0100 jp z,init 02A0 D3 48 out (thr),a ; echo it 02A2 C9 ret ; check second 3 ports for data ready 02A3 DB 5D scstat: in a,(slsr) 02A5 FE FF cp 0ffh 02A7 20 03 jr nz,scst1 02A9 3E 00 ld a,0 02AB C9 ret 02AC E6 01 scst1: and dr ; check for character present 02AE C8 ret z 02AF DB 58 in a,(srbr) 02B1 E6 7F and 07fh 02B3 47 ld b,a 'Mult I/O test' MACRO-80 3.36 17-Mar-80 PAGE 1-8 '(c) 1981 Morrow Designs' 02B4 FE 03 cp 03 ; check for ^C to quit 02B6 CA 0000 jp z,0 ; quit if escape typed 02B9 FE 1B cp ESC 02BB CA 0100 jp z,init 02BE D3 58 out (sthr),a ; echo it 02C0 C9 ret ; routine entered with character in the b register ; and uart # and board expected in memory storage ; uart, board. Character stored in the apropriate ; line buffer location. Only the bc registers preserved. 02C1 C5 storit: push bc 02C2 21 0640 ld hl,abuff ; offset for first board 02C5 11 0050 ld de,80 ; buffer size 02C8 3A 063D ld a,(board) 02CB FE 00 cp 0 02CD CA 02D3 jp z,calcit 02D0 21 0730 ld hl,dbuff ;offset for second board 02D3 3A 063C calcit: ld a,(uart) ; make it a number 02D6 4F ld c,a ; -from 0 - 5 02D7 0D calc1: dec c 02D8 CA 02E0 jp z,calc2 02DB ED 5A adc hl,de ; get the right buffer 02DD C3 02D7 jp calc1 ; loop till right offset 02E0 7E calc2: ld a,(hl) ; get the byte count 02E1 3C inc a 02E2 FE 4F cp 79 ; end of line? 02E4 C2 02E9 jp nz,calc3 02E7 3E 00 ld a,0 02E9 77 calc3: ld (hl),a ; update byte counter 02EA 23 inc hl ; point to data buffer 02EB D5 push de 02EC 5F ld e,a 02ED 16 00 ld d,0 02EF ED 5A adc hl,de ; offset to right byte 02F1 D1 pop de 02F2 70 ld (hl),b 02F3 C1 pop bc 02F4 C9 ret 'Mult I/O test' MACRO-80 3.36 17-Mar-80 PAGE 1-9 '(c) 1981 Morrow Designs' ; pbuffs uses prints the buffer contents ; ... first select and print the first 3 ports 02F5 21 0640 pbuffs: ld hl,abuff ;point to beginning of buffers 02F8 0E 01 pbuf1: ld c,1 ; uart count 02FA 79 pbuf2: ld a,c 02FB D3 4F out (grpctl),a ; select uart 02FD CD 021D call pacr 0300 16 4F ld d,79 ; byte count 0302 23 pbuf3: inc hl 0303 46 ld b,(hl) ; get character 0304 CD 01EA call tmout ; print it 0307 15 dec d 0308 C2 0302 jp nz,pbuf3 ;print the whole buffer 030B 0C inc c 030C 79 ld a,c 030D FE 04 cp 4 030F CA 0316 jp z,spbuf 0312 23 inc hl ; skip the size byte 0313 C3 02FA jp pbuf2 ; ...then select and print the 2nd three ports 0316 21 0730 spbuf: ld hl,dbuff ;point to beginning of buffers 0319 0E 01 spbf1: ld c,1 ; uart count 031B 79 spbf2: ld a,c 031C D3 5F out (sgrpctl),a ; select uart 031E CD 022C call psacr 0321 16 4F ld d,79 ; byte count 0323 23 spbf3: inc hl 0324 46 ld b,(hl) ; get character 0325 CD 01FE call stmt ; print it 0328 15 dec d 0329 C2 0323 jp nz,spbf3 ;print the whole buffer 032C 0C inc c 032D 79 ld a,c 032E FE 04 cp 4 0330 C8 ret z 0331 23 inc hl ; skip the size byte 'Mult I/O test' MACRO-80 3.36 17-Mar-80 PAGE 1-10 '(c) 1981 Morrow Designs' 0332 C3 031B jp spbf2 ;*************************** ;* CP/M related stuff * ;*************************** ; print a crlf through cp/m 0335 1E 0D crlf: ld e,ACR 0337 0E 02 printf: ld c,2 0339 CD 0005 call bdos 033C 0E 02 ld c,2 033E 1E 0A ld e,ALF 0340 CD 0005 call bdos 0343 C9 ret ; Print string (de = string on entry) 0344 pstring: 0344 0E 09 ld c,9 0346 CD 0005 call bdos 0349 CD 0335 call crlf 034C C9 ret ; wait for an "ESCAPE" to be typed 034D 0E 0B escape: ld c,0bh ; check for key pressed 034F CD 0005 call bdos 0352 FE 00 cp 0 0354 C8 ret z ; return if not pressed 0355 0E 01 ld c,1 0357 CD 0005 call bdos ; get character 035A FE 1B cp ESC ; was it the escape key? 035C C0 ret nz 035D C3 0000 jp 0 ; return to cp/m ; Baud rate selection table for Mult I/o or WB I/O 0360 0417 btable: dw 1047 ;110 baud 0 0 0 0362 0180 dw 384 ;300 baud 0 0 1 0364 0060 dw 96 ;1200 baud 0 1 0 0366 0030 dw 48 ;2400 baud 0 1 1 'Mult I/O test' MACRO-80 3.36 17-Mar-80 PAGE 1-11 '(c) 1981 Morrow Designs' 0368 0018 dw 24 ;4800 baud 1 0 0 036A 000C dw 12 ;9600 baud 1 0 1 036C 0006 dw 6 ;19200 baud 1 1 0 036E 20 20 20 20 signon: db ' Morrow Designs serial port quick test (Rev.0)' 0372 20 20 20 20 0376 20 20 20 20 037A 4D 6F 72 72 037E 6F 77 20 44 0382 65 73 69 67 0386 6E 73 20 73 038A 65 72 69 61 038E 6C 20 70 6F 0392 72 74 20 71 0396 75 69 63 6B 039A 20 74 65 73 039E 74 20 28 52 03A2 65 76 2E 30 03A6 29 03A7 0D 0A db ACR,ALF 03A9 20 20 20 20 db ' for testing Decision 1 computers (including D220).' 03AD 20 20 20 20 03B1 20 20 66 6F 03B5 72 20 74 65 03B9 73 74 69 6E 03BD 67 20 44 65 03C1 63 69 73 69 03C5 6F 6E 20 31 03C9 20 63 6F 6D 03CD 70 75 74 65 03D1 72 73 20 28 03D5 69 6E 63 6C 03D9 75 64 69 6E 03DD 67 20 44 32 03E1 32 30 29 2E 03E5 0D 0A db ACR,ALF 03E7 20 20 20 20 db ' (c) 1984, Morrow Designs ' 03EB 20 20 20 20 03EF 20 20 20 20 03F3 20 20 20 20 03F7 20 20 20 20 03FB 20 28 63 29 03FF 20 31 39 38 0403 34 2C 20 4D 0407 6F 72 72 6F 'Mult I/O test' MACRO-80 3.36 17-Mar-80 PAGE 1-12 '(c) 1981 Morrow Designs' 040B 77 20 44 65 040F 73 69 67 6E 0413 73 20 0415 0D 0A 0A 0A db ACR,ALF,ALF,ALF 0419 54 79 70 65 db 'Type on any terminal: => control C to return to CP/M.' 041D 20 6F 6E 20 0421 61 6E 79 20 0425 74 65 72 6D 0429 69 6E 61 6C 042D 3A 20 20 20 0431 3D 3E 20 20 0435 20 20 63 6F 0439 6E 74 72 6F 043D 6C 20 43 20 0441 74 6F 20 72 0445 65 74 75 72 0449 6E 20 74 6F 044D 20 43 50 2F 0451 4D 2E 0453 0D 0A 0A db ACR,ALF,ALF 0456 20 20 20 20 db ' => ESC to redraw the test patterns.' 045A 20 20 20 20 045E 20 20 20 20 0462 20 20 20 20 0466 20 20 20 20 046A 20 20 20 20 046E 3D 3E 20 20 0472 20 20 45 53 0476 43 20 74 6F 047A 20 72 65 64 047E 72 61 77 20 0482 74 68 65 20 0486 74 65 73 74 048A 20 70 61 74 048E 74 65 72 6E 0492 73 2E 0494 0D 0A 0A db ACR,ALF,ALF 0497 20 20 20 20 db ' => any other key will be echoed, then captured ' 049B 20 20 20 20 049F 20 20 20 20 04A3 20 20 20 20 04A7 20 20 20 20 04AB 20 20 20 20 04AF 3D 3E 20 20 04B3 20 20 61 6E 04B7 79 20 6F 74 'Mult I/O test' MACRO-80 3.36 17-Mar-80 PAGE 1-13 '(c) 1981 Morrow Designs' 04BB 68 65 72 20 04BF 6B 65 79 20 04C3 77 69 6C 6C 04C7 20 62 65 20 04CB 65 63 68 6F 04CF 65 64 2C 20 04D3 74 68 65 6E 04D7 20 63 61 70 04DB 74 75 72 65 04DF 64 20 04E1 0D 0A db ACR,ALF 04E3 20 20 20 20 db ' in a read buffer. The buffer will be sent to ' 04E7 20 20 20 20 04EB 20 20 20 20 04EF 20 20 09 09 04F3 20 20 20 20 04F7 20 20 69 6E 04FB 20 61 20 72 04FF 65 61 64 20 0503 62 75 66 66 0507 65 72 2E 20 050B 54 68 65 20 050F 62 75 66 66 0513 65 72 20 77 0517 69 6C 6C 20 051B 62 65 20 73 051F 65 6E 74 20 0523 74 6F 20 0526 0D 0A db ACR,ALF 0528 20 20 20 20 db ' the appropriate port at 10 second intervals. ' 052C 20 20 20 20 0530 20 20 20 20 0534 20 20 20 20 0538 20 20 20 20 053C 20 20 20 20 0540 20 20 20 20 0544 20 20 74 68 0548 65 20 61 70 054C 70 72 6F 70 0550 72 69 61 74 0554 65 20 70 6F 0558 72 74 20 61 055C 74 20 31 30 0560 20 73 65 63 0564 6F 6E 64 20 0568 69 6E 74 65 'Mult I/O test' MACRO-80 3.36 17-Mar-80 PAGE 1-14 '(c) 1981 Morrow Designs' 056C 72 76 61 6C 0570 73 2E 20 0573 0D 0A 0A 24 db ACR,ALF,ALF, '$' 0577 20 4E 6F 77 ports6: db ' Now testing 6 ports... ' 057B 20 74 65 73 057F 74 69 6E 67 0583 20 36 20 70 0587 6F 72 74 73 058B 2E 2E 2E 20 058F 0D 0A 24 db ACR,ALF,'$' 0592 20 4E 6F 77 ports3: db ' Now testing 3 ports... ' 0596 20 74 65 73 059A 74 69 6E 67 059E 20 33 20 70 05A2 6F 72 74 73 05A6 2E 2E 2E 20 05AA 0D 0A 24 db ACR,ALF,'$' 05AD 0D 0A 0A qbf: db ACR,ALF,ALF 05B0 20 20 20 20 db ' THE QUICK BROWN FOX JUMPED OVER THE LAZY DOG', AQU, 'S BACK 0123456789 $' 05B4 20 54 48 45 05B8 20 51 55 49 05BC 43 4B 20 42 05C0 52 4F 57 4E 05C4 20 46 4F 58 05C8 20 4A 55 4D 05CC 50 45 44 20 05D0 4F 56 45 52 05D4 20 54 48 45 05D8 20 4C 41 5A 05DC 59 20 44 4F 05E0 47 27 53 20 05E4 42 41 43 4B 05E8 20 30 31 32 05EC 33 34 35 36 05F0 37 38 39 20 05F4 24 05F5 lqbf: 05F5 20 20 20 20 db ' the quick brown fox jumped over the lazy dog', AQU, 's back 0123456789 ' 05F9 20 74 68 65 05FD 20 71 75 69 0601 63 6B 20 62 0605 72 6F 77 6E 0609 20 66 6F 78 'Mult I/O test' MACRO-80 3.36 17-Mar-80 PAGE 1-15 '(c) 1981 Morrow Designs' 060D 20 6A 75 6D 0611 70 65 64 20 0615 6F 76 65 72 0619 20 74 68 65 061D 20 6C 61 7A 0621 79 20 64 6F 0625 67 27 73 20 0629 62 61 63 6B 062D 20 30 31 32 0631 33 34 35 36 0635 37 38 39 20 0639 0D 0A 24 db ACR,ALF, '$' 063C 00 uart: db 0 063D 00 board: db 0 063E pattern: 063E 0000 dw 0 ; first byte is buffer position ; next 80 are the characters to print 0640 abuff: ds 80 0690 bbuff: ds 80 06E0 cbuff: ds 80 0730 dbuff: ds 80 0780 ebuff: ds 80 07D0 fbuff: ds 80 0820 bufend equ $ end 'Mult I/O test' MACRO-80 3.36 17-Mar-80 PAGE S '(c) 1981 Morrow Designs' Macros: Symbols: ABUFF 0640 ACR 000D ACRLF 0216 AFF 000C ALF 000A ANUL 0000 AQU 0027 ASP 0020 BASE 0048 BBUFF 0690 BDOS 0005 BEL 0007 BOARD 063D BSP 0008 BTABLE 0360 BUFEND 0820 BUFILL 01BA BUFL0 01C2 CALC1 02D7 CALC2 02E0 CALC3 02E9 CALCIT 02D3 CBUFF 06E0 CLEAR 001A CONOUT 01F2 CRLF 0335 CSTAT 028C DBUFF 0730 DEFAUL 018A DLAB 0080 DLL 0048 DLM 0049 DR 0001 EBUFF 0780 ESC 001B ESCAPE 034D FBUFF 07D0 GETCHR 0260 GROUP0 0000 GROUP1 0001 GROUP2 0002 GROUP3 0003 GRPCTL 004F IER 0049 IMASK 0000 INIT 0100 INIT1 011D INIT2 0120 LCR 004B LOOP 0010 LQBF 05F5 LSR 004D MAIN 012C MAIN2 0147 MAIN3 014D MCR 004C PACR 021D PATTER 063E PBUF1 02F8 PBUF2 02FA PBUF3 0302 PBUFFS 02F5 PORTS3 0592 PORTS6 0577 PRINTF 0337 PSACR 022C PSTRIN 0344 QBF 05AD RBR 0048 SBASE 0058 SCOUT 0206 SCRET 0213 SCRLF 0225 SCST1 02AC SCSTAT 02A3 SDLL 0058 SDLM 0059 SETIT 018D SETIT1 0198 SGRPCT 005F SGTCHR 0279 SIER 0059 SIGNON 036E SLCR 005B SLSR 005D SMCR 005C SPBF1 0319 SPBF2 031B SPBF3 0323 SPBUF 0316 SRBR 0058 STB 0004 STHR 0058 STMT 01FE STMT1 0202 STORIT 02C1 STRNG1 0236 STRNG2 0239 STRNG3 023E STRNG4 024F TEST0 01CB TEST00 01CD TEST01 01D4 TEST1 0234 TEST2 0259 THR 0048 THRE 0020 TMOUT 01EA TMOUT1 01EE TMRET 01FB TST2 0272 UART 063C UARTS0 015D UARTST 015B WLS0 0001 WLS1 0002 No Fatal error(s) 059 SETIT 018D SETIT1 0198 SGRPCT 005F SGTCHR 0279 SIER 0059 SIGNON 036E SLCR 005B SLSR 005D SMCR 0