|
DataMuseum.dkPresents historical artifacts from the history of: CP/M |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about CP/M Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 22400 (0x5780) Types: TextFile Names: »CRDOS.ASM«
└─⟦be0857eee⟧ Bits:30004395 CP/M-86 files - CR8 Dual floppy └─ ⟦this⟧ »CRDOS.ASM«
TITLE 'CR-DOS: THE CP/M 2.2 COMPATIBLE BDOS FOR Z80 - DATE: 830907' PAGE 43 MACLIB Z80 MAXDSK EQU 5 ; VALID DISK.# IS IN THE RANGE 0-4 BIOS EQU 0E600H ; START OF BIOS (EE00 FOR 5MB, E600 FOR 10MB) ; ------ ; BOOT EQU BIOS+00H ; BOOT WBOOT EQU BIOS+03H ; WBOOT CONST EQU BIOS+06H ; CONST CONIN EQU BIOS+09H ; CONIN CONOUT EQU BIOS+0CH ; CONOUT LIST EQU BIOS+0FH ; LIST PUNCH EQU BIOS+12H ; PUNCH READER EQU BIOS+15H ; READER HOME EQU BIOS+18H ; HOME SELDSK EQU BIOS+1BH ; SELDSK SETTRK EQU BIOS+1EH ; SETTRK SETSEC EQU BIOS+21H ; SETSEC SETDMA EQU BIOS+24H ; SETDMA READ EQU BIOS+27H ; READ WRITE EQU BIOS+2AH ; WRITE LISTST EQU BIOS+2DH ; LISTST SECTRN EQU BIOS+30H ; SECTRAN CR EQU 0DH LF EQU 0AH SPC EQU 20H BS EQU 8 TAB EQU 9 BUFSIZ EQU 128 DDMA EQU 80H ; DEFAULT DMA BUFFER CEDOS EQU BIOS-1600H ; D800 FOR 5MB, D000 FOR 10MB PAGE ;***************************************************************************** ;START OF XBDOS ; ORG CEDOS+806H EDOS: XCHG SHLD PARM XCHG MOV A,E STA PARMLW LXI H,0 SHLD IORSLT SSPD SAVSP LXI SP,EDOSTK XRA A STA LEDE0 STA LEDDE LXI H,LED74 PUSH H MOV A,C CPI 29H ; FUNC.# TOO GREAT ? RNC ; YES, RETURN MOV C,E LXI H,LE047 MOV E,A MVI D,0 DAD D DAD D MOV E,M INX H MOV D,M LHLD PARM XCHG PCHL LE047: DW WBOOT,CI,C0,READIN,PUNCH,LIST,DIRCIO,GETIO DW SETIO,PRSTR,GETBUF,CSTS,RETVER,RESDSK,SCTDSK,OPFIL DW CLSFIL,SFRST,SNEXT,DLTFIL,RDSEQ,WRSEQ,MAKFIL,RENFIL DW LOGVEC,CURDSK,STDMA,GALLOC,WPDSK,GROVEC,SFATB,GDPB DW SGUSER,RDRAND,WRRAND,FILSIZ,SRAND,RSTDRV,DUMRTN,DUMRTN DW WZRAND EDSERR: DB 'CR-DOS Error: $' SSLCER: DB CR,LF,'Drive Select Error, no new drive is selected.$' BADREC: DB 'Bad Record. Type ^C to Reboot or any key for retry.: $' FILRO: DB 'File $' DRO: DB 'Drive: $' ROTXT: DB ' is Read Only.$' BADSEC: LXI H,BADREC MVI C,1 CALL ERRCI CPI 3 JZ 0 RET DRVRO: LXI H,DRO CALL ERRTXT CALL DSKOUT JR ROOUT DSKOUT: LDA CDSK ADI 'A' JR C0S FILERO: LXI H,FILRO CALL ERRTXT CALL DSKOUT MVI A,':' CALL C0S MVI B,8 LHLD PARM OUTNAM: INX H MOV A,M CPI SPC JRZ OUEXT CALL C0S DJNZ OUTNAM OUEXT: MVI A,'.' CALL C0S LHLD PARM LXI D,9 DAD D MVI B,3 OUEXT1: MOV A,M CPI SPC JRZ ROOUT CALL C0S INX H DJNZ OUEXT1 JR ROOUT C0S: PUSH H PUSH B MOV C,A CALL CONOUT POP B POP H RET ROOUT: LXI B,ROTXT CALL LE1D3 JMP 0 ERRCI: CALL ERRTXT LE0FB: LXI H,LE30E MOV A,M MVI M,0 ORA A RNZ JMP CONIN ERRTXT: PUSH H CALL CRLF LXI B,EDSERR CALL LE1D3 POP B JMP LE1D3 LE106: CALL LE0FB CALL CHKCHS RC PUSH PSW MOV C,A CALL C0 POP PSW RET CHKCHS: CPI CR RZ CPI LF RZ CPI TAB RZ CPI 7FH RZ CPI BS RZ CPI SPC RET LE123: LDA LE30E ORA A JRNZ LE145 CALL CONST ANI 1 RZ CALL CONIN CPI 13H ; CONTROL S ? JRNZ LE142 CALL CONIN CPI 3 JZ 0 XRA A RET LE142: STA LE30E LE145: MVI A,1 RET CRLF: MVI C,CR CALL LE148 MVI C,LF LE148: LDA LE30A ORA A JRNZ LE162 PUSH B CALL LE123 POP B PUSH B CALL CONOUT POP B PUSH B LDA PRITOG ORA A CNZ LIST POP B LE162: MOV A,C LXI H,CHRCNT CPI 7FH RZ INR M CPI SPC RNC DCR M MOV A,M ORA A RZ MOV A,C CPI 7FH JRNZ LE179 DCR M RET LE179: CPI LF RNZ MVI M,0 RET OUTCTH: MOV A,C CALL CHKCHS JRNC C0 PUSH PSW MVI C,'^' CALL LE148 POP PSW ORI 40H MOV C,A C0: MOV A,C CPI TAB JRNZ LE148 LE196: MVI C,SPC CALL LE148 LDA CHRCNT ANI 7 JRNZ LE196 RET BSPBS: CALL BSPBS1 MVI C,SPC CALL CONOUT BSPBS1: MVI C,BS JMP CONOUT LE1B1: MVI C,'#' CALL LE148 CALL CRLF LE1B9: LDA CHRCNT LXI H,LE30B CMP M RNC MVI C,SPC CALL LE148 JR LE1B9 LE1D3: LDAX B CPI '$' ; END OF STRING ? RZ INX B PUSH B MOV C,A CALL C0 POP B JR LE1D3 GETBUF: LDA CHRCNT STA LE30B LHLD PARM MOV C,M INX H PUSH H MVI B,0 LE1EF: PUSH B PUSH H LE1F1: CALL LE0FB ANI 7FH POP H POP B CPI CR JZ LE2C1 CPI LF JZ LE2C1 CPI 7FH JRZ DLTBS CPI BS JRNZ LE237 DLTBS: MOV A,B ORA A JRZ LE1EF DCR B LDA CHRCNT STA LE30A PUSH B CALL LE1B1 POP B POP H PUSH H PUSH B LE278: MOV A,B ORA A JRZ LE28A INX H MOV C,M DCR B PUSH B PUSH H CALL OUTCTH POP H POP B JR LE278 LE28A: PUSH H LDA LE30A ORA A JRZ LE1F1 LXI H,CHRCNT SUB M STA LE30A LE299: CALL BSPBS LXI H,LE30A DCR M JRNZ LE299 JR LE1F1 LE237: CPI 10H ; CONTROL P ? JRNZ LE248 PUSH H LXI H,PRITOG MVI A,1 SUB M MOV M,A POP H JR LE1EF LE248: CPI 18H ; CONTROL X ? JRNZ LE2A6 POP H LE24E: LDA LE30B LXI H,CHRCNT CMP M JNC GETBUF DCR M CALL BSPBS JR LE24E LE2A6: INX H MOV M,A INR B PUSH B PUSH H MOV C,A CALL OUTCTH POP H POP B MOV A,M CPI 3 MOV A,B JRNZ LE2BD CPI 1 ; IF CONTROL C AT FIRST POSITION THEN JZ 0 ; REBOOT LE2BD: CMP C JC LE1EF LE2C1: POP H MOV M,B MVI C,CR JMP LE148 CI: CALL LE106 JR LE301 READIN: CALL READER JR LE301 DIRCIO: MOV A,C INR A JRZ LE2E0 INR A JZ CONST JMP CONOUT LE2E0: CALL CONST ORA A JZ LED91 CALL CONIN JR LE301 GETIO: LDA 3 JR LE301 SETIO: LXI H,3 MOV M,C RET PRSTR: XCHG MOV C,L MOV B,H JMP LE1D3 CSTS: CALL LE123 LE301: STA IORSLT DUMRTN: RET LE305: MVI A,1 LE307: JMP LE301 LE30A: NOP LE30B: NOP CHRCNT: DB 0 PRITOG: DB 0 LE30E: NOP SAVSP: DW 0 LE341: NOP CDSK: DB 0 ; CURRENTLY SELECTED LSTDSK: DB 0 ; LAST SELECTED DRIVE USED BY SCTDSK PARM: DW 0 ; PARM IN (DE) AS TRANSFERRED BY CALL'S TO EDOS IORSLT: DW 0 ; EDOS FUNC. I/O RESULT LE34F: INR C LE350: DCR C RZ LDAX D MOV M,A INX D INX H JR LE350 LE359: LDA CDSK MOV C,A CALL SELDSK MOV A,H ORA L RZ MOV E,M INX H MOV D,M ; GET XLT ADD INX H SHLD SCR1PT INX H INX H SHLD SCR2PT INX H INX H SHLD SCR3PT INX H INX H XCHG SHLD XLTADD LXI H,DIRBUF MVI C,8 CALL LE34F LHLD DPB XCHG LXI H,SPT MVI C,0FH CALL LE34F LHLD DSM MOV A,H LXI H,DSMFLG MVI M,0FFH ORA A JRZ LE39D MVI M,0 LE39D: MVI A,0FFH ORA A RET LE3A1: CALL HOME XRA A LHLD SCR2PT MOV M,A INX H MOV M,A LHLD SCR3PT MOV M,A INX H MOV M,A RET LE3B2: CALL READ JR LE3BB LE3B8: CALL WRITE LE3BB: ORA A RZ JMP BADSEC LE3C3: LHLD LEDEA MVI C,2 CALL LE4EA SHLD LEDE5 SHLD LEDEC LE3D1: LXI H,LEDE5 MOV C,M INX H MOV B,M LHLD SCR3PT MOV E,M INX H MOV D,M LHLD SCR2PT MOV A,M INX H MOV H,M MOV L,A LE3E4: MOV A,C SUB E MOV A,B SBB D JRNC LE3FA PUSH H LHLD SPT MOV A,E SUB L MOV E,A MOV A,D SBB H MOV D,A POP H DCX H JR LE3E4 LE3FA: PUSH H LHLD SPT DAD D JRC LE40F MOV A,C SUB L MOV A,B SBB H JRC LE40F XCHG POP H INX H JR LE3FA LE40F: POP H PUSH B PUSH D PUSH H XCHG LHLD OFFSET DAD D MOV B,H MOV C,L CALL SETTRK POP D LHLD SCR2PT MOV M,E INX H MOV M,D POP D LHLD SCR3PT MOV M,E INX H MOV M,D POP B MOV A,C SUB E MOV C,A MOV A,B SBB D MOV B,A LHLD XLTADD XCHG CALL SECTRN MOV C,L MOV B,H JMP SETSEC LE43E: LXI H,BSH MOV C,M LDA FCBRC LE445: ORA A RAR DCR C JRNZ LE445 MOV B,A MVI A,8 SUB M MOV C,A LDA MSKEXN LE453: DCR C JRZ LE45C ORA A RAL JR LE453 LE45C: ADD B RET LE45E: LHLD PARM LXI D,10H DAD D DAD B LDA DSMFLG ORA A JRZ LE471 MOV L,M MVI H,0 RET LE471: DAD B MOV E,M INX H MOV D,M XCHG RET LE477: CALL LE43E MOV C,A MVI B,0 CALL LE45E SHLD LEDE5 RET LE484: LHLD LEDE5 MOV A,L ORA H RET LE48A: LDA BSH LHLD LEDE5 LE490: DAD H DCR A JRNZ LE490 SHLD LEDE7 LDA BLM MOV C,A LDA FCBRC ANA C ORA L MOV L,A SHLD LEDE5 RET GFCBEX: LHLD PARM LXI D,0CH DAD D RET GTRCCR: LHLD PARM LXI D,0FH DAD D XCHG LXI H,11H DAD D RET LE4BB: CALL GTRCCR MOV A,M STA FCBRC XCHG MOV A,M STA FCBCR CALL GFCBEX LDA EXM ANA M STA MSKEXN RET LE4D2: CALL GTRCCR LDA LEDD5 CPI 2 JRNZ LE4DE XRA A LE4DE: MOV C,A LDA FCBRC ADD C MOV M,A XCHG LDA FCBCR MOV M,A RET LE4EA: INR C LE4EB: DCR C RZ MOV A,H ORA A RAR MOV H,A MOV A,L RAR MOV L,A JR LE4EB LE4F7: MVI C,80 LHLD DIRBUF XRA A LE4FD: ADD M INX H DCR C JRNZ LE4FD RET LE504: INR C LE505: DCR C RZ DAD H JR LE505 LE50B: PUSH B LDA CDSK MOV C,A LXI H,1 CALL LE504 POP B MOV A,C ORA L MOV L,A MOV A,B ORA H MOV H,A RET LE51E: LHLD LEDAD LDA CDSK MOV C,A CALL LE4EA MOV A,L ANI 1 RET WPDSK: LXI H,LEDAD MOV C,M INX H MOV B,M CALL LE50B SHLD LEDAD LHLD DRM INX H XCHG LHLD SCR1PT MOV M,E INX H MOV M,D RET LE544: CALL LE55E LE547: LXI D,9 DAD D MOV A,M RAL RNC JMP FILERO LE554: CALL LE51E RZ JMP DRVRO LE55E: LHLD DIRBUF LDA LEDE9 LE564: ADD L MOV L,A RNC INR H RET LE569: LHLD PARM LXI D,0EH DAD D MOV A,M RET LE572: CALL LE569 MVI M,0 RET LE578: CALL LE569 ORI 80H MOV M,A RET LE57F: LHLD LEDEA XCHG LHLD SCR1PT MOV A,E SUB M INX H MOV A,D SBB M RET LE58C: CALL LE57F RC INX D MOV M,D DCX H MOV M,E RET LE595: MOV A,E SUB L MOV L,A MOV A,D SBB H MOV H,A RET LE59C: MVI C,0FFH LE59E: LHLD LEDEC XCHG LHLD CKS CALL LE595 RNC PUSH B CALL LE4F7 LHLD CSV XCHG LHLD LEDEC DAD D POP B INR C JRZ LE5C4 CMP M RZ CALL LE57F RNC CALL WPDSK RET LE5C4: MOV M,A RET LE5C6: CALL LE59C CALL LE5E0 MVI C,1 CALL LE3B8 JR LE5DA LE5D4: CALL LE5E0 CALL LE3B2 LE5DA: LXI H,DMAADR JR LE5E3 LE5E0: LXI H,DIRBUF LE5E3: MOV C,M INX H MOV B,M JMP SETDMA LE5E9: LHLD DIRBUF XCHG LHLD DMAADR MVI C,80H JMP LE34F LE5F5: LXI H,LEDEA MOV A,M INX H CMP M RNZ INR A RET LE5FE: LXI H,0FFFFH SHLD LEDEA RET LE605: LHLD DRM XCHG LHLD LEDEA INX H SHLD LEDEA CALL LE595 JRNC LE619 JR LE5FE LE619: LDA LEDEA ANI 3 MVI B,5 LE620: ADD A DJNZ LE620 STA LEDE9 ORA A RNZ PUSH B CALL LE3C3 CALL LE5D4 POP B JMP LE59E LE635: MOV A,C ANI 7 INR A MOV E,A MOV D,A MOV A,C RRC RRC RRC ANI 1FH MOV C,A MOV A,B ADD A ADD A ADD A ADD A ADD A ORA C MOV C,A MOV A,B RRC RRC RRC ANI 1FH MOV B,A LHLD ALV DAD B MOV A,M LE656: RLC DCR E JRNZ LE656 RET LE65C: PUSH D CALL LE635 ANI 0FEH POP B ORA C LE664: RRC DCR D JRNZ LE664 MOV M,A RET LE66B: CALL LE55E LXI D,10H DAD D PUSH B MVI C,11H LE675: POP D DCR C RZ PUSH D LDA DSMFLG ORA A JRZ LE688 PUSH B PUSH H MOV C,M MVI B,0 JR LE68E LE688: DCR C PUSH B MOV C,M INX H MOV B,M PUSH H LE68E: MOV A,C ORA B JRZ LE69D LHLD DSM MOV A,L SUB C MOV A,H SBB B CNC LE65C LE69D: POP H INX H POP B JR LE675 LE6A3: LHLD DSM MVI C,3 CALL LE4EA INX H MOV B,H MOV C,L LHLD ALV LE6B1: MVI M,0 INX H DCX B MOV A,B ORA C JRNZ LE6B1 LHLD AL1AL0 XCHG LHLD ALV MOV M,E INX H MOV M,D CALL LE3A1 LHLD SCR1PT MVI M,3 INX H MVI M,0 CALL LE5FE LE6D2: MVI C,0FFH CALL LE605 CALL LE5F5 RZ CALL LE55E MVI A,0E5H CMP M JRZ LE6D2 LDA LE341 CMP M JRNZ LE6F6 INX H MOV A,M SUI 24H JRNZ LE6F6 DCR A STA IORSLT LE6F6: MVI C,1 CALL LE66B CALL LE58C JR LE6D2 LE701: LDA LEDD4 JMP LE301 LE707: PUSH B PUSH PSW LDA EXM CMA MOV B,A MOV A,C ANA B MOV C,A POP PSW ANA B SUB C ANI 1FH POP B RET LE718: MVI A,0FFH STA LEDD4 LXI H,LEDD8 MOV M,C LHLD PARM SHLD LEDD9 CALL LE5FE CALL LE3A1 LE72D: MVI C,0 CALL LE605 CALL LE5F5 JRZ LE794 LHLD LEDD9 XCHG LDAX D CPI 0E5H JRZ LE74A PUSH D CALL LE57F POP D JRNC LE794 LE74A: CALL LE55E LDA LEDD8 MOV C,A MVI B,0 LE753: MOV A,C ORA A JRZ LE783 LDAX D CPI 3FH JRZ LE77C MOV A,B CPI 0DH JRZ LE77C CPI 0CH LDAX D JRZ LE773 SUB M ANI 7FH JRNZ LE72D JR LE77C LE773: PUSH B MOV C,M CALL LE707 POP B JRNZ LE72D LE77C: INX D INX H INR B DCR C JR LE753 LE783: LDA LEDEA ANI 3 STA IORSLT LXI H,LEDD4 MOV A,M RAL RNC XRA A MOV M,A RET LE794: CALL LE5FE MVI A,0FFH JMP LE301 LE79C: CALL LE554 MVI C,0CH CALL LE718 LE7A4: CALL LE5F5 RZ CALL LE544 CALL LE55E MVI M,0E5H MVI C,0 CALL LE66B CALL LE5C6 CALL LE72D JR LE7A4 LE7BE: MOV D,B MOV E,C LE7C0: MOV A,C ORA B JRZ LE7D1 DCX B PUSH D PUSH B CALL LE635 RAR JRNC LE7EC POP B POP D LE7D1: LHLD DSM MOV A,E SUB L MOV A,D SBB H JRNC LE7F4 INX D PUSH B PUSH D MOV B,D MOV C,E CALL LE635 RAR JRNC LE7EC POP D POP B JR LE7C0 LE7EC: RAL INR A CALL LE664 POP H POP D RET LE7F4: MOV A,C ORA B JRNZ LE7C0 LXI H,0 RET LE7FD: MVI C,0 MVI E,20H LE801: PUSH D MVI B,0 LHLD PARM DAD B XCHG CALL LE55E POP B CALL LE34F LE810: CALL LE3C3 JMP LE5C6 LE816: CALL LE554 MVI C,0CH CALL LE718 LHLD PARM MOV A,M LXI D,10H DAD D MOV M,A LE827: CALL LE5F5 RZ CALL LE544 MVI C,10H MVI E,0CH CALL LE801 CALL LE72D JR LE827 LE83B: MVI C,0CH CALL LE718 LE840: CALL LE5F5 RZ MVI C,0 MVI E,0CH CALL LE801 CALL LE72D JR LE840 LE851: MVI C,0FH CALL LE718 CALL LE5F5 RZ LE85A: CALL GFCBEX MOV A,M PUSH PSW PUSH H CALL LE55E XCHG LHLD PARM MVI C,20H PUSH D CALL LE34F CALL LE578 POP D LXI H,0CH DAD D MOV C,M LXI H,0FH DAD D MOV B,M POP H POP PSW MOV M,A MOV A,C CMP M MOV A,B JRZ LE88B MVI A,0 JRC LE88B MVI A,80H LE88B: LHLD PARM LXI D,0FH DAD D MOV M,A RET LE894: MOV A,M INX H ORA M DCX H RNZ LDAX D MOV M,A INX D INX H LDAX D MOV M,A DCX D DCX H RET LE8A2: XRA A STA IORSLT STA LEDEA STA LEDEB CALL LE51E RNZ CALL LE569 ANI 80H RNZ MVI C,0FH CALL LE718 CALL LE5F5 RZ LXI B,10H CALL LE55E DAD B XCHG LHLD PARM DAD B MVI C,10H LE8CD: LDA DSMFLG ORA A JRZ LE8E8 MOV A,M ORA A LDAX D JRNZ LE8DB MOV M,A LE8DB: ORA A JRNZ LE8E1 MOV A,M STAX D LE8E1: CMP M JRNZ LE91F JR LE8FD LE8E8: CALL LE894 XCHG CALL LE894 XCHG LDAX D CMP M JRNZ LE91F INX D INX H LDAX D CMP M JRNZ LE91F DCR C LE8FD: INX D INX H DCR C JRNZ LE8CD LXI B,0FFECH DAD B XCHG DAD B LDAX D CMP M JRC LE917 MOV M,A LXI B,3 DAD B XCHG DAD B MOV A,M STAX D LE917: MVI A,0FFH STA LEDD2 JMP LE810 LE91F: LXI H,IORSLT DCR M RET LE924: CALL LE554 LHLD PARM PUSH H LXI H,LEDAC SHLD PARM MVI C,1 CALL LE718 CALL LE5F5 POP H SHLD PARM RZ XCHG LXI H,0FH DAD D MVI C,11H XRA A LE946: MOV M,A INX H DCR C JRNZ LE946 LXI H,0DH DAD D MOV M,A CALL LE58C CALL LE7FD JMP LE578 LE95A: XRA A STA LEDD2 CALL LE8A2 CALL LE5F5 RZ LHLD PARM LXI B,0CH DAD B MOV A,M INR A ANI 1FH MOV M,A JRZ LE983 MOV B,A LDA EXM ANA B LXI H,LEDD2 ANA M JRZ LE98E JR LE9AC LE983: LXI B,2 DAD B INR M MOV A,M ANI 0FH JRZ LE9B6 LE98E: MVI C,0FH CALL LE718 CALL LE5F5 JRNZ LE9AC LDA LEDD3 INR A JRZ LE9B6 CALL LE924 CALL LE5F5 JRZ LE9B6 JR LE9AF LE9AC: CALL LE85A LE9AF: CALL LE4BB XRA A JMP LE301 LE9B6: CALL LE305 JMP LE578 LE9BC: MVI A,1 STA LEDD5 LE9C1: MVI A,0FFH STA LEDD3 CALL LE4BB LDA FCBRC LXI H,FCBCR CMP M JRC LE9E6 CPI 80H JRNZ LE9FB CALL LE95A XRA A STA FCBRC LDA IORSLT ORA A JRNZ LE9FB LE9E6: CALL LE477 CALL LE484 JRZ LE9FB CALL LE48A CALL LE3D1 CALL LE3B2 JMP LE4D2 LE9FB: JMP LE305 LE9FE: MVI A,1 STA LEDD5 LEA03: MVI A,0 STA LEDD3 CALL LE554 LHLD PARM CALL LE547 CALL LE4BB LDA FCBRC CPI 80H JNC LE305 CALL LE477 CALL LE484 MVI C,0 JRNZ LEA6E CALL LE43E STA LEDD7 LXI B,0 ORA A JRZ LEA3B MOV C,A DCX B CALL LE45E MOV B,H MOV C,L LEA3B: CALL LE7BE MOV A,L ORA H JRNZ LEA48 MVI A,2 JMP LE301 LEA48: SHLD LEDE5 XCHG LHLD PARM LXI B,10H DAD B LDA DSMFLG ORA A LDA LEDD7 JRZ LEA64 CALL LE564 MOV M,E JR LEA6C LEA64: MOV C,A MVI B,0 DAD B DAD B MOV M,E INX H MOV M,D LEA6C: MVI C,2 LEA6E: LDA IORSLT ORA A RNZ PUSH B CALL LE48A LDA LEDD5 DCR A DCR A JRNZ LEABB POP B PUSH B MOV A,C DCR A DCR A JRNZ LEABB PUSH H LHLD DIRBUF MOV D,A LEA8C: MOV M,A INX H INR D JP LEA8C CALL LE5E0 LHLD LEDE7 MVI C,2 LEA9A: SHLD LEDE5 PUSH B CALL LE3D1 POP B CALL LE3B8 LHLD LEDE5 MVI C,0 LDA BLM MOV B,A ANA L CMP B INX H JRNZ LEA9A POP H SHLD LEDE5 CALL LE5DA LEABB: CALL LE3D1 POP B PUSH B CALL LE3B8 POP B LDA FCBRC LXI H,FCBCR CMP M JRC LEAD2 MOV M,A INR M MVI C,2 LEAD2: NOP NOP LXI H,CEDOS PUSH PSW CALL LE569 ANI 7FH MOV M,A POP PSW CPI 7FH JRNZ LEB00 LDA LEDD5 CPI 1 JRNZ LEB00 CALL LE4D2 CALL LE95A LXI H,IORSLT MOV A,M ORA A JRNZ LEAFE DCR A STA FCBRC LEAFE: MVI M,0 LEB00: JMP LE4D2 LEB03: XRA A STA LEDD5 LEB07: PUSH B LHLD PARM XCHG LXI H,21H DAD D MOV A,M ANI 7FH PUSH PSW MOV A,M RAL INX H MOV A,M RAL ANI 1FH MOV C,A MOV A,M RAR RAR RAR RAR ANI 0FH MOV B,A POP PSW INX H MOV L,M INR L DCR L MVI L,6 JRNZ LEB8B LXI H,20H DAD D MOV M,A LXI H,0CH DAD D MOV A,C SUB M JRNZ LEB47 LXI H,0EH DAD D MOV A,B SUB M ANI 7FH JRZ LEB7F LEB47: PUSH B PUSH D CALL LE8A2 POP D POP B MVI L,3 LDA IORSLT INR A JRZ LEB84 LXI H,0CH DAD D MOV M,C LXI H,0EH DAD D MOV M,B CALL LE851 LDA IORSLT INR A JRNZ LEB7F POP B PUSH B MVI L,4 INR C JRZ LEB84 CALL LE924 MVI L,5 LDA IORSLT INR A JRZ LEB84 LEB7F: POP B XRA A JMP LE301 LEB84: PUSH H CALL LE569 MVI M,0C0H POP H LEB8B: POP B MOV A,L STA IORSLT JMP LE578 LEB93: MVI C,0FFH CALL LEB03 CZ LE9C1 RET LEB9C: MVI C,0 CALL LEB03 CZ LEA03 RET LEBA5: XCHG DAD D MOV C,M MVI B,0 LXI H,0CH DAD D MOV A,M RRC ANI 80H ADD C MOV C,A MVI A,0 ADC B MOV B,A MOV A,M RRC ANI 0FH ADD B MOV B,A LXI H,0EH DAD D MOV A,M ADD A ADD A ADD A ADD A PUSH PSW ADD B MOV B,A PUSH PSW POP H MOV A,L POP H ORA L ANI 1 RET LEBD2: MVI C,0CH CALL LE718 LHLD PARM LXI D,21H DAD D PUSH H MOV M,D INX H MOV M,D INX H MOV M,D LEBE4: CALL LE5F5 JRZ LEC0C CALL LE55E LXI D,0FH CALL LEBA5 POP H PUSH H MOV E,A MOV A,C SUB M INX H MOV A,B SBB M INX H MOV A,E SBB M JRC LEC06 MOV M,E DCX H MOV M,B DCX H MOV M,C LEC06: CALL LE72D JR LEBE4 LEC0C: POP H RET SRAND: LHLD PARM LXI D,20H CALL LEBA5 LXI H,21H DAD D MOV M,C INX H MOV M,B INX H MOV M,A RET SLCERR: LDA LSTDSK MOV M,A ; NO NEW DRIVE LXI B,SSLCER JMP LE1D3 LEC21: LXI H,CDSK MOV A,M CPI MAXDSK CNC SLCERR LHLD LEDAF LDA CDSK MOV C,A CALL LE4EA PUSH H XCHG CALL LE359 POP H MOV A,L RAR RC LHLD LEDAF MOV C,L MOV B,H CALL LE50B SHLD LEDAF JMP LE6A3 SCTDSK: LDA CDSK STA LSTDSK LDA PARMLW LXI H,CDSK CMP M RZ MOV M,A JR LEC21 LEC51: MVI A,0FFH STA LEDDE LHLD PARM MOV A,M ANI 1FH DCR A STA PARMLW CPI 1EH JRNC LEC75 LDA CDSK STA LEDDF MOV A,M STA LEDE0 ANI 0E0H MOV M,A CALL SCTDSK LEC75: LDA LE341 LHLD PARM ORA M MOV M,A RET RETVER: MVI A,22H JMP LE301 RESDSK: LXI H,0 SHLD LEDAD SHLD LEDAF XRA A STA CDSK LXI H,80H SHLD DMAADR CALL LE5DA JMP LEC21 OPFIL: CALL LE572 CALL LEC51 JMP LE851 CLSFIL: CALL LEC51 JMP LE8A2 SFRST: MVI C,0 XCHG MOV A,M CPI 3FH JRZ LECC2 CALL GFCBEX MOV A,M CPI 3FH CNZ LE572 CALL LEC51 MVI C,0FH LECC2: CALL LE718 JMP LE5E9 SNEXT: LHLD LEDD9 SHLD PARM CALL LEC51 CALL LE72D JMP LE5E9 DLTFIL: CALL LEC51 CALL LE79C JMP LE701 RDSEQ: CALL LEC51 JMP LE9BC WRSEQ: CALL LEC51 JMP LE9FE MAKFIL: CALL LE572 CALL LEC51 JMP LE924 RENFIL: CALL LEC51 CALL LE816 JMP LE701 LOGVEC: LHLD LEDAF JR LED29 CURDSK: LDA CDSK JMP LE301 STDMA: XCHG SHLD DMAADR JMP LE5DA GALLOC: LHLD ALV JR LED29 GROVEC: LHLD LEDAD JR LED29 SFATB: CALL LEC51 CALL LE83B JMP LE701 GDPB: LHLD DPB LED29: SHLD IORSLT RET SGUSER: LDA PARMLW CPI 0FFH JRNZ LED3B LDA LE341 JMP LE301 LED3B: ANI 1FH STA LE341 RET RDRAND: CALL LEC51 JMP LEB93 WRRAND: CALL LEC51 JMP LEB9C FILSIZ: CALL LEC51 JMP LEBD2 RSTDRV: LHLD PARM MOV A,L CMA MOV E,A MOV A,H CMA LHLD LEDAF ANA H MOV D,A MOV A,L ANA E MOV E,A LHLD LEDAD XCHG SHLD LEDAF MOV A,L ANA E MOV L,A MOV A,H ANA D MOV H,A SHLD LEDAD RET LED74: LDA LEDDE ORA A JRZ LED91 LHLD PARM MVI M,0 LDA LEDE0 ORA A JRZ LED91 MOV M,A LDA LEDDF STA PARMLW CALL SCTDSK LED91: LSPD SAVSP LHLD IORSLT MOV A,L MOV B,H RET WZRAND: CALL LEC51 MVI A,2 STA LEDD5 MVI C,0 CALL LEB07 CZ LEA03 RET LEDAC: DB 0E5H LEDAD: NOP LEDAE: NOP LEDAF: NOP LEDB0: NOP DMAADR: DW 80H SCR1PT: DW 0 SCR2PT: DW 0 SCR3PT: DW 0 DIRBUF: DW 0 DPB: DW 0 CSV: DW 0 ALV: DW 0 SPT: DW 0 BSH: DB 0 BLM: DB 0 EXM: DB 0 DSM: DW 0 DRM: DW 0 AL1AL0: DW 0 CKS: DW 0 OFFSET: DW 0 XLTADD: DW 0 LEDD2: NOP LEDD3: NOP LEDD4: NOP LEDD5: NOP PARMLW: DB 0 LEDD7: NOP LEDD8: NOP LEDD9: NOP LEDDA: NOP LEDDB: NOP LEDDC: NOP DSMFLG: NOP LEDDE: NOP LEDDF: NOP LEDE0: NOP FCBCR: NOP MSKEXN: NOP FCBRC: DW 0 LEDE5: DW 0 LEDE7: DW 0 LEDE9: NOP LEDEA: NOP LEDEB: NOP LEDEC: NOP NOP NOP NOP EDSTKSIZ EQU CEDOS+1600H-$ ORG CEDOS+1600H ; EDOS STACK SPACE EDOSTK: END «eof»