extrn .begin,.chl,.swt extrn csave,cret,.move global metadata_,128 global bRunning_,2 global deflu_,2 global drive_,2 global logunit_,2 global numlu_,2 DSEG public pSYSCFG_ pSYSCFG_: DW -16384 CSEG PUBLIC display_ display_: lxi d,.2 call csave LHLD logunit_ PUSH H LHLD drive_ PUSH H CALL luscur_ POP D POP D LXI H,metadata_ PUSH H LXI H,11 PUSH H LXI H,0 PUSH H LHLD drive_ PUSH H CALL rdsector_ XCHG LXI H,8 DAD SP SPHL LXI H,0 PUSH H LXI H,7 PUSH H CALL crtlc_ POP D POP D LHLD metadata_ PUSH H LXI H,.1+0 PUSH H CALL printf_ POP D POP D LXI H,0 PUSH H LXI H,8 PUSH H CALL crtlc_ POP D POP D LDA metadata_+2 MOV L,A MVI H,0 PUSH H LXI H,.1+28 PUSH H CALL printf_ POP D POP D LXI H,0 PUSH H LXI H,9 PUSH H CALL crtlc_ POP D POP D LXI H,.1+56 PUSH H CALL printf_ POP D LXI H,0 XCHG LXI H,2-.2 DAD SP MOV M,E INX H MOV M,D JMP .4 .3: LXI H,2-.2 DAD SP PUSH H MOV A,M INX H MOV H,M MOV L,A INX H XCHG POP H MOV M,E INX H MOV M,D .4: LXI H,2-.2 DAD SP MOV E,M INX H MOV D,M LXI H,8 CALL .lt JZ .5 LXI H,2-.2 DAD SP MOV E,M INX H MOV D,M LXI H,metadata_+4 DAD D MOV E,M MVI D,0 PUSH D LXI H,.1+79 PUSH H CALL printf_ POP D POP D JMP .3 .5: LXI H,.1+82 PUSH H CALL printf_ POP D LXI H,0 PUSH H LXI H,10 PUSH H CALL crtlc_ POP D POP D LDA metadata_+12 MOV L,A MVI H,0 LXI D,65 DAD D PUSH H LXI H,.1+84 PUSH H CALL printf_ POP D POP D LHLD metadata_+13 XCHG LHLD logunit_ CALL .ne JZ .6 LHLD logunit_ SHLD metadata_+13 LHLD metadata_+97 INX H SHLD metadata_+97 LXI H,metadata_ PUSH H LXI H,11 PUSH H LXI H,0 PUSH H LHLD drive_ PUSH H CALL wrsector_ XCHG LXI H,8 DAD SP SPHL .6: LXI H,0 PUSH H LXI H,11 PUSH H CALL crtlc_ POP D POP D LHLD numlu_ PUSH H LHLD metadata_+13 PUSH H LXI H,.1+109 PUSH H CALL printf_ POP D POP D POP D LXI H,0 PUSH H LXI H,12 PUSH H CALL crtlc_ POP D POP D LXI H,.1+150 PUSH H CALL printf_ POP D LDA metadata_+96 MOV L,A MVI H,0 JMP .7 .9: LXI H,.1+172 PUSH H CALL printf_ POP D JMP .8 .10: LXI H,.1+178 PUSH H CALL printf_ POP D JMP .8 .11: LXI H,.1+184 PUSH H CALL printf_ POP D JMP .8 .7: CALL .swt DW 2 DW 0,.10 DW 1,.9 DW .11 .8: LXI H,0 PUSH H LXI H,13 PUSH H CALL crtlc_ POP D POP D LHLD metadata_+97 PUSH H LXI H,.1+190 PUSH H CALL printf_ POP D POP D LXI H,0 PUSH H LXI H,14 PUSH H CALL crtlc_ POP D POP D LDA metadata_+101 MOV L,A MVI H,0 PUSH H LDA metadata_+101 MOV L,A MVI H,0 PUSH H LDA metadata_+100 MOV L,A MVI H,0 PUSH H LDA metadata_+99 MOV L,A MVI H,0 PUSH H LXI H,.1+214 PUSH H CALL printf_ XCHG LXI H,10 DAD SP SPHL LXI H,0 PUSH H LXI H,15 PUSH H CALL crtlc_ POP D POP D LXI H,.1+247 PUSH H CALL printf_ POP D LXI H,0 XCHG LXI H,2-.2 DAD SP MOV M,E INX H MOV M,D JMP .13 .12: LXI H,2-.2 DAD SP PUSH H MOV A,M INX H MOV H,M MOV L,A INX H XCHG POP H MOV M,E INX H MOV M,D .13: LXI H,2-.2 DAD SP MOV E,M INX H MOV D,M LXI H,16 CALL .lt JZ .14 LXI H,2-.2 DAD SP MOV E,M INX H MOV D,M LXI H,metadata_+103 DAD D MOV E,M MVI D,0 PUSH D LXI H,.1+270 PUSH H CALL printf_ POP D POP D JMP .12 .14: LXI H,.1+273 PUSH H CALL printf_ POP D LXI H,0 PUSH H LXI H,16 PUSH H CALL crtlc_ POP D POP D LHLD metadata_+120 PUSH H LXI H,.1+275 PUSH H CALL printf_ POP D POP D LXI H,0 PUSH H LXI H,17 PUSH H CALL crtlc_ POP D POP D LHLD metadata_+122 PUSH H LXI H,.1+303 PUSH H CALL printf_ POP D POP D LXI H,0 PUSH H LXI H,18 PUSH H CALL crtlc_ POP D POP D LHLD metadata_+124 PUSH H LXI H,.1+331 PUSH H CALL printf_ POP D POP D LXI H,0 PUSH H LXI H,19 PUSH H CALL crtlc_ POP D POP D LHLD metadata_+126 PUSH H LXI H,.1+359 PUSH H CALL printf_ POP D POP D RET .2 EQU -2 .1: DB 109,101,116,97,100,97,116,97,46,115,105,103,110,97,116 DB 117,114,101,32,61,32,48,120,37,48,52,120,0,109,101 DB 116,97,100,97,116,97,46,112,108,97,116,102,111,114,109 DB 32,32,61,32,48,120,37,48,50,120,0,109,101,116,97 DB 100,97,116,97,46,102,111,114,109,97,116,116,101,114,32 DB 61,32,34,0,37,99,0,34,0,109,101,116,97,100,97 DB 116,97,46,100,114,105,118,101,32,32,32,32,32,61,32 DB 37,99,58,0,109,101,116,97,100,97,116,97,46,108,111 DB 103,117,110,105,116,32,32,32,61,32,37,100,40,114,101 DB 108,48,41,32,111,102,32,37,100,32,32,32,32,32,0 DB 109,101,116,97,100,97,116,97,46,119,114,105,116,101,112 DB 114,111,116,32,61,32,0,84,82,85,69,32,0,70,65 DB 76,83,69,0,85,110,107,33,33,0,109,101,116,97,100 DB 97,116,97,46,117,112,100,97,116,101,32,32,32,32,61 DB 32,37,100,0,109,101,116,97,100,97,116,97,46,123,118 DB 101,114,125,32,32,32,32,32,61,32,37,100,46,37,100 DB 46,37,100,46,37,100,0,109,101,116,97,100,97,116,97 DB 46,108,97,98,101,108,32,32,32,32,32,61,32,34,0 DB 37,99,0,34,0,109,101,116,97,100,97,116,97,46,105 DB 110,102,108,111,99,32,32,32,32,61,32,48,120,37,48 DB 52,120,0,109,101,116,97,100,97,116,97,46,99,112,109 DB 108,111,99,32,32,32,32,61,32,48,120,37,48,52,120 DB 0,109,101,116,97,100,97,116,97,46,99,112,109,101,110 DB 100,32,32,32,32,61,32,48,120,37,48,52,120,0,109 DB 101,116,97,100,97,116,97,46,99,112,109,101,110,116,32 DB 32,32,32,61,32,48,120,37,48,52,120,0 PUBLIC menu_ menu_: lxi d,.16 call csave LXI H,0 PUSH H LXI H,21 PUSH H CALL crtlc_ POP D POP D LXI H,.15+0 PUSH H CALL printf_ POP D LXI H,.15+40 PUSH H CALL printf_ POP D LXI H,0 PUSH H LXI H,21 PUSH H CALL crtlc_ POP D POP D LXI H,.15+80 PUSH H CALL printf_ POP D LXI H,0 XCHG LHLD logunit_ CALL .lt JZ .17 LXI H,.15+90 PUSH H CALL printf_ POP D .17: LHLD numlu_ DCX H PUSH H LHLD logunit_ POP D XCHG CALL .lt JZ .18 LXI H,.15+102 PUSH H CALL printf_ POP D .18: LDA metadata_+96 MOV L,A MVI H,0 PUSH H LXI H,1 POP D CALL .eq JZ .19 LXI H,.15+114 PUSH H CALL printf_ POP D .19: lda metadata_+96 ora a JNZ .20 LXI H,.15+127 PUSH H CALL printf_ POP D .20: LXI H,.15+138 PUSH H CALL printf_ POP D LXI H,1 SHLD dregbc_ CALL bdoscall_ LXI H,1 XCHG LXI H,2-.16 DAD SP MOV M,E INX H MOV M,D LDA drega_ MOV L,A MVI H,0 JMP .21 .23: .24: LXI H,0 XCHG LXI H,2-.16 DAD SP MOV M,E INX H MOV M,D JMP .22 .25: LHLD numlu_ DCX H PUSH H LHLD logunit_ POP D XCHG CALL .lt JZ .26 LHLD logunit_ INX H SHLD logunit_ JMP .27 .26: LXI H,7 PUSH H LXI H,.15+151 PUSH H CALL printf_ POP D POP D .27: JMP .22 .28: LXI H,0 XCHG LHLD logunit_ CALL .lt JZ .29 LHLD logunit_ DCX H SHLD logunit_ JMP .30 .29: LXI H,7 PUSH H LXI H,.15+154 PUSH H CALL printf_ POP D POP D .30: JMP .22 .31: LXI H,1 MOV A,L STA metadata_+96 LHLD metadata_+97 INX H SHLD metadata_+97 LXI H,metadata_ PUSH H LXI H,11 PUSH H LXI H,0 PUSH H LHLD drive_ PUSH H CALL wrsector_ XCHG LXI H,8 DAD SP SPHL JMP .22 .32: LXI H,0 MOV A,L STA metadata_+96 LHLD metadata_+97 INX H SHLD metadata_+97 LXI H,metadata_ PUSH H LXI H,11 PUSH H LXI H,0 PUSH H LHLD drive_ PUSH H CALL wrsector_ XCHG LXI H,8 DAD SP SPHL JMP .22 .33: LXI H,7 PUSH H LXI H,.15+157 PUSH H CALL printf_ POP D POP D JMP .22 .21: CALL .swt DW 6 DW 43,.25 DW 45,.28 DW 88,.23 DW 112,.31 DW 117,.32 DW 120,.24 DW .33 .22: LXI H,2-.16 DAD SP MOV E,M INX H MOV D,M XCHG RET .16 EQU -2 .15: DB 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 DB 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 DB 32,32,32,32,32,32,32,32,32,0,32,32,32,32,32 DB 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 DB 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 DB 32,32,32,32,0,79,112,116,105,111,110,115,40,32,0 DB 32,45,123,112,114,101,118,32,108,117,125,0,32,43,123 DB 110,101,120,116,32,108,117,125,0,32,117,123,110,112,114 DB 111,116,101,99,116,125,0,32,112,123,114,111,116,101,99 DB 116,125,0,32,120,123,113,117,105,116,125,32,41,58,32 DB 0,37,99,0,37,99,0,37,99,0 PUBLIC main_ main_: lxi d,.35 call csave LXI H,-4096 SHLD hregbc_ LXI H,-16384 SHLD hregde_ CALL diagnose_ LXI H,-16384 SHLD pSYSCFG_ LHLD pSYSCFG_ LXI D,68 DAD D MOV E,M MVI D,0 PUSH D CALL crtinit_ POP D CALL crtclr_ LXI H,0 PUSH H LXI H,0 PUSH H CALL crtlc_ POP D POP D LXI H,.34+0 PUSH H CALL banner_ POP D LXI H,25 SHLD dregbc_ CALL bdoscall_ LDA drega_ MOV L,A MVI H,0 SHLD drive_ LHLD drive_ PUSH H CALL lugnum_ POP D SHLD numlu_ LHLD drive_ PUSH H CALL lugcur_ POP D SHLD deflu_ LHLD deflu_ SHLD logunit_ LXI H,1 SHLD bRunning_ .36: LXI H,1 XCHG LHLD bRunning_ CALL .eq JZ .37 CALL display_ LXI H,1 PUSH H CALL menu_ POP D SHLD bRunning_ JMP .36 .37: LHLD deflu_ PUSH H LHLD drive_ PUSH H CALL luscur_ POP D POP D LXI H,0 PUSH H LXI H,23 PUSH H CALL crtlc_ POP D POP D RET .35 EQU 0 .34: DB 77,69,84,65,0 extrn banner_ extrn printf_ extrn lugnum_ extrn luscur_ extrn lugcur_ extrn crtlc_ extrn crtclr_ extrn crtinit_ extrn diagnose_ extrn hregde_ extrn hregbc_ extrn wrsector_ extrn rdsector_ extrn bdoscall_ extrn dregbc_ extrn drega_ extrn .eq extrn .ne extrn .lt END