TD+,)`;Heath CP/M Disk 3 (original SSSD)[v vvv vvvvvv vvv v>ͦ!q:_  !p+q.*   !q*&!p+q*2!p+q*2!p+q*22!p+q*!p+q*!p+q*!p+q*2!p+q*vv 2v vvv vvvvv v vvv vvvvv  v < ORG 000H H17T EQU 0 H37T EQU 0 H47T EQU 0 H67T EQU 0 ; ** ; ; * * * N O T E * * * ; ; THE ABOVE 5 LINES OF CODE ARE THE PREAMBLE TO THE BIOS. ; THESE LINES ARE USED BY 'MAKEBIOS' IN GENERATING THE BIOS. ; THESE LINES SHOULDvv  NOT BE ALTERED FOR ANY REASON UNLESS THE ; PROGRAM 'MAKEBIOS' IS ALSO ALTERED. THESE LINES MUST APPEAR ; AS THE FIRST 5 LINES IN THIS SOURCE. ; ; **F VERS EQU 03 LEVEL EQU ' ' MONTH EQU 09 DAY EQU 17 YEAR EQU 81 ;***vvvv S EQU 020H D$E$WRP EQU 040H D$E$UNR EQU 080H H47CTL EQU 0 H47DAT EQU 1 DSTR EQU 10000000B DSIE EQU 01000000B DSDONE EQU 00100000B DSERR EQU 00000001B DCIE EQU 01000000B DCRES EQU 00000010B DRS EQU 01H DRAS EQU 02H DSNS EQU 03H DRD EQU 07H DW<OBYTE EQU BOOT+3 LOGDSK EQU BOOT+4 BDMAP EQU 0040H BBDF EQU 0048H BBDA EQU 0049H BBP EQU 004AH BUPB EQU 004DH BBIOS EQU 004EH FCB EQU BOOT+5CH BUFF EQU BOOT+80H TPA EQU BOOT+100H UPDP EQU 07CH UPFC EQU 07DH UPST EQU 07DH UPSC EQU 07EH UPSR E\SK WITH 8 INCH FLOPPY ; ; COPYRIGHT 1980,1981 HEATH COMPANY, BENTON HARBOR, MICHIGAN ; ; HEATH/ZENITH SOFTWARE GROUP ; HILLTOP ROAD ; SAINT JOSEPH, MICHIGAN ; ; **D FALSE EQU 0 TRUE EQU 1 IF TRUE-1 %: TRUE NE 1 ENDIF IF (H1 ER EQU 08H DCOPY EQU 0BH DFMT EQU 0DH DFMTD EQU 0EH DFMTD2 EQU 0FH FD$BASE EQU 078H FD$CON EQU FD$BASE FD$INT EQU FD$BASE+1 FD$CMD EQU FD$BASE+2 FD$STA EQU FD$BASE+2 FD$DAT EQU FD$BASE+3 FD$SEC EQU FD$BASE+2 FD$TRK EQU FD$BASE+3 FD$CD EQU 0 FDQU 07EH DPDC EQU 07FH U0 EQU 02H U1 EQU 04H U2 EQU 08H DFMO EQU 10H DFDI EQU 20H DFST EQU 40H DFHD EQU 01H DFT0 EQU 02H DFWP EQU 04H DFSD EQU 08H DSYN EQU 0FDH LPSA EQU 20 STSA EQU 8/2+1 STSB EQU 12/2+1 WHDA EQU 20 WHNA EQU 20 WSCA EQU 647T+H37T+H47T+H67T-1) SHR 15 %: NO DISK DRIVE TYPES SPECIFIED ENDIF IF (2-(H17T+H37T+H47T+H67T)) SHR 15 %: TOO MANY DISK DRIVE TYPES SPECIFIED ENDIF PARTITN EQU TRUE AND H67T H67PART2 EQU TRUE AND PARTITN TOD EQU FALSE EVENT EQU FALSE INTINP EQ $TS EQU 1 FDCRST EQU 000H FDCSEK EQU 010H FDCSTP EQU 020H FDCSTI EQU 040H FDCSTO EQU 060H FDCRDS EQU 080H FDCWRS EQU 0A0H FDCRDA EQU 0C0H FDCRDT EQU 0E0H FDCWRT EQU 0F0H FDCFI EQU 0D0H FDFUTR EQU 00010000B FDFHLB EQU 00001000B FDFVRF EQU 0000*25/20 WRITA EQU 20 WRITB EQU 10 WRITC EQU 128/8 READA EQU 48 SPD EQU 250 HLTG EQU 20 HST EQU 24/4 STEPR EQU 30/2 DELAYS EQU 6*256+15 RETRIES EQU 10 D$E$TRK EQU 001H D$E$HSY EQU 002H D$E$HCK EQU 004H D$E$CHK EQU 008H D$E$RNF EQU 010H D$E$MDU TRUE BRKKEY EQU FALSE AND INTINP H37ED EQU TRUE AND H37T H47ED EQU TRUE AND H47T H17ND EQU 3*H17T H37ND EQU 3*H37T H47ND EQU 2*H47T H67ND EQU 2*H67T+H67PART2 BIOS EQU $ BDOS EQU BIOS-0E00H CCP EQU BDOS-0800H CCPCLR EQU CCP+3 BOOT EQU 0000H I  HD0LUN EQU 11100000B HD0LA2 EQU 00011111B HD0LA1 EQU 2 HD0LA0 EQU 3 HD0NB EQU 4 HD0CON EQU 5 HD1OP EQU 0 HD1LUAS EQU 1 HD1LUNS EQU 11100000B HD1LA2S EQU 00011111B HD1LA1S EQU 2 HD1LA0S EQU 3 HD1NB EQU 4 HD1LUAD EQU 5 HD1LUND EQU 11100000B a37 EQU 60 FDHDD EQU 20 DELAY37 EQU 6*256+15 H37VEC EQU 8*4 DLYMO37 EQU H37VEC+3 DLYH37 EQU H37VEC+4 H37CTL EQU H37VEC+5 H37IRET EQU H37VEC+6 H67BLKIO EQU TRUE SHUGART EQU FALSE HD$DAT EQU 0 HD$CON EQU 1 HD$STA EQU 1 HD$SWI EQU 2 HDFACKH EQU 1QU 00000010B FDFII2 EQU 00000100B FDFII3 EQU 00001000B FDSNRD EQU 10000000B FDSWPV EQU 01000000B FDSHLD EQU 00100000B FDSRTE EQU 00100000B FDSWTF EQU 00100000B FDSSEK EQU 00010000B FDSRNF EQU 00010000B FDSCRC EQU 00001000B FDSTK0 EQU 00000100B  pHD1LA2D EQU 00011111B HD1LA1D EQU 6 HD1LA0D EQU 7 HD1SPAR EQU 8 HD1CON EQU 9 HD6OP EQU 0 HD6LUN EQU 1 HD6TFC EQU 5 HDFDR EQU 10000000B HDFDDEC EQU 01000000B HDFDEN EQU 00000010B HDFSID EQU 00000001B HDFLUN EQU 11100000B HDFERR EQU 00000010B H<0000000B HDFSEL EQU 01000000B HDFEI EQU 00100000B HDFRES EQU 00010000B HDFDE EQU 00000010B HDBREQ EQU 10000000B HDBIO EQU 01000000B HDBMSG EQU 00100000B HDBCMD EQU 00010000B HDBBSY EQU 00001000B HDBPE EQU 00000100B HDBIRQ EQU 00000010B HDBACK EgFDSLDT EQU 00000100B FDSIND EQU 00000010B FDSBSY EQU 00000001B FDRATRK EQU 0 FDRASID EQU 1 FDRASEC EQU 2 FDRASL EQU 3 FDRACRC EQU 4 FDRAL EQU 6 FDSL128 EQU 0 FDSL256 EQU 1 FDSL512 EQU 2 FDSL1K EQU 3 CONIRQ EQU 00000001B CONDRQ EQU 00000010B  DFPE EQU 00000001B HDSMB0 EQU 0 HDSLBS EQU 1 HDFLB0 EQU 11100000B HDFSYN EQU 00001111B HDSSB EQU 0 HDSBAV EQU 10000000B HDSET EQU 00110000B HDSEC EQU 00001111B HDSLULA EQU 1 HDSLUN EQU 11100000B HDSLA2 EQU 00011111B HDSLA1 EQU 2 HDSLA0 EQU 3 QU 00000001B HDCTDR EQU 000H HDCRCL EQU 001H HDCRSY EQU 002H HDCRS EQU 003H HDCFD EQU 004H HDCFT EQU 006H HDCFBS EQU 007H HDCRD EQU 008H HDCWPS EQU 009H HDCWR EQU 00AH HDCSEK EQU 00BH HDCCPY EQU 020H HDCFDD EQU 0C0H HD0OP EQU 0 HD0LULA EQU 1CONMFM EQU 00000100B CONMO EQU 00001000B CONDS0 EQU 00010000B CONDS1 EQU 00100000B CONDS2 EQU 01000000B CONDS3 EQU 10000000B NTRKS37 EQU 40 NTRKD37 EQU 80 NSPTS37 EQU 10 NSPTD37 EQU 16 NSPTE37 EQU 5 ILFS37 EQU 3 ILFD37 EQU 3 ILFE37 EQU 3 NSBT @ 10000000B DPEH67H EQU 11000000B DPEH67F EQU 11001000B DPETYPF EQU DPETYPE OR DPEH67F DPEP7C EQU 00010000B DPE48RO EQU 00010000B DPE96T EQU 00001000B DPEASGN EQU 00000100B DPEED EQU 00000100B DPEDD EQU 00000010B DPE2S EQU 00000001B DPEUNIT EQU DM EQU 0FFH BT$CD EQU 000H H85CRT EQU 372Q H84TTY EQU 0D0H H84CRT EQU 0E8H H84LPT EQU 0E0H H84RDP EQU 0D8H B75 EQU 1536 B110 EQU 1047 B134 EQU 857 B300 EQU 384 B600 EQU 192 B1200 EQU 96 B2400 EQU 48 B4800 EQU 24 B9600 EQU 12 B19200 EQU 6 NUEQU 018H HDEBBF EQU 019H HDEFE EQU 01AH HDEIC EQU 020H HDEIDA EQU 021H HDEIF EQU 022H H67MIN EQU 290 H67MAX EQU 32794 IF SHUGART NSEC67 EQU 32768 ENDIF IF NOT (SHUGART) NSEC67 EQU 39040 ENDIF NSPT67 EQU 26 NSYS67H EQU 1 MI$JMP EQU 0C3H  PEHTH+1 DPERPS EQU DPEHTH+2 DPERPAB EQU DPEHTH+3 DPETRK EQU DPEHTH+4 DPEUNK EQU 10000000B DPESEK EQU DPEHTH+5 DPEMO EQU 10000000B DPEUPB EQU DPEHTH+6 DPEFLG2 EQU DPEHTH+6 DPEIMG EQU 00000010B DPE96TM EQU 00000001B DPELUN EQU DPEHTH+7 DPEHL EQU  LL EQU 00H CTLC EQU 03H BELL EQU 07H CR EQU 0DH LF EQU 0AH PADCH EQU CR TTY EQU 0 CRT EQU 1 PTR EQU 1 PTP EQU 1 BAT EQU 2 UR1 EQU 2 UP1 EQU 2 LPT EQU 2 UC1 EQU 3 UR2 EQU 3 UP2 EQU 3 UL1 EQU 3 DIOB EQU (CRT) OR (UR1 SHL 2) OR (UP1 SHL 4) O H8CTL EQU 0F0H H8TR EQU 0D0H H88CTL EQU 0F2H M1H EQU 020H IO0 EQU 040H CLKE EQU 002H CLKVEC EQU 0008H TICCNT EQU 000BH CTLPRT EQU 000DH H8FLAG EQU 000EH DEVCTL EQU 000FH SERVEC EQU 0008H*3 NDISKS EQU H17ND+H37ND+H47ND+H67ND IF TRUE-1 %: TRU 38 DPBSPT EQU 0 DPBBSH EQU DPBSPT+2 DPBBLM EQU DPBSPT+3 DPBEXM EQU DPBSPT+4 DPBDSM EQU DPBSPT+5 DPBDRM EQU DPBSPT+7 DPBAL0 EQU DPBSPT+9 DPBAL1 EQU DPBSPT+10 DPBCKS EQU DPBSPT+11 DPBOFF EQU DPBSPT+13 DPBL EQU 15 LABVER EQU 0 LABBUF EQU 0 BDTYPE6R (LPT SHL 6) DDSEL EQU 0 DDRD EQU 3 DDWR EQU 6 DDRES EQU 9 DDMNT EQU 12 DPEXLT EQU 0 DPEDPB EQU 10 DPEHTH EQU 16 DPEL EQU 24 DPEFLAG EQU DPEHTH+0 DPETYPE EQU 11100000B DPENE EQU 00000000B DPEH17 EQU 01000000B DPEH37 EQU 01100000B DPEH47 EQUiE NE 1 ENDIF IF (8-NDISKS) SHR 15 %: NDISK GT 8 -- DRIVE MAP ONLY HAS 8 ENTRY SLOTS ENDIF NSECTS EQU 44 IF (H47T AND H47ED) OR (H37T AND H37ED) HSTSIZ EQU 1024 ENDIF IF NOT ((H47T AND H47ED) OR (H37T AND H37ED)) HSTSIZ EQU 256 ENDIF BT$W yDW CSV2,ALV2 DB DPEH17 DB U2 DB 2 DB 8 DB 0FFH DB STEPR DB 0 DB 0 ENDIF IF H37T DPE37$0 DW 0000H,0000H DW 0000H,0000H DW DIRBUF,DPB37$0 DW CSV37$0,ALV37$0 DB DPEH37+DPEDD DB CONDS0 DB 2 DB 8 DB DPEUNK DB FDFS30 DB 07ODEB7 MODEB0 EQU 00000001B MODEB1 EQU 00000010B MODEB2 EQU 00000100B MODEB3 EQU 00001000B MODEB6 EQU 01000000B MODEB7 EQU 10000000B H84PT1: DB H84CRT CRTBAUD DW B9600+8000H H84PT2: DB H84TTY TTYBAUD:DW B300 H84PT3: DB H84LPT LPTBAUD:DW B4800 H 8H SBC$BSB EQU 001BH SBC$SBA EQU 001EH SBC$SBB EQU 0021H SBC$SSZ EQU 0024H SBC$SPT EQU 0026H SBC$TPC EQU 0028H SBC$CPV EQU 002AH SBC$SPS EQU 002CH SBC$VSZ EQU 002EH SBC$NSL EQU 0031H SBC$CSA EQU 0032H SBC$CSB EQU 0034H SBC$CBA EQU 0036H SBC$C m DB 0 DPE37$1 DW 0000H,0000H DW 0000H,0000H DW DIRBUF,DPB37$1 DW CSV37$1,ALV37$1 DB DPEH37+DPEDD DB CONDS1 DB 2 DB 8 DB DPEUNK DB FDFS30 DB 0 DB 0 DPE37$2 DW 0000H,0000H DW 0000H,0000H DW DIRBUF,DPB37$2 DW CSV37$2,ALV37$2 784PT4: DB H84RDP RDPBAUD:DW B300 DB 0 DW 0 BSIZE DB (BIOSEND-BIOS+255)/256 BEND DW BIOSEND SECNT17 DW 0 SECNT37 DW 0 BNDISKS DB NDISKS DPBASE DS 0 IF H17T DPE0: DW XLT17,0000H DW 0000H,0000H DW DIRBUF,DPB17S DW CSV0,ALV0 DB DPEH17 DBB EQU 0038H SBC$LEN EQU 0080H SPB$OSD EQU 0 SPB$PAT EQU 1 SPB$OSL EQU 16 SPB$OSN EQU 16 SPB$OSI EQU 0 SPB$OSM EQU 00011111B SPB$UAR EQU 00011110B SPB$EOL EQU SPB$OSM SPB$FSN EQU 1 SPB$PEL EQU 4 SBC$BEL EQU 3 JMP CBOOT WBOOTE: JMP WBOOT JM SDB DPEH37+DPEDD DB CONDS2 DB 2 DB 8 DB DPEUNK DB FDFS30 DB 0 DB 0 ENDIF IF H47T DPE47$0 DW XLT0S,0000H DW 0000H,0000H DW DIRBUF,DPB0SS DW CSV47$0,ALV47$0 DB DPEH47 DB 000H DB 1 DB 8 DB 0,0,0,0 DPE47$1 DW XLT0S,0000H DWB U0 DB 2 DB 8 DB 0FFH DB STEPR DB 0 DB 0 DPE1: DW XLT17,0000H DW 0000H,0000H DW DIRBUF,DPB17S DW CSV1,ALV1 DB DPEH17 DB U1 DB 2 DB 8 DB 0FFH DB STEPR DB 0 DB 0 DPE2: DW XLT17,0000H DW 0000H,0000H DW DIRBUF,DPB17S P CONST JMP CONIN JMP CONOUT JMP LIST JMP PUNCH JMP READER JMP HOME JMP SETDSK JMP SETTRK JMP SETSEC JMP SETDMA JMP READ JMP WRITE JMP LISTST JMP SECTRAN BIOSVER DB VERS DEFIOB DB DIOB PRTRDY DB 010H MODE DB PARTITN*MODEB3+M p SHLD BOOT+1 LXI H,BDOS+6 STA BOOT+5 SHLD BOOT+6 LXI B,BUFF CALL SETDMA CALL FLUSH1 POP PSW RRC LDA MODE JNC GOW1 RAL GOW1: RAL LDA LOGDSK STA SEKDSK MOV C,A JC CCP JMP CCPCLR WBTE: LXI H,BTMSG CALL PMSG CALL CONIN JP H ENDIF LXI D,DPEHTH DAD D LXI D,CCP-128 LXI B,NSECTS*256 IF H37T OR H67T MOV A,M ANI DPETYPE CPI DPEH37 JZ WBT0Y CPI DPEH67H JNZ WBT0Z WBT0Y: LXI D,CCP-256 ENDIF WBT0Z: LXI H,0 WBT1: SHLD SEKTRK XCHG SHLD DMAB WBT2: PUSj IF H67PART2 AND (H67T) DPE67$2 DW 0000H,0000H DW 0000H,0000H DW DIRBUF,DPB67$2 DW 0000H,ALV67$2 DB DPEH67H DB 0 DB 2 DB 32 DW 0 DW 0 ENDIF IF (H67T) DPE67$1 DW XLT0S,0000H DW 0000H,0000H DW DIRBUF,DPB0SS DW CSV67$1,ALV67$1  ZMP WBOOT CDA: LHLD DMAB ORA A RAR MOV D,A MVI A,0 RAR MOV E,A DAD D RET HOME: LDA HSTWRT ORA A JNZ HOMED STA HSTACT HOMED: LXI B,0 SETTRK: MOV H,B MOV L,C SHLD SEKTRK RET SETDSK: MOV A,E STA SETDSKB MOV A,C STA SETDSKSH B MVI B,0 LHLD XLTW XCHG CALL SECTRAN MOV C,L MOV A,L PUSH PSW CALL SETSEC POP PSW DCR A CALL CDA SHLD DMAADR MOV A,H CPI CCP/256 JC WBT3 CPI BIOS/256 JNC WBT3 CALL READ ORA A JNZ WBTE POP B DCR B JZ WBT4 P` DB DPEH67F DB 020H DB 1 DB 8 DB 0,0,0,0 ENDIF WBOOT: LXI SP,STACK EI XRA A MOV C,A MOV E,A CALL SETDSK MOV A,H ORA L JZ WBTE PUSH H CALL HLIHL SHLD XLTW1 SHLD XLTW POP H PUSH H LXI D,DPEDPB DAD D CALL HLIHL  A CPI NDISKS JNC SETDE LXI H,BDMAP CALL DADA MOV A,M STA SEKDSK CALL GETDPE SHLD SETDSKC LXI D,DPEHTH DAD D SHLD DPBX IF PARTITN MOV A,M ANI DPETYPF CPI DPEH67H JNZ SETDSK1 MOV A,M ANI DPEASGN JZ SETDE ENDIF SETDSK1USH B WBT3: POP B INR C LDA SPT CMP C JNZ WBT2 MVI C,0 CALL CDA PUSH H LDA SPT1 STA SPT LHLD XLTW1 SHLD XLTW POP H XCHG LHLD SEKTRK INX H JMP WBT1 WBT4: MVI A,BT$WM GOW: PUSH PSW MVI A,MI$JMP LXI H,WBOOTE STA BOOT MOV A,M STA SPT1 STA SPT POP H IF H47T OR H67T PUSH H LXI D,DPEHTH DAD D MOV A,M MOV C,A ANI DPETYPE CPI DPEH47 JZ WBT0X MOV A,C ANI DPETYPF CPI DPEH67F JNZ WBT0 WBT0X: MVI A,26 LXI H,XLT0S STA SPT SHLD XLTW WBT0: PO z LDA SEKTRK+1 INX H CMP M JNZ ALLOC LHLD DPBX LXI D,-DPEHTH DAD D CALL HLIHL MOV A,H ORA L JNZ CHKUNA5 LDA UNASI LXI H,SEKSEC JMP CHKUNA6 CHKUNA5: LDA UNASI CALL DADA LDA SEKSEC INR A CHKUNA6: CMP M LXI H,UNASI JNZ ALLO   MVI H,0 RET SECTRAN1: INX H RET WRALL EQU 0 WRDIR EQU 1 WRUAL EQU 2 READ: XRA A STA UNACNT MVI A,1 STA READOP STA RSFLAG MVI A,WRUAL STA WRTYPE JMP RWOPER WRITE: XRA A STA READOP MOV A,C STA WRTYPE CPI WRUAL JNZ CHKUNA eI H,LOGDSK CMP M JNZ SETDE1 MVI M,0 SETDE1: LXI H,0000H RET SETDSKA DS 1 SETDSKB DS 1 SETDSKC DS 2 SETDSKD DS 1 DSKDIS: MOV A,M RLC RLC RLC ANI DPETYPE/32 IF DPETYPE-11100000B %: DPETYPE NE 11100000B ENDIF ADD A LXI H,DTT C C INR M MOV A,M PUSH H PUSH PSW LHLD DPBX LXI D,-DPEHTH+DPEDPB DAD D CALL HLIHL POP PSW CMP M POP H JC NOOVF MVI M,0 LHLD UNATRK INX H SHLD UNATRK NOOVF: XRA A STA RSFLAG JMP RWOPER ALLOC: XRA A STA UNACNT INR A ( LHLD DPBX INX H INX H INX H MOV A,M STA UNACNT LDA SEKDSK STA UNADSK LHLD SEKTRK SHLD UNATRK LHLD DPBX LXI D,-DPEHTH DAD D CALL HLIHL MOV A,H ORA L JNZ WRITE0 LDA SEKSEC STA UNASI JMP CHKUNA WRITE0: LDA SEKSEC INR 5ALL DADA CALL HLIHL DAD D PCHL DTT: DW NULDVD DW NULDVD IF H17T DW H17DVD ENDIF IF NOT (H17T) DW NULDVD ENDIF IF H37T DW H37DVD ENDIF IF NOT (H37T) DW NULDVD ENDIF IF H47T DW H47DVD ENDIF IF NOT (H47T) DW NULDVD STA RSFLAG RWOPER: XRA A STA ERFLAG LHLD DPBX MOV C,M INX H INX H MOV B,M IF H47T OR H67T MOV A,C ANI DPETYPE CPI DPEH47 JZ RW0X MOV A,C ANI DPETYPF CPI DPEH67F JNZ RW0 RW0X: LHLD SEKTRK MOV A,H ORA L JNZ RW0 MVI B,1 ] A MVI C,0 WRITE1: CMP M JZ WRITE2 INR C INX H JMP WRITE1 WRITE2: MOV A,C STA UNASI CHKUNA: LDA UNACNT ORA A JZ ALLOC DCR A STA UNACNT LDA SEKDSK LXI H,UNADSK CMP M JNZ ALLOC LDA SEKTRK LXI H,UNATRK CMP M JNZ ALLOC  ENDIF DW NULDVD IF H67T DW H67DVD ENDIF IF NOT (H67T) DW NULDVD ENDIF DW NULDVD SETSEC: MOV A,C DCR A STA SEKSEC RET SETDMA: MOV H,B MOV L,C SHLD DMAADR RET SECTRAN: XCHG MOV A,H ORA L DAD B JZ SECTRAN1 MOV L,M CPI DPEH37 JNZ SHD6 SHD1: XCHG LXI H,DPEFLG2-DPEHTH DAD D MOV A,M ANI DPEIMG JZ SHD2 LXI H,DPELUN-DPEHTH DAD D MOV A,M STA SHDB CALL GETDPEX XCHG SHD2: LXI H,DPELUN-DPEHTH DAD D LDA SHDA CMP M JZ SHD5 MOV M,A CALL SHD9 JLAG RW9: ANA A RZ RW9A: PUSH PSW CALL FLUSH1 POP PSW RET READHST: XRA A STA RWOP LDA HSTDSK CALL SHD LXI D,DDRD JMP DSKDIS WRITEHST: MVI A,1 STA RWOP LDA HSTDSK CALL SHD LXI D,DDWR JMP DSKDIS FLUSH: LDA HSTACT ANA A MATCH LDA SEKTRK LXI H,HSTTRK CMP M JNZ NOMATCH LDA SEKTRK+1 INX H CMP M JNZ NOMATCH LDA SEKHST LXI H,HSTSEC CMP M JZ MATCH NOMATCH: LDA HSTWRT ORA A CNZ WRITEHST FILHST: LDA SEKDSK STA HSTDSK LHLD SEKTRK SHLD HSTTRK L  ADI 'A' STA MNMSGA LDA SHDB CALL SHD9 ADI 'A' STA MNMSGB LXI D,DDMNT LHLD HSTDPB CALL DSKDIS LXI H,MNMSG CALL PMSG SHD3: CALL CONIN CPI CR JZ SHD4 MVI C,BELL CALL CONOUT JMP SHD3 SHD4: LXI H,CRLF CALL PMSG SHD5: LHLD H  JZ FLUSH1 LDA HSTWRT ANA A CNZ WRITEHST FLUSH1: XRA A STA HSTACT STA HSTWRT STA UNACNT RET PRTERR: LDA MODE ANI MODEB1 RZ PUSH H LXI H,CRLF CALL PMSG POP H CALL PMSG LDA RWOP LXI H,RDMSG ANA A JZ PRTERR1 LXI H,WRMSG EDA SEKHST STA HSTSEC LDA READOP ORA A JNZ FIL1 LDA LSP DCR A JZ FIL2 FIL1: LDA RSFLAG ORA A CNZ READHST FIL2: XRA A STA HSTWRT MATCH: LDA LSP DCR A LXI H,SEKSEC ANA M LXI H,0 JZ M2 LXI D,128 M1: DAD D DCR A JNZ M1 M !STDPB ENDIF SHD6: RET IF H17T OR H37T SHD9: RAR RAR RAR RAR ANI 0FH RET SHDA DS 1 SHDB DS 1 MNMSG DB CR,LF,'PUT DISK ' MNMSGA DB '. IN DRIVE ' MNMSGB DB '.: AND PRESS RETURN',0 ENDIF IF H17T H17DVD: JMP RDYH17 JMP RD17M JMP  PRTERR1: CALL PMSG LXI H,ERRMSG CALL PMSG LDA ERRTYP CALL HOUT LXI H,CRLF CALL PMSG RET SHD: IF H17T OR H37T STA SHDA STA SHDB ENDIF CALL GETDPEX SHLD HSTDPB IF H17T OR H37T MOV A,M ANI DPETYPE CPI DPEH17 JZ SHD1 2: LXI D,HSTBUF DAD D XCHG LHLD DMAADR MVI C,128 LDA READOP ORA A JNZ RWMOVE MVI A,1 STA HSTWRT XCHG RWMOVE: CALL MOVEITX LDA WRTYPE CPI WRDIR LDA ERFLAG JNZ RW9 ORA A JNZ RW9A XRA A STA HSTWRT CALL WRITEHST LDA ERF h 17B: IN DPDC ANI DFHD CMP D JZ RDYH17C MOV D,A INR C MVI A,WHDA RDYH17B1: DCR A JNZ RDYH17B1 RDYH17C: MOV A,B CMP M JNZ RDYH17B MOV A,C CPI 10*2 JC RDYH17D CPI 12*2+1 CMC JNC RDYH17E RDYH17D: MVI A,D$E$UNR CALL H1 : EI STA ERRTYP ANI D$E$UNR+D$E$WRP JNZ H17E4 LHLD SECNT17 INX H SHLD SECNT17 LXI H,ERRCNT DCR M JZ H17E4 LDA ERRTYP CPI D$E$TRK JZ H17E2 MOV A,M CPI 5 JZ H17E2 RAR CMC RNC LHLD TRKPT RAR MOV A,M JC H17E1 CPI 3  WRH1: STA ERFLAG RET XOK: XRA A XIT: PUSH PSW DI LXI H,DELAYS SHLD DLYMO POP PSW EI RET RD17: CALL SDP RD171: CALL SDT CALL LPS JC RD17E MVI B,0 LXI H,HSTBUF CALL WSC MVI A,D$E$MDS JC RD17E RD172: CALL RDB MOV M,A INX 7E RDYH17E: JMP XIT ONH17: EI LXI H,0 SHLD DLYMO LHLD HSTDPB INX H MOV A,M ORI DFMO OUT DPDC MOV B,A LXI H,DEVCTL MOV A,M ANI DFMO JNZ ONH17A PUSH H LHLD HSTDPB LXI D,DPESEK-DPEHTH DAD D MOV A,M POP H RAL ENDIF 9 JZ H17E3 INR M CALL MAI JMP H17E3 H17E1: ORA A JZ H17E3 DCR M CALL MAO JMP H17E3 H17E2: CALL STZ H17E3: XRA A RET H17E4: LXI H,H17MSG CALL PRTERR STC RET H17MSG DB 'H17',0 MNTH17: LHLD HSTDPB LXI D,DPETRK-DPEHTH DAD D )H DCR B JNZ RD172 MOV B,D CALL RDB CMP B JZ XOK MVI A,D$E$CHK RD17E: CALL H17E JNC RD171 JMP XIT WR17: CALL SDP WR171: IN DPDC ANI DFWP MVI A,D$E$WRP JNZ WR17E CALL SDT CALL LPS JC WR17E MVI B,0 LXI H,HSTBUF MVI A,WRI  IF DPEMO-10000000B AND (H17T) %: DPEMO NE 10000000B ENDIF IF (H17T) MVI A,SPD JNC ONH17B RAR RAR ANI 03FH JMP ONH17B ONH17A: MOV A,M ANI U0+U1+U2 ANA B MVI A,0 JNZ ONH17B MVI A,HLTG ONH17B: STA DLYW MOV M,B RET SDP: CAL MVI M,DPEUNK ; JMP RESH17 ;RESET DRIVE RESH17: XRA A OUT DPDC STA DEVCTL LXI H,0 SHLD DLYMO RET RDYH17: CALL ONH17 LXI H,DLYW RDYH17A: MOV A,M ANA A JNZ RDYH17A LXI H,TICCNT MVI A,100 ADD M MOV B,A MVI C,0 MOV D,C RDYH TA WR172: DCR A JNZ WR172 MVI C,WRITB MVI A,WRITC CALL WSP WR173: MOV A,M CALL WNB INX H DCR B JNZ WR173 MOV A,D CALL WNB CALL WNB CALL WNB CALL WNB LDA DEVCTL OUT DPDC JMP XOK WR17E: CALL H17E JNC WR171 JMP XIT H17E JP WNB1 MOV A,E OUT UPDP XRA D RLC MOV D,A RET ENDIF IF H37T H37DVD: JMP SET37 JMP RD37 JMP WR37 JMP RESH37 JMP MNTH37 SET37: LXI H,0 SHLD HSTTRK XRA A STA HSTSEC DCR A STA SET37A CALL RDYH37 JC SET379 LHLD DPBX FH B IN DPDC RAR JC STS2 LXI H,TICCNT MOV B,M STS1: IN DPDC RAR JC STS2 MVI A,STSA ADD B CMP M JNZ STS1 JMP STS3 STS2: CALL WNH MVI A,STSB CALL DLY STS3: POP B DI WHD: IN DPDC RAR JNC WHD MVI A,WHDA JMP UDLY WNH: I LI HST RNC MVI A,HST STA DLYW RET STZ0: CALL MAO STZ: IN DPDC ANI DFT0 JZ STZ0 LHLD TRKPT MVI M,0 JMP SDT1 MAI: MVI A,DFDI JMP MAO1 MAO: XRA A MAO1: PUSH H MOV H,A LDA DEVCTL ORA H OUT DPDC ORI DFST OUT DPDC XRI DFST  LXI D,DPETRK-DPEHTH DAD D MVI M,DPEUNK ENDIF IF H37ED AND (H37T) CALL RD37 JZ SET373 LHLD DPBX MOV A,M XRI DPEDD MOV M,A CALL RD37 JNZ SET379 SET373: ENDIF IF NOT (H37ED) AND (H37T) MVI A,FDCRDA LXI D,H37TMP CALL H37RD N DPDC RAR JC WNH MVI A,WHNA UDLY: DCR A JNZ UDLY RET RDB: IN UPST RAR JNC RDB IN UPDP MOV E,A XRA D RLC MOV D,A MOV A,E RET WSC: MVI A,READA WSC0: DCR A JNZ WSC0 MVI A,DSYN OUT UPSC IN UPSR MVI A,WSCA MOV D,A W  OUT DPDC LHLD HSTDPB LXI D,5 DAD D MOV A,M ANI 07FH POP H DLY: PUSH H LXI H,TICCNT ADD M DLY1: CMP M JNZ DLY1 POP H RET LPS0: CALL STS LPS: LDA DLYW ORA A JNZ LPS0 MVI B,LPSA LPS1: DI CALL WSC MVI A,D$E$HSY JC LPS2 W JZ SET373 LHLD DPBX MOV A,M XRI DPEDD MOV M,A LXI H,H37CTL MOV A,M XRI CONMFM MOV M,A OUT FD$CON MVI A,FDCRDA LXI D,H37TMP CALL H37RD JNZ SET379 SET373: LDA H37TMP+FDRASL CPI FDSL256 JNZ SET379 CALL RD37 JNZ SET379 EN SC1: IN DPDC ANI DFSD JNZ WSC2 DCR D JNZ WSC1 STC RET WSC2: IN UPDP MVI D,0 RET WSP: DCR A JNZ WSP LDA DEVCTL INR A OUT DPDC WSP1: XRA A CALL WNB DCR C JNZ WSP1 MVI A,DSYN MOV D,A WNB: MOV E,A WNB1: IN UPST ANA A  CALL RDB CALL RDB LXI H,TRACK CMP M MVI A,D$E$TRK JNZ LPS2 CALL RDB INX H CMP M MVI A,D$E$RNF JNZ LPS2 MOV H,D CALL RDB CMP H RZ MVI A,D$E$HCK LPS2: PUSH PSW CALL STS POP PSW DCR B JNZ LPS1 STC RET STS: EI PUS ^ .UT FD$CON MOV M,A LXI H,DELAY37 SHLD DLYMO37 H37DONE1: POP PSW RET RD37: CALL SDP37 RD370: CALL SDT37 LDA SIDE ORI FDCRDS+FDFSLF LXI D,HSTBUF CALL H37RD JZ RD373 CALL H37E JNC RD370 ORI 0FFH STA ERFLAG RD373: JMP H37DONE WR KC LXI B,DPEDPB DAD B CALL HLIHL LXI D,HSTBUF+LABDPB MVI C,DPBL CALL MOVEITX XRA A SET378: MVI A,0 STA SET37A CALL H37DONE RET SET379: STC JMP SET378 DFTL37 DB LABVER DB DPEH37,0,2,8,0,0,0,0 DW 20 DB 3,7,0 DW 91,63,00C0H,  LDAX D ANI DPEED+DPEDD+DPE2S ORA B MOV M,A INX D INX D LDAX D INX H INX H MOV M,A INX D LDAX D INX H MOV M,A INX D INX D INX D LDAX D ANI 0FFH-DPEIMG MOV B,A INX H INX H INX H MOV A,M ANI DPEIMG ORA B f37: LHLD HSTDPB MOV A,M ANI DPE48RO MVI A,FDSWPV JNZ WR37E CALL SDP37 WR370: CALL SDT37 MVI A,FD$CD OUT FD$INT LDA H37CTL ORI CONDRQ OUT FD$CON LDA SIDE ORI FDCWRS+FDFSLF LXI H,WR372 SHLD H37IRET LXI H,WR371 LXI D,HSTBUF I16,3 SET37A DB 0 H37TMP DS FDRAL H37WAIT: POP H SHLD H37IRET MOV B,A MVI A,FD$CD OUT FD$INT MOV A,B OUT FD$CMD JMP $ H37RD: LXI H,H37RD2 SHLD H37IRET MOV B,A LDA H37CTL ORI CONDRQ OUT FD$CON MVI A,FD$CD OUT FD$INT MOV ^MOV M,A ENDIF IF (DPEFLG2-DPERPAB-3) AND (H37T) %: (DPEFLG2-DPERPAB) NE 3 ENDIF IF (H37T) LDA HSTBUF+LABHTH+DPEFLAG-DPEHTH ANI DPE2S JZ SET374 MVI A,FDCRDA+FDFSS1 LXI D,H37TMP CALL H37RD JNZ SET379 LDA H37TMP+FDRASID CPI 1 JNZ  OUT FD$CMD WR371: LDAX D HLT OUT FD$DAT INX D PCHL WR372: CALL H37RD2 JZ WR373 WR37E: CALL H37E JNC WR370 ORI 0FFH STA ERFLAG WR373: JMP H37DONE H37E: STA ERRTYP ANI FDSNRD+FDSWPV JNZ H37E1 LDA SET37A ANA A JNZ H37E0 LH  A,B LXI H,H37RD1 OUT FD$CMD H37RD1: HLT IN FD$DAT STAX D INX D PCHL H37RD2: PUSH PSW LDA H37CTL OUT FD$CON POP PSW ANA A RET H37DONE: PUSH PSW LDA SET37A ANA A JNZ H37DONE1 LXI H,H37CTL MOV A,M ANI 0FFH-CONIRQ O SET379 SET374: MVI A,2 STA TRACK CALL SDT37 MVI A,FDCRDA LXI D,H37TMP CALL H37RD JNZ SET379 LDA H37TMP+FDRATRK CPI 2 JZ SET374D CPI 1 JNZ SET379 LHLD DPBX MOV A,M ORI DPE48RO MOV M,A SET374D: CALL RST37 SET375: LHLD SETDS  IN FD$STA RET SDT37: LHLD TRKPT MOV A,M LXI H,TRACK CMP M JZ SDT372 CALL WBS37 MOV A,M CALL SDT376 LHLD HSTDPB MOV A,M ANI DPE48RO JZ SDT371 MVI A,FD$TS OUT FD$INT LHLD TRKPT MOV A,M OUT FD$TRK LDA TRACK CALL SDT376 ENDIF IF DPEMO-10000000B AND (H37T) %: DPEMO NE 10000000B ENDIF IF (H37T) MVI A,(1000+3)/4+1 JNC ONH37C RAR RAR ANI 03FH JMP ONH37C ONH37B MOV A,M ANI CONDS0+CONDS1+CONDS2+CONDS3 ANA B MVI A,0 JNZ ONH37C MVI A,(50+3)/4+1 ONH3/ H37IRET XTHL EI RET SDP37: CALL ONH37 LDA SET37A ANA A MVI A,4 JZ SDP371 RAR SDP371: STA ERRCNT LDA HSTTRK STA TRACK MVI B,0 LHLD HSTDPB MOV A,M ANI DPE2S JZ SDP374 LXI H,TRACK MOV A,M ANA A RAR MOV M,A JNC SD  SDT371: MVI A,FD$TS OUT FD$INT LDA TRACK OUT FD$TRK LHLD TRKPT MOV M,A MVI A,(15+3)/4+1 LXI H,DLYW CMP M JC SDT372 MOV M,A SDT372: MVI A,FD$TS OUT FD$INT LDA SECTOR OUT FD$SEC SDT373: LDA DLYW ORA A JNZ SDT373 RET SDT3767C: STA DLYW MOV M,B RET RST37: CALL WBS37 LHLD TRKPT MVI M,0 INX H ENDIF IF (DPETRK+1)-DPESEK AND (H37T) %: DPESEK NE (DPETRK+1) ENDIF IF (H37T) MOV A,M ANI 0FFH-DPEMO ORI FDCRST JMP H37WAIT MNTH37: LHLD HSTDPB LXI D,DPETRK- P374 MVI B,FDFSS1 SDP374: MOV A,B STA SIDE LDA HSTSEC INR A STA SECTOR LHLD HSTDPB LXI D,DPETRK-DPEHTH DAD D SHLD TRKPT MOV A,M RAL JC RST37 MVI A,FD$TS OUT FD$INT MOV A,M OUT FD$TRK RET ONH37: LXI H,0 SHLD DLYMO37  C: MOV B,A MVI A,FD$CD OUT FD$INT MOV A,B OUT FD$DAT LHLD TRKPT INX H MOV A,M ANI 0FFH-DPEMO ORI FDCSEK+FDFHLB JMP H37WAIT RDYH37: CALL ONH37 LXI H,DLYW RDYH37A: MOV A,M ANA A JNZ RDYH37A MVI A,FD$CD OUT FD$INT MVI A,FDpDPEHTH DAD D MVI M,DPEUNK ; JMP RESH37 ;RESET DRIVE RESH37: MVI A,FD$CD OUT FD$INT MVI A,FDCFI+FDFINI OUT FD$CMD XRA A OUT FD$CON STA H37CTL LXI H,0 SHLD DLYMO37 SHLD H37IRET IN FD$DAT MVI A,10 RESH371: DCR A JNZ RESH371  LHLD HSTDPB MOV A,M ANI DPEDD JZ ONH37A MVI A,CONMFM ONH37A: INX H ORA M ORI CONMO+CONIRQ OUT FD$CON MOV B,A LXI H,H37CTL MOV A,M ANI CONMO JNZ ONH37B PUSH H LHLD HSTDPB LXI D,DPESEK-DPEHTH DAD D MOV A,M POP H RAL L JC RDERR RDH3: CALL H47INS ANI DSTR+DSDONE+DSERR JZ RDH3 ANI DSDONE+DSERR JNZ RDH4 CALL H47IND MOV M,A INX H JMP RDH3 RDH4: CALL H47INS ANI DSERR RZ RDERR: ER47: MVI A,DRS CALL WCD CALL W4TR CALL H47IND STA ERRTYP LXI HCA,2 ENDIF IF NOT (H47ED) AND (H47T) JNC SETD9 ENDIF IF (H47T) SETD1: ADD A MOV D,A POP PSW ANI 10H MOV A,D JZ SETD2 ORI 1 SETD2: MOV B,A ADD A ADD B ADD A ADD B LXI H,H47PMS CALL DADA XCHG LHLD SETDSKC LDAX D MOV:DYH37D: MOV A,B CMP M JNZ RDYH37C MOV A,C CPI 1*2 JC RDYH37E CPI 3*2+1 CMC JNC RDYH37F RDYH37E: MVI A,FDSNRD CALL H37E RDYH37F: JMP H37DONE WBS37: MVI A,150 WBS371: DCR A JNZ WBS371 RET ENDIF IF H47T H47DVD: JMP SETD47  ,H47MSG CALL PRTERR CALL RESH47 MVI A,0FFH STA ERFLAG RET H47MSG DB 'H47',0 WR47: MVI A,DWR CALL SET47 JC WRERR CALL H47INS ANI DSERR JNZ WRERR WRH3: CALL H47INS ANI DSTR+DSDONE+DSERR JZ WRH3 ANI DSDONE+DSERR JNZ WRH4 MOV A? M,A INX D INX H LDAX D MOV M,A INX D PUSH D LXI D,DPEDPB-1 DAD D POP D LDAX D MOV M,A INX D INX H LDAX D MOV M,A INX D LHLD DPBX MOV A,M ANI 0FFH-DPEED-DPEDD-DPE2S MOV B,A LDAX D ORA B MOV M,A INX D INX H p JMP RD47 JMP WR47 JMP RESH47 XRA A ! RET ! NOP H47PMS: DW XLT0S,DPB0SS DB 0,1,8 DW XLT0S,DPB0SD DB DPE2S,1,16 DW XLT0D,DPB0DS DB DPEDD,2,16 DW XLT0D,DPB0DD DB DPEDD+DPE2S,2,16 ENDIF IF H47ED AND (H47T) DW 0,DPB0ES DB DPEED+DP ,M CALL H47OUTD INX H JMP WRH3 WRH4: CALL H47INS ANI DSERR RZ WRERR: JMP ER47 SET47: CALL WCD RC LHLD HSTDPB MOV A,M RAR ENDIF IF DPE2S-1 AND (H47T) %: DPE2S NE 1 ENDIF IF (H47T) MVI A,0 STA SIDE LDA HSTTRK JNC SET472  INX H LDAX D MOV M,A INX D INX H LDAX D MOV M,A XRA A RET ENDIF IF NOT H47ED AND (H47T) SETD9: STC RET ENDIF IF (H47T) RESH47: MVI A,DCRES CALL H47OUTC CALL W4DONE XRA A CALL H47OUTC RET RD47: MVI A,DRD CALL SET475EDD,8,16 DW 0,DPB0ED DB DPEED+DPEDD+DPE2S,8,16 ENDIF IF (H47T) SETD47: MVI A,DRAS CALL WCD LHLD DPBX INX H MOV A,M ORI 001H CALL WBD CALL W4TR CALL H47IND PUSH PSW ANI 03H CPI 2 ENDIF IF H47ED AND (H47T) JC SETD1 MVI  SET672 LDA ERRTYP CPI HDEIAM JNZ SET679 LXI H,SET67A MOV A,M XRI HDFDEN MOV M,A CALL FDD67 CALL RD67 JNZ SET679 SET672: LXI H,SET67A MOV A,M ORI HDFSID MOV M,A CALL FDD67 JNZ SET679 CALL RD67 JZ SET673 LDA ERRTYP CPIPEH67F JZ SET671 LXI H,0 SHLD HSTTRK CALL RD67 JNZ SET679 CALL CHKLAB JNZ SET679 ENDIF IF PARTITN AND (H67T) LHLD DPBX LXI B,DPETRK-DPEHTH DAD B CALL HLIHL XCHG LHLD HSTBUF+LABHTH+DPETRK-DPEHTH CALL CPHLDE JNZ SET679 LHLLL W4TR RC CALL H47OUTD RET W4DONE: PUSH PSW PUSH B LXI B,0FFFFH W4D1: CALL H47INS ANI DSDONE JNZ W4D2 DCX B MOV A,B ORA C JNZ W4D1 POP B POP PSW STC RET W4D2: POP B POP PSW ORA A RET W4ND: PUSH PSW W4ND1: CALL H47I 7 HDEDNR JNZ SET679 LXI H,SET67A MOV A,M ANI 0FFH-HDFSID MOV M,A SET673: LDA SET67A MOV B,A ADD A ADD B ADD A ADD B LXI H,H67PMS CALL DADA XCHG LHLD SETDSKC LDAX D MOV M,A INX D INX H LDAX D MOV M,A INX D LXI B,D0D DPBX LXI B,DPEUPB-DPEHTH DAD B CALL HLIHL XCHG LHLD HSTBUF+LABHTH+DPEUPB-DPEHTH CALL CPHLDE JNZ SET679 ENDIF IF (H67T) LHLD DPBX LXI B,DPERPAB-DPEHTH DAD B LXI D,HSTBUF+LABHTH+DPERPAB-DPEHTH LDAX D MOV M,A LHLD SETDSKC L&NS ANI DSDONE JNZ W4ND1 POP PSW RET W4TR: PUSH PSW W4TR1: CALL H47INS ANI DSDONE+DSTR JZ W4TR1 ANI DSDONE JNZ W4TR2 POP PSW ORA A RET W4TR2: POP PSW STC RET H47INS: IN 78H H47INS1 EQU $-1 RET H47OUTC: OUT 78H H47OUTC1 EQU WPEDPB-1 DAD B LDAX D MOV M,A INX D INX H LDAX D MOV M,A LHLD DPBX XCHG INX H LDAX D ANI 0FFH-DPEDD-DPE2S ORA M STAX D INX D INX D INX H MOV A,M STAX D INX H INX D MOV A,M STAX D LDA SET67A CALL FDD67 JNZ sXI B,DPEDPB DAD B CALL HLIHL LXI D,HSTBUF+LABDPB MVI C,DPBL CALL MOVEITX JMP SET674 SET671: LHLD DPBX MOV A,M ANI DPEDD JZ SET671A MVI A,HDFDEN SET671A: STA SET67A CALL FDD67 JNZ SET679 LXI H,1 SHLD HSTTRK CALL RD67 JZY $-1 RET H47IND: IN 79H H47IND1 EQU $-1 RET H47OUTD: OUT 79H H47OUTD1 EQU $-1 RET ENDIF IF H67T H67DVD: JMP SET67 JMP RD67 JMP WR67 JMP RESH67 XRA A ! RET ! NOP SET67: XRA A STA HSTSEC LHLD DPBX MOV A,M ANI DPETYPF CPI D 57T) JP WR672 ANI HDBCMD JNZ CMPSTAT MVI B,128 DB 0EDH,0B3H JMP WR672 ENDIF IF NOT (H67BLKIO) AND (H67T) WR671: CALL H67INS ANA A ENDIF IF HDBREQ-10000000B AND NOT (H67BLKIO) AND (H67T) %: HDBREQ NE 10000000B ENDIF IF NOT (H67BLKZH67INS ANA A ENDIF IF HDBREQ-10000000B AND (H67BLKIO) AND (H67T) %: HDBREQ NE 10000000B ENDIF IF (H67BLKIO) AND (H67T) JP RD672 ANI HDBCMD JNZ CMPSTAT MVI B,0 RD673 EQU $-1 DB 0EDH,0B2H JMP RD672 ENDIF IF NOT (H67BLKIO) AND (H67_LL H67OUTC RET RCL67: MVI A,HDCRCL STA CMDBUF+HD0OP CALL SETUP3 MVI A,1 STA RS67B JMP CMPSTAT RS67: MVI A,HDCRS STA CMDBUF+HD0OP XRA A STA CMDBUF+HD0CON CALL SETUP3 MVI A,1 STA RS67B LXI H,RS67A MVI M,0 ENDIF IF H67BLKIO A ,IO) AND (H67T) JP WR671 ANI HDBCMD JNZ CMPSTAT MOV A,M CALL H67OUTD INX H JMP WR671 ENDIF IF (H67T) CMPSTAT: CALL H67IND MOV C,A LREQ: CALL H67INS ANA A ENDIF IF HDBREQ-10000000B AND (H67T) %: HDBREQ NE 10000000B ENDIF IF (ZT) RD671: CALL H67INS ANA A ENDIF IF HDBREQ-10000000B AND NOT (H67BLKIO) AND (H67T) %: HDBREQ NE 10000000B ENDIF IF NOT (H67BLKIO) AND (H67T) JP RD671 ANI HDBCMD JNZ CMPSTAT CALL H67IND MOV M,A INX H JMP RD671 ENDIF IF (H67T) JND (H67T) MVI A,4 STA RD673 ENDIF IF (H67T) CALL RD671 MVI A,0 JNZ RS671 LDA RS67A RS671: ANI HDSET+HDSEC STA ERRTYP RET RS67A DS 4 RS67B DS 1 FDD67: STA CMDBUF+HD6TFC LHLD HSTDPB INX H MOV A,M STA CMDBUF+HD6LUN MVI A,HDCF  H67T) JP LREQ MOV B,A CALL H67IND EI ORA A MVI A,80H JNZ H67ER MOV A,B ANI HDBPE MVI H,81H JNZ H67ER MOV A,C ANI HDFERR+HDFPE RZ ANI HDFERR MVI A,82H JZ H67ER LDA RS67B ANA A RNZ CALL RS67 H67ER: STA ERRTYP CPI  WR67: MVI A,HDCWR CALL SETUP RNZ LXI H,HSTBUF ENDIF IF H67BLKIO AND (H67T) WR671: LDA H67OUTD1 MOV C,A WR672: CALL H67INS ANA A ENDIF IF HDBREQ-10000000B AND (H67BLKIO) AND (H67T) %: HDBREQ NE 10000000B ENDIF IF (H67BLKIO) AND (H6IDD STA CMDBUF+HD6OP CALL SETUP3 JMP CMPSTAT RD67: MVI A,HDCRD CALL SETUP RNZ LXI H,HSTBUF ENDIF IF H67BLKIO AND (H67T) MVI A,128 STA RD673 ENDIF IF (H67T) ENDIF IF H67BLKIO AND (H67T) RD671: LDA H67IND1 MOV C,A RD672: CALL L DB 0,0 EVTCTR DW 0 DLYMO: DB 0 DLYH: DB 0 DLYW: DB 0 CLOCK: SHLD HSAV POP H SHLD RETSAV PUSH PSW LXI H,CTLPRT MOV A,M OUT H88CTL INX H MOV A,M ORA A JZ CLK0 OUT H8CTL CLK0: LHLD TICCNT INX H SHLD TICCNT MOV A,L  C LXI H,CMDBUF OUTCOM: CALL H67INS ANI HDBREQ+HDBCMD+HDBIO ENDIF IF HDBREQ-10000000B AND (H67T) %: HDBREQ NE 10000000B ENDIF IF (H67T) JP OUTCOM CPI HDBREQ+HDBCMD+HDBIO JNZ SETUP4 MOV A,M CALL H67OUTD INX H JMP OUTCOM SETUP4: XM DAD H DAD D DAD H ENDIF IF NSPT67-26 AND (H67T) %: NSPT67 NE 26 ENDIF IF (H67T) LDA HSTSEC CALL DADA XCHG LHLD HSTDPB LXI B,DPETRK-DPEHTH DAD B CALL HLIHL XCHG DAD D MOV A,D ORA E JZ SETUP2 CALL CPHLDE JC SETUP9  _ ORA A JNZ CLKRET IF TOD MOV A,H RAR JC CLK1 LXI H,TODVAL INR M MOV A,M CPI 60 JC CLK1 MVI M,0 INX H INR M MOV A,M CPI 60 JC CLK1 MVI M,0 INX H INR M MOV A,M CPI 24 JC CLK1 MVI M,0 INX H INX H MOV A,M @RA A RET SETUP8: MVI A,84H JMP H67ER SETUP9: POP H MVI A,83H JMP H67ER H67OUTD: OUT 0 H67OUTD1 EQU $-1 RET H67IND: IN 0 H67IND1 EQU $-1 RET H67OUTC: OUT 0 H67OUTC1 EQU $-1 RET H67INS: IN 0 H67INS1 EQU $-1 RET CMDBUF: DB 0 DB 0  XCHG LHLD HSTDPB LXI B,DPEUPB-DPEHTH DAD B CALL HLIHL XCHG CALL CPHLDE JNC SETUP9 SETUP2: XCHG POP H MOV M,D INX H MOV M,E INX H MVI M,1 INX H MVI M,0 SETUP3: XRA A STA RS67B LXI D,-1 GETCON: CALL H67INS ANI HDBBS ALXI H,NDAYS-1 ADD L MOV L,A MOV A,H ACI 0 MOV H,A MOV A,M LXI H,TODVAL+3 INR M CMP M JNC CLK1 MVI M,1 INX H INR M MOV A,M CPI 13 JC CLK1 MVI M,1 INX H INR M ENDIF CLK1: IF EVENT LHLD EVTCTR MOV A,H ORA L J DB 0 DB 0 DB 1 DB 0 ENDIF NULDVD: JMP SETNUL JMP RDNUL JMP WRNUL JMP RESNUL JMP MNTNUL SETNUL: RDNUL: WRNUL: RESNUL: MNTNUL: MVI A,0FFH STA ERFLAG STC RET IF TOD NDAYS DB 31,28,31,30,31,30,31,31,30,31,30,31 ENDIF TODVA9Y JZ SETUP3A DCX D MOV A,D ORA E JZ SETUP8 JMP GETCON SETUP3A: MVI A,HDFSEL CALL H67OUTC LXI D,-1 CBUSY: CALL H67INS ANI HDBBSY JNZ SETUP3B DCX D MOV A,D ORA E JZ SETUP8 JMP CBUSY SETUP3B: DI MVI A,HDFDE CALL H67OUT 'OUT DW LIST DW LIST LISTST: LDA IOBYTE RLC RLC CALL INDXIT DW TTYOS DW CRTOS DW LPTOS DW DBDOS LIST: LDA IOBYTE RLC RLC CALL INDXIT DW TTYOUT DW CRTOUT DW LPTOUT DW DBD PUNCH: LDA IOBYTE RRC RRC RRC CALL GOTOIT D H DAD H DAD H IF DPEL-24 %: DPEL NE 24 ENDIF LXI D,DPBASE DAD D RET GETDPEX: CALL GETDPE LXI D,DPEHTH DAD D RET HLIHL: MOV A,M INX H MOV H,M MOV L,A RET MOVEITX: XCHG IF $-MOVEIT %: MOVEIT MUST IMMEDIATELY FOLLOW MO1-U2 STA DEVCTL OUT DPDC ENDIF CLK4: IF H37T LXI H,DLYMO37 MOV A,M ORA A JZ CLKRET DCR M JNZ CLK5 LDA H37CTL ANI 0FFH-CONMO STA H37CTL OUT FD$CON CLK5: INX H MOV A,M ORA A JZ CLKRET DCR M JNZ CLKRET LDA H37CTL AN DW TTYOUT DW DMYOUT DW MDOUT DW CRTOUT READER: LDA IOBYTE RRC CALL GOTOIT DW TTYIN DW DMYIN DW MDIN DW CRTIN INDXIT: RLC GOTOIT: ANI 06H XTHL CALL DADA CALL HLIHL XTHL RET CRTSTAT: IF NOT INTINP LDA MODE RAR JC CRTS1VEITX ENDIF MOVEIT: MVI A,81H ADI 80H JPO MOVEIT1 MVI B,0 DB 0EDH,0B0H RET MOVEIT1: MOV A,M STAX D INX H INX D DCR C JNZ MOVEIT1 RET CONST: CALL CONS ORA A RZ MVI A,0FFH RET CONS: LDA IOBYTE CALL INDXIT DW TTYSTAT ~I 0FFH-CONDS0-CONDS1-CONDS2-CONDS3 STA H37CTL OUT FD$CON ENDIF CLKRET: LDA TICCNT RAR JC CLKR2 LXI H,DLYW MOV A,M ORA A JZ CLKR2 DCR M CLKR2: POP PSW LHLD RETSAV PUSH H LHLD HSAV EI RET CHKLAB: XRA A MVI B,LABLEN LXI   ENDIF IF MODEB0-1 AND (NOT INTINP) %: MODEB0 NE 1 ENDIF IF (NOT INTINP) LXI H,H84PT1 JMP US CRTS1: IN H85CRT+1 ANI 02H RET ENDIF IF INTINP LDA CRTB ORA A RNZ CRTS2: LDA MODE RAR JNC CRTS2A ENDIF IF MODEB0-1 AND (INTINP DW CRTSTAT DW RDRST DW CRTSTAT RDRST: LDA IOBYTE RRC CALL GOTOIT DW TTYSTAT DW BUSY DW MDSTAT DW CRTSTAT CONIN: LDA IOBYTE CALL INDXIT DW TTYIN DW CRTIN DW READER DW CRTIN CONOUT: LDA IOBYTE CALL INDXIT DW TTYOUT DW CRTH,HSTBUF+LABEL CHKLAB1: ADD M INX H DCR B JNZ CHKLAB1 INR A RET CPHLDE: MOV A,H CMP D RNZ MOV A,L CMP E RET DADA: ADD L MOV L,A RNC INR H RET GETDPE: ANI 0FH MOV L,A MVI H,0 MOV D,H MOV E,L DAD H DAD D DA )7 ENDIF IF (BRKKEY) AND (INTINP) ENDIF IF H37T AND (BRKKEY) AND (INTINP) CALL RESH37 ENDIF IF (BRKKEY) AND (INTINP) ENDIF IF H47T AND (BRKKEY) AND (INTINP) CALL RESH47 ENDIF IF (BRKKEY) AND (INTINP) ENDIF IF H67T AND (BRKKEY) ANH B PUSH D MVI C,BELL CALL CRTOUT POP D POP B LDA CRTB CPI CRTLEN JZ CRTIS5 CRTIS2: POP PSW LHLD CRTPUT MOV M,A INX H MOV A,L CPI CRTBND MOD 256 JNZ CRTIS3 LXI H,CRTBUF CRTIS3: SHLD CRTPUT LXI H,CRTB INR M CRTIS4: LHLD  RAR JC CRTI1 ENDIF IF MODEB0-1 AND (NOT INTINP) %: MODEB0 NE 1 ENDIF IF (NOT INTINP) LXI H,H84PT1 CALL UI ANI 7FH RET CRTI1: IN H85CRT+1 ANI 02H JZ CRTI1 IN H85CRT ANI 7FH RET ENDIF IF INTINP CRTIN1: CALL CRTSTAT JZ  D (INTINP) CALL RESH67 ENDIF IF (BRKKEY) AND (INTINP) CALL FLUSH1 EI JMP BOOT CRTI11: IN H85CRT MVI A,17H OUT H85CRT+1 LXI D,6000 CRTI12: IN H85CRT+1 ANI 22H JNZ CRTI11 DCX D MOV A,D ORA E JNZ CRTI12 IN H85CRT JMP CRTI100OLDSP SPHL POP PSW LHLD RETSAV PUSH H LHLD HSAV EI RET CRTIS5: POP PSW JMP CRTIS4 CRTIS6: IN H85CRT+1 ENDIF IF BRKKEY AND (INTINP) ANI 20H JNZ CRTI11 ENDIF IF (INTINP) IN H85CRT JMP CRTIS1 ENDIF IF BRKKEY AND (INTINP) CRTIN1 DI LXI H,CRTB DCR M LHLD CRTGET MOV C,M INX H MOV A,L CPI CRTBND MOD 256 JNZ CRTIN2 LXI H,CRTBUF CRTIN2: SHLD CRTGET EI MOV A,C RET CRTISR: SHLD HSAV POP H SHLD RETSAV PUSH PSW LXI H,0 DAD SP SHLD OLDSP LXI   ENDIF IF (INTINP) ENDIF CRTOUT: CALL CRTOS ORA A JZ CRTOUT LDA MODE RAR JC CRTO1 IF MODEB0-1 %: MODEB0 NE 1 ENDIF JMP UO CRTO1: PUSH H INX H INX H MOV A,M RAL POP H MOV A,C CC MUC OUT H85CRT JMP POUT2 TTYIN: LXIj CRTIS8: CALL UI1 LXI D,6000 CRTIS9: MVI A,5 CALL PINX ANI 9 JNZ CRTIS8 DCX D MOV A,D ORA E JNZ CRTIS9 CALL UI1 CRTI10: LXI H,CRTBUF SHLD CRTGET SHLD CRTPUT XRA A STA CRTB ENDIF IF H17T AND (BRKKEY) AND (INTINP) CALL RESH1$SP,LCLSTK LXI H,H84PT1 MVI A,2 CALL PINX CPI 0100B JNZ CRTIS6 ENDIF IF BRKKEY AND (INTINP) MVI A,5 CALL PINX ANI 10H JNZ CRTIS8 ENDIF IF (INTINP) CALL UI1 CRTIS1: ANI 7FH PUSH PSW LDA CRTB CPI CRTLEN-4 JC CRTIS2 PUS  CALL PINX ANI 20H RET UO: MOV A,M POUT: STA POUT1+1 PUSH H INX H INX H MOV A,M RAL POP H MOV A,C CC MUC POUT1: OUT 00H POUT2: CPI PADCH RNZ PUSH H INX H INX H MOV A,M POP H RAR RAR RAR RAR ANI 07H RZ STAX LPTOS: LXI H,H84PT3 LXI D,LPTCTS CALL UOS JZ LPTOSB MVI A,6 CALL PINX MOV B,A LDA MODE ANI MODEB2 JNZ LPTOS0 MOV A,B CMA MOV B,A LPTOS0: LDA PRTRDY ANA B JZ LPTOSB LDAX D ORA A JNZ LPTOS1 DCR A STA DCLPOS RET LPTO JMP UO DBD: CALL DBDOS ORA A JZ DBD CALL UO LXI H,HSCNT DCR M CPI 01BH MOV A,M JNZ DBD1 CPI 2 RNC MVI M,2 RET DBD1: ORA A RNZ MVI A,1 STAX D RET HSCNT: DB 32 MDIN: LXI H,H84PT4 JMP UI MDSTAT: LXI H,H84PT4 JMP US M m D RET UI: CALL US JZ UI UI1: XRA A PINX: ADD M PIN: STA PIN1+1 PIN1: IN 00H RET MUC: CPI 'a' RC CPI 'z'+1 RNC SUI 'a'-'A' RET PMSG: MOV A,M ORA A RZ MOV C,A PUSH H CALL CONOUT POP H INX H JMP PMSG HOUT: PUSH PSW RS1: DCR A STAX D PUSH B MVI C,NULL CALL UO POP B LPTOSB: XRA A RET DBDOS: LXI H,H84PT3 LXI D,DBDCTS LDAX D CPI 2 JNZ DBDOS1 CALL US JZ DBDOSB CALL UI1 ANI 07FH SUI 'F' MOD 32 JNZ DBDOSB STAX D MVI A,32 STA HSCNT DBDDOUT: CALL MDOS ORA A JZ MDOUT JMP UO MDOS: LXI H,H84PT4 LXI D,MDCTS JMP CRTOS1 TTYOS: LXI H,H84PT2 LXI D,TTYCTS JMP CRTOS1 CRTOS: LXI H,H84PT1 LXI D,CRTCTS LDA MODE RAR JC CRTOS3 CRTOS1: CALL UOS JZ CRTOSB LDAX D ORA A JN RC RRC RRC RRC CALL NIBBLE POP PSW NIBBLE: ANI 0FH CPI 10 JM NIBBL1 ADI 7 NIBBL1: ADI 30H MOV C,A JMP CONOUT BTMSG: DB CR,LF DB 'ERROR DURING WARM BOOT - PRESS ANY KEY',0 RDMSG: DB ' READ',0 WRMSG: DB ' WRITE',0 ERRMSG: DB ' ERROS1: CALL UOS JZ DBDOSB LDAX D ORA A JNZ DBDOS2 DCR A RET DBDOS2: INR A STAX D PUSH B MVI C,'C' MOD 32 CALL UO POP B BUSY: DBDOSB: XRA A RET DMYIN: MVI A,'Z'-40H DMYOUT: RET US: MVI A,5 CALL PINX ANI 1 RET UOS: MVI A,5 Z CRTOS2 DCR A RET CRTOS2: DCR A STAX D PUSH B MVI C,NULL CALL UO POP B CRTOSB: XRA A RET CRTOS3: IN H85CRT+1 RAR JNC CRTOSB LDAX D ORA A JNZ CRTOS4 DCR A RET CRTOS4: DCR A STAX D MVI A,NULL OUT H85CRT XRA A RET T H85CRT+1 MVI A,4EH OUT H85CRT+1 IF NOT INTINP MVI A,15H ENDIF IF INTINP MVI A,17H ENDIF OUT H85CRT+1 CBT1: LHLD CRTBAUD LDA H84PT1 CALL IN8250 IF INTINP LDA H84PT1 INR A STA OUTH84+1 MVI A,1 CALL OUTH84 ENDIF LHLD TDB 3,4,21,22,39,40 DB 5,6,23,24,41,42 DB 7,8,25,26,43,44 DB 9,10,27,28,45,46 DB 11,12,29,30,47,48 DB 13,14,31,32,49,50 DB 15,16,33,34,51,52 DB 17,18,35,36 ENDIF HSTACT DB 0 HSTWRT DB 0 UNACNT DB 0 HSTBUF EQU $ CBOOT: DI LXI SP,STACK . DW 16 DW 3 ENDIF IF H47T OR H67T DPB0SS: DW 26 DB 3,7,0 DW 242 DW 63 DB 192,0 DW 16 DW 2 DPB0SD: DW 26 DB 4,15,1 DW 246 DW 127 DB 0C0H,000H DW 32 DW 2 DPB0DS: DW 52 DB 4,15,0 DW 242 DW 127 DB 0C0H,000H DW 32 D TYBAUD LDA H84PT2 CALL IN8250 LHLD LPTBAUD LDA H84PT3 CALL IN8250 LHLD RDPBAUD LDA H84PT4 CALL IN8250 LXI H,SMSG0 CALL PMSG MVI A,(BIOSEND+255)/256 RAR RAR ANI 03FH JNZ CBOOT1 MVI A,64 CBOOT1: CALL TYDN LXI H,SMSG1 CALL LDA DEFIOB STA IOBYTE MVI A,MI$JMP LXI H,CLOCK STA CLKVEC SHLD CLKVEC+1 IF INTINP LXI H,CRTISR STA SERVEC SHLD SERVEC+1 ENDIF LXI H,CTLPRT MOV A,M OUT H88CTL INX H MOV A,M ORA A JZ CBT0 OUT H8CTL CBT0: LDA MODE ANW 2 DPB0DD: DW 52 DB 4,15,0 DW 493 DW 255 DB 0F0H,000H DW 64 DW 2 ENDIF IF H47T AND H47ED DPB0ES: DW 64 DB 4,15,0 DW 299 DW 127 DB 0C0H,000H DW 32 DW 2 DPB0ED: DW 64 DB 4,15,0 DW 607 DW 255 DB 0F0H,000H DW 64 DW 2  PMSG CBI: LDA BBDA STA CBIB LXI H,CBI1 PUSH H LDA LOGDSK MOV C,A LDA BBDF ANI DPETYPE IF H17T CPI DPEH17 JZ CBH17 ENDIF IF H37T CPI DPEH37 JZ CBH37 ENDIF IF H47T CPI DPEH47 JZ CBH47 ENDIF IF H67T CPI DPEH67H JZ.I 0FFH-MODEB0 STA MODE LDA H8FLAG ORA A JZ CBT1 LXI H,H84PT1 MOV A,M ADI 3 STA OUTH84+1 PUSH PSW MVI A,3 CALL OUTH84 POP PSW CALL PIN CPI 3 JZ CBT1 LDA MODE ORI MODEB0 STA MODE MVI A,15H OUT H85CRT+1 MVI A,40H OU ENDIF IF H17T XLT17: DB 1,2,9,10,17,18 DB 5,6,13,14 DB 3,4,11,12,19,20 DB 7,8,15,16 ENDIF IF H47T OR H67T XLT0S: DB 1,7,13,19,25 DB 5,11,17,23 DB 3,9,15,21 DB 2,8,14,20,26 DB 6,12,18,24 DB 4,10,16,22 XLT0D: DB 1,2,19,20,37,38 :P LXI H,H37ISR STA H37VEC SHLD H37VEC+1 LDA CBIA ANA A JZ RESH37 LXI H,DLYMO37 XRA A MOV M,A INX H MOV M,A MVI A,CONMO STA H37CTL RET ENDIF IF H47T CBH47: MVI B,H47ND MVI D,(DPE47$0-DPBASE)/DPEL CALL CBTFIL LDA CBIB RT2 AND (WRKVAR) DB '2' ENDIF IF (WRKVAR) ENDIF IF TOD AND (WRKVAR) DB 'T' ENDIF IF (WRKVAR) ENDIF IF EVENT AND (WRKVAR) DB 'E' ENDIF IF (WRKVAR) ENDIF IF INTINP AND (WRKVAR) DB 'I' ENDIF IF (WRKVAR) ENDIF IF BRKKEY H47T CPI DPEH47 JNZ CBH47 ENDIF IF H67T CPI DPEH67H JNZ CBH67 ENDIF POP H CBI2: XRA A STA LOGDSK LXI H,BIOS SHLD BBIOS EI MVI A,BT$CD JMP GOW SMSG0: DB CR,LF,LF,0 SMSG1: DB 'K HEATH/ZENITH CP/M 2.2X' DB VERS/10+'0',(VERS  e ENDIF IF H47CTL AND (H47T) %: H47CTL NE 0 ENDIF IF (H47T) STA H47INS1 STA H47OUTC1 INR A ENDIF IF H47CTL+1-H47DAT AND (H47T) %: H47DAT NE H47CTL+1 ENDIF IF (H47T) STA H47IND1 STA H47OUTD1 LDA CBIB CPI 7CH JNZ CBH472 MVI B\AND (WRKVAR) DB 'B' ENDIF IF (WRKVAR) ENDIF IF H37ED AND (WRKVAR) DB 'E3' ENDIF IF (WRKVAR) ENDIF IF H47ED AND (WRKVAR) DB 'E4' ENDIF IF (WRKVAR) ENDIF DB CR,LF,0 CBIA: DB 1 CBIB: DS 1 CBIC: DB 0 IF H17T CBH17: LDA CBIB MOD 10)+'0',LEVEL DB ' ',MONTH/10+'0',(MONTH MOD 10)+'0','/',DAY/10+'0' DB (DAY MOD 10)+'0','/',YEAR/10+'0',(YEAR MOD 10)+'0' DB CR,LF DB 'FOR' IF H17T DB ' H17' ENDIF IF H37T DB ' H37' ENDIF IF H47T DB ' H47' ENDIF IF H67T DB ,H47ND LXI D,DPEL LXI H,DPE47$0+DPEFLAG CBH471: MOV A,M ORI DPEP7C MOV M,A DAD D DCR B JNZ CBH471 CBH472: LDA CBIA ANA A CZ RESH47 RET ENDIF IF H67T CBH67: ENDIF IF H67PART2 AND (H67T) LDA BBDF ANI DPETYPF CPI DPEH67F 3 CPI 7CH RNZ MVI B,H17ND MVI D,(DPE0-DPBASE)/DPEL CALL CBTFIL MVI A,DFMO STA DEVCTL LDA CBIA ANA A CZ RESH17 RET ENDIF IF H37T CBH37: LDA CBIB CPI 78H RNZ MVI B,H37ND MVI D,(DPE37$0-DPBASE)/DPEL CALL CBTFIL MVI A,MI$JM ' H67' ENDIF DB ' DISKS' WRKVARX EQU PARTITN OR H67PART2 OR INTINP OR BRKKEY OR TOD OR EVENT WRKVAR EQU WRKVARX OR H37ED OR H47ED IF WRKVAR DB ' WITH OPTION(S) ' ENDIF IF PARTITN AND (WRKVAR) DB 'P' ENDIF IF (WRKVAR) ENDIF IF H67PA dF7: PUSH B PUSH D MOV A,C ADD D CALL GETDPEX SHLD CBTIA LXI D,DPEFLG2-DPEHTH DAD D MOV A,M ANI 0FFH-DPEIMG MOV M,A POP D POP B RET CBTFA DS 1 CBTIA DS 2 TYDN: MVI C,0 TYDN1: SUI 10 JC TYDN2 INR C JMP TYDN1 TYDN2: ADI  MVI A,1 CBTF0: STA CBTFA MOV E,B CBTF1: MOV A,C CMP B JC CBTF2 SUB B CBTF2: ADD D PUSH B MOV B,A LDA CBIC ADD A ADD A ADD A ADD A ADD B MOV B,A PUSH D CALL GETDPEX XCHG LXI H,DPEFLG2-DPEHTH DAD D MOV A,M ANI DP(HD$DAT+1-HD$CON) AND (H67T) %: (HD$STA NE (HD$DAT+1)) OR (HD$CON NE (HD$DAT+1)) ENDIF IF (H67T) STA H67INS1 STA H67OUTC1 LDA CBIB CPI 7CH JNZ CBH672 MVI B,H67ND LXI D,DPEL LXI H,DPE67$0+DPEFLAG CBH671: MOV A,M ORI DPEP7C MOV M,A  10 PUSH PSW MOV A,C ADI 030H MOV C,A CALL CONOUT POP PSW ADI 030H MOV C,A JMP CONOUT IN8250: MOV B,A XCHG LXI H,OUTH84+1 MVI A,3 ADD B MOV C,A MOV M,A MVI A,83H CALL OUTH84 INR M MVI A,0FH CALL OUTH84 MOV M,B MOEIMG LDA CBTFA JNZ CBTF3 ANA A JNZ CBTF4 PUSH H LHLD CBTIA MOV A,H ORA L POP H JNZ CBTF2A XCHG SHLD CBTIA XCHG CBTF2A: INX H IF DPEFLG2+1-DPELUN %: (DPEFLG2+1) NE DPELUN ENDIF MOV M,B CALL CBTF6 JMP CBTF4 CBTF3: ANA A DAD D DCR B JNZ CBH671 CBH672: LDA CBIA ANA A JZ RESH67 ENDIF IF PARTITN AND (H67T) LDA BBDF ANI DPETYPF CPI DPEH67H RNZ LDA DPE67$0+DPEFLAG ORI DPEASGN STA DPE67$0+DPEFLAG LHLD BBP SHLD DPE67$0+DPETRK LHLD BUPB SHLD DP V A,E CALL OUTH84 MOV A,D ANI 0FH INR M CALL OUTH84 MOV M,C CPI B110 SHR 8 MVI A,3 JC IN821 ORI 4 IN821: CALL OUTH84 DCR M DCR M XRA A CALL OUTH84 XCHG DAD H DAD H DAD H DAD H LOOP1: DCX H MOV A,L ORA H JNZ LOO JZ CBTF4 PUSH H CALL CBTF6 LHLD CBTIA MVI C,DPEHL CALL MOVEIT POP H MOV A,M ORI DPEIMG MOV M,A CBTF4: POP D POP B INR C DCR E JNZ CBTF1 RET CBTF6: LDA CBIC LXI H,BDMAP CALL DADA MOV M,B LXI H,CBIC INR M RET CBTE67$0+DPEUPB ENDIF IF (H67T) RET ENDIF CBTFIL: LXI H,0 SHLD CBTIA CBTFIL1: PUSH B PUSH D LDA CBIA ANA A CNZ CBTF7 XRA A CALL CBTF0 POP D POP B LHLD CBTIA MOV A,H ORA L JNZ CBTFIL2 CALL CBTF7 JMP CBTFIL1 CBTFIL2: }v67$0 DS 256 ALV67$1 DS 77 CSV67$1 DS 64 ENDIF IF H67PART2 AND (H67T) DPB67$2 DS DPBL ALV67$2 DS 256 ENDIF IF (H67T) ENDIF DPBX: DS 2 HSTDPB: DS 2 DMAB: DS 2 SPT: DS 1 XLTW: DS 2 SPT1: DS 1 XLTW1: DS 2 TRACK: DS 1 SECTOR: DS 1 SIDE: vDS 1 RWOP DS 1 LSP: DS 1 ERRCNT: DS 1 ERRTYP: DS 1 TRKPT: DS 2 SEKDSK: DS 1 SEKTRK: DS 2 SEKSEC: DS 1 HSTDSK: DS 1 HSTTRK: DS 2 HSTSEC: DS 1 SEKHST: DS 1 UNADSK: DS 1 UNATRK: DS 2 UNASI: DS 1 ERFLAG: DS 1 RSFLAG: DS 1 READOP: DS 1 WRTYPEo CAN ALSO OVERLAY ; COLD BOOT CODE. ENDIF IF NOT ((CLEN-HSTSIZ) SHR 15) ORG HSTBUF+HSTSIZ ENDIF ; ; **} DIRBUF: DS 128 IF H17T ALV0: DS 12 CSV0: DS 16 ALV1: DS 12 CSV1: DS 16 ALV2: DS 12 CSV2: DS 16 ENDIF IF H37T D 1 2 ͠ ͻ ͵ ͠ ͖ 8{ Ăy0 2͵ ͖ Gͻ ͋ ͖ 1ͻ ͯ 2ͯ ͖ (Ăy 2͵ ͋ ͖ ͖ Ăy0 ͖ 2ͯ 1 'd ! ^#V#*0}o|g*  ":D x=D y: DS 1 DMAADR: DS 2 IF (($-HSTBUF)-CLEN) SHR 15 ORG HSTBUF+CLEN ENDIF HSAV: DS 2 RETSAV: DS 2 OLDSP: DS 2 IF INTINP CRTBUF: DS 40 CRTBND EQU $ CRTLEN EQU CRTBND-CRTBUF DS 16 LCLSTK EQU $ ENDIF DS 32 STACK DS 0 BIOSEND EQU $ END PB37$0 DS DPBL ALV37$0 DS 50 CSV37$0 DS 64 DPB37$1 DS DPBL ALV37$1 DS 50 CSV37$1 DS 64 DPB37$2 DS DPBL ALV37$2 DS 50 CSV37$2 DS 64 ENDIF IF H47T ALV47$0 DS 77 CSV47$0 DS 64 ALV47$1 DS 77 CSV47$1 DS 64 ENDIF IF H67T DPB67$0 DS DPBL ALV $1 2 ͠ ͻ ͵ ͠ ͖ 8{ Ăy0 2͵ ͖ Gͻ ͋ ͖ 1ͻ ͯ 2ͯ ͖ (Ăy1*"|2*DM!>ƀî~# x¤! *f.|g x-¼#ø*#*0}o|g*  ":D x=D y v PREBIOS SYS BIOS SELECTION MENU A -- H17 ONLY B -- H37 ONLY C -- H47 ONLY D -- H67 ONLY E -- H17 AND H37 F -- H17 AND H47 G -- H17 AND H67 H -- H37 AND H47 I -- H37 AND H67 J -- H47 AND H67 ENTER SELECTION? $ ERROR IN a !KÏD!WÏE.!3!?ÏFB!3!KÏGV!3!WÏHj!?!KÏI~!?!WÏJ»!K!W>0ZU{{m2vZʹU>1ZUm3U{ vg=EXECUTION OF MAKEBIOS $ MAKEBIOS FUNCTION COMPLETE $A --! H37 F -- H17 AND H47 G -- H17 AND H67 H -- H37 AND H47 I -- H37 AND H67 J -- H47 AND H67 ENTER SELECTION? $ ERROR IN qʹU!\~#{U:7:*"{ m 1 *:"ZЇO! [ ~#’*c"8|g}o"cZ! q76061<7ȯ! qѧ< v<$2MAKEBIOS $21 $1 ASM $2BIOS.AAZ REN $2BIOS.HX0=BIOS.HEX $2MAKEBIOS $22 $1 ASM $2BIOS.AAZ REN $2BIOS.HX1=BIOS.HEX $2PREL $2BIOS $1 $2MAKEBIOS $23 $1 1f7*8"cZ!w ORG 000H H17T EQU 0 H37T EQU 0 H47T EQU 0 H67T EQU 0 BIOS ASM BIOS SYS $$$ SUB BIOS HX0 BIOS HX1  ov_WxGyO!x!y HX1 pktff  Phase error$Cannot open input file$Cannot create output file$~#±"$*"**͢^:zvwzwz+wz*N#F#^#V{_zW8b dzI+++4E#4]V+^#r+s+r+s5zHex files not monotonic$*͢0 ڋW͢0 ڜea"$56###**'DM+p+q+6ì#^#Vr+s7͢"H$5qWxGyO!x!y#xͺV:n:oͺpktff  HX0 pc!pV!V!V!²!p!ýV"n!!pW! v94&###*H&J *H'DM+p+q+6#^#Vr+sVWrite error$ 6666#660 ڋW͢0 ڜea"$56###**'DM+p+q+6ì#^#Vr+s7͢"H$5WxGyO!x!y HX1 5pktff  HX0 9c!pV!V!V!²!p! PRE pW! v v vvv vvvvv Yv vvv vvvvv v vvv vvvvv Kv vvv vvvvv " v v v v v v v v v !!v! v!v!v! v!v!v!v!v "0"v" v"v"v" v"v"v"v"v ##v# v#v#v# v#v#v#v#v $$v$ v$v$v$ v$v$v$v$v %%v% v%v%v% v%v%v%v%v &&v& v&v&v& v&v&v&v&v ''v' v'v'v' v'v'v'v'v'