; ************************* ; * * ; * IO TO RAM TEST. * ; * * ; ************************* ; 0100 ORG 0100H 0100 C3AB02 JMP START ; 0103 00 BASE DB 0 ;SPECIAL EQU'S AND RESERVED MEMORY 0104 00 ERRORS DB 0 0105 0302 SIZE DW 515 0107 0000 SBADR DW 0000 0109 00 ENABLE DB 0 ;THIS FLAG > 0 WILL DISABLE ERROR CHECK 010A 00 CCC DB 0 010B 00 DDD DB 0 010C 00 INCH DB 0 0012 = BYPASS EQU 18 ;ARBITRARY PATTERN TO BYPASS. THIS IS TO ; INSURE TEST FAIL WHEN HIGH BYTE OF ; SECT.BUFF ADDR. IS STRAPPED. ; 010D 0000 BCXTR DW 0000 ;MEMORY RESERVED FOR TEMPORARY REGISTER STORAGE 010F 0000 DEXTR DW 0000 0111 0000 HLXTR DW 0000 0113 0000 AFXTR DW 0000 0115 00 CH DB 00 ;STORAGE FOR CHAR RETURNED IN A FROM BIOS CALLS ; 0005 = BIOS EQU 0005H ;STANDARD EQU ASSIGNMENTS 000D = CR EQU 13 000A = LF EQU 10 0007 = BELL EQU 7 0009 = TAB EQU 9 0024 = X EQU '$' 001B = BREAK EQU 27 ;CONTROL-C 0090 = X0 EQU 90H ; ; PROMPT MESSAGES 0116 070A0D094BM0 DB BELL,LF,CR,TAB,'KONAN IO TO SECTOR BUFFER TEST',LF,CR 013A 0952454C45 DB TAB,'RELEASE 1, REVISION 1 - 12/27/79',LF,LF,CR 015E 09414E5920 DB TAB,'ANY KEY WILL BEGIN OPERATION,',LF,CR 017E 0942555420 DB TAB,'BUT CONTROL-P WILL DISABLE ERROR PRINTING ',LF,CR 01AB 09414E2045 DB TAB,'AN ESCAPE WILL END TEST AT ANY TIME.',LF,LF,CR,X 01D4 5041535320M1 DB 'PASS ',X 01DA 0D0A24 M2 DB CR,LF,X ; ; ERROR MESSAGES 01DD 070A0D4452E1 DB BELL,LF,CR,'DRIVE SELECT ERROR',LF,CR,X 01F5 070A0D5345E2 DB BELL,LF,CR,'SEEK ERROR',LF,CR,X 0205 202820492FE3 DB ' ( I/O ERROR: ADDRESS,WRITTEN,READ )',LF,CR,X ; ; CONSOLE ROUTINES: 022D CD5C02 FUNC CALL SHOVE 0230 CD0500 CALL BIOS 0233 321501 STA CH 0236 CD6D02 CALL GRAB 0239 C9 RET 023A 0E01 CHIN MVI C,1 ;INPUT CHAR FROM KEYB. & RETURN IT IN A 023C CD2D02 CALL FUNC 023F 3A1501 LDA CH 0242 C9 RET 0243 CD5C02 CHOUT CALL SHOVE 0246 0E02 MVI C,2 ;PRINT CHAR IN E ON THE TUBE 0248 C32D02 JMP FUNC 024B CD5C02 MESSG CALL SHOVE 024E 0E09 MVI C,9 ;PRINT STRING WHOSE ADDR IS IN D/E ON TUBE 0250 C32D02 JMP FUNC 0253 0E0B CHSTAT MVI C,11 0255 CD0500 CALL BIOS 0258 321501 STA CH 025B C9 RET ; ; (DISK ROUTINES WOULD GO HERE IF NEEDED) ; ; SPECIAL ROUTINES: 025C 221101 SHOVE SHLD HLXTR 025F EB XCHG 0260 220F01 SHLD DEXTR 0263 C5 PUSH B 0264 E1 POP H 0265 220D01 SHLD BCXTR 0268 F5 PUSH PSW 0269 E1 POP H 026A 221301 SHLD AFXTR 026D 2A1301 GRAB LHLD AFXTR 0270 E5 PUSH H 0271 F1 POP PSW 0272 2A0D01 LHLD BCXTR 0275 E5 PUSH H 0276 C1 POP B 0277 2A0F01 LHLD DEXTR 027A EB XCHG 027B 2A1101 LHLD HLXTR 027E C9 RET ; 027F F5 HEX PUSH A ;OUTPUT A AS ASCII-HEX NUMBER 0280 E6F0 ANI 0F0H 0282 0F RRC 0283 0F RRC 0284 0F RRC 0285 0F RRC 0286 CD8C02 CALL H1 0289 F1 POP A 028A E60F ANI 00FH 028C FE0A H1 CPI 10 028E FA9302 JM H2 0291 C607 ADI 7 0293 C630 H2 ADI 48 0295 5F MOV E,A 0296 CD4302 CALL CHOUT 0299 C9 RET ; 029A CD5302 CONTC CALL CHSTAT 029D 3A1501 LDA CH 02A0 B7 ORA A 02A1 C8 RZ 02A2 CD3A02 CALL CHIN 02A5 FE1B CPI BREAK 02A7 CA0000 JZ 0000 02AA C9 RET ; ; ; ; 02AB 111601 START LXI D,M0 ;SIGN ON MESSAGE 02AE CD4B02 CALL MESSG 02B1 AF XRA A 02B2 320901 STA ENABLE 02B5 CD3A02 CALL CHIN 02B8 FE10 CPI 16 02BA C2C002 JNZ AGAIN 02BD 320901 STA ENABLE ; 02C0 210301 AGAIN LXI H,BASE 02C3 34 INR M 02C4 D397 OUT X0+7 ;WRITING SEC.BUFFER 02C6 210000 LXI H,0000 02C9 220701 SHLD SBADR ;ZEROING THE SEC.BUF.ADDR.COUNTER 02CC 2A0501 LHLD SIZE 02CF 3A0301 LDA BASE 02D2 47 MOV B,A 02D3 78 NEXTW MOV A,B 02D4 D394 OUT X0+4 02D6 04 INR B 02D7 78 MOV A,B ;THIS AND NEXT 3 LINES ARE NEW 02D8 FE12 CPI BYPASS 02DA C2DE02 JNZ KEEPW 02DD 04 INR B 02DE 2B KEEPW DCX H 02DF 7C MOV A,H 02E0 B5 ORA L 02E1 C2D302 JNZ NEXTW 02E4 CD9A02 CALL CONTC 02E7 D397 OUT X0+7 ;READING WHAT WAS WRITTEN ABOVE 02E9 2A0501 LHLD SIZE 02EC 3A0301 LDA BASE 02EF 57 MOV D,A 02F0 DB94 NEXTR IN X0+4 02F2 320C01 STA INCH 02F5 7A MOV A,D 02F6 320B01 STA DDD 02F9 3A0901 LDA ENABLE 02FC B7 ORA A 02FD C22203 JNZ FASTOK 0300 3A0C01 LDA INCH 0303 BA CMP D ;CHECKING TO SEE IF READ & WRITE CORRESPOND 0304 CA0E03 JZ ROK 0307 3E03 MVI A,3 0309 E5 PUSH H 030A CD3E03 CALL ERROR 030D E1 POP H 030E 3A0B01 ROK LDA DDD 0311 FE11 CPI BYPASS-1 ;THIS AND NEXT 2 LINES ARE NEW 0313 C21703 JNZ KEEPR 0316 3C INR A 0317 57 KEEPR MOV D,A 0318 14 INR D 0319 E5 PUSH H ;INCREMENTING THE SECT.BUFF.ADDR.COUNTER 031A 2A0701 LHLD SBADR 031D 23 INX H 031E 220701 SHLD SBADR 0321 E1 POP H 0322 2B FASTOK DCX H 0323 7C MOV A,H 0324 B5 ORA L 0325 C2F002 JNZ NEXTR 0328 CD9A02 CALL CONTC 032B 3A0901 LDA ENABLE 032E B7 ORA A 032F C2C002 JNZ AGAIN 0332 11D401 PASS LXI D,M1 ;PASS MESSAGE 0335 CD4B02 CALL MESSG 0338 CD9A02 CALL CONTC 033B C3C002 JMP AGAIN ; 033E 00 ERROR NOP ;WHATEVER 033F FE01 CPI 1 0341 C24B03 JNZ EGT1 0344 11DD01 LXI D,E1 0347 C38F03 JMP ERMESS 034A C9 RET 034B FE02 EGT1 CPI 2 034D C25703 JNZ EGT2 0350 11F501 LXI D,E2 0353 C38F03 JMP ERMESS 0356 C9 RET 0357 FE03 EGT2 CPI 3 0359 C28C03 JNZ EGT3 035C 4F MOV C,A 035D 1E0D MVI E,CR 035F CD4302 CALL CHOUT 0362 2A0701 LHLD SBADR 0365 7C MOV A,H 0366 CD7F02 CALL HEX 0369 2A0701 LHLD SBADR 036C 7D MOV A,L 036D CD7F02 CALL HEX 0370 1E2C MVI E,',' 0372 CD4302 CALL CHOUT 0375 3A0B01 LDA DDD 0378 CD7F02 CALL HEX 037B 1E2C MVI E,',' 037D CD4302 CALL CHOUT 0380 3A0C01 LDA INCH 0383 CD7F02 CALL HEX 0386 110502 LXI D,E3 0389 C38F03 JMP ERMESS 038C C30000 EGT3 JMP 0000 038F CD4B02 ERMESS CALL MESSG 0392 CD9A02 CALL CONTC 0395 C9 RET