.TITLE "" .SBTTL 'VERSION III.7 10-30-83' .PHEX .XLINK .PABS ; ***************************************** ; * COMPUTIME FORMAT PROGRAM * ; * FOR USE WITH COMPUTIME UFDC I * ; * WRITTEN BY R. D. CATILLER * ; * COPYRIGHT 1982 (C) COMPUTIME & GSR * ; ***************************************** ; ; PATCH LOG ;------------------------------------------ ; ;FMTIII.4 - 11-3-82 ; FIRST REALEASE ; ;FMTIII.5 - 2-6-83 ; ALLOWS FORMATING DISK WITH FIRST ; PHYSICAL SECTOR ON THE TRACK BEING ; ADDRESS 0, (NORMALLY SECTOR 1 IS ; THE FIRST SECTOR ON A TRACK). THIS ; ALLOWS FORMATTING DISKS FOR THE XEROX ; 820 AND THE KAYPRO II SYSTEMS. ; ADDED THE 5 1/4" SINGLE AND DOUBLE ; DENSITY MEDIA INTERCHANGE FORMATS. ; ;FMTIII.6 - 7-4-83 ; FIXED BUG IN VERIFY ROUTINE. IT WOULD ; NOT FIND ERRORS AND VERIFIED ALL ; DISKS AS BEING GOOD, EVEN IF THEY WERE ; BLANK. ; ADDED OPTION BITS 4 AND 5 TO THE CONTROL ; BYTE IN THE FORMAT TABLES. BIT FOUR ; WILL ALLOW THE DISK DATA FIELDS TO BE ; INVERTED. BIT 5 WILL ALLOW A DOUBLE SIDE ; DISK TO BE ACCESSED ON ALL OF SIDE 0 ; FIRST AND THEN ALL OF SIDE 1. THE ; DISK IS NORMALLY ACCESSED AS CYLINDERS ; (SIDE 0 AND SIDE 1 FORM ONE LONG TRACK). ; THESE FEATURES REQUIRE VERSION III.7 ; OF THE COMPUTIME & GSR MONITOR. IF YOUR SYSTEM ; CONTAINS AN EARLIER VERSION OF THE MONITOR ; YOU WILL BE UNABLE TO USE THESE FEATURES. ; THE NEW OPTION BITS AND FEATURES ALLOW ; USE OF DISKS FROM THE SUPERBRAIN SYSTEM. ; THE D COMMAND HAS BEEN ADDED TO ALLOW A ; DISK TABLE TO BE LOADED FOR A DISK THAT ; DOES NOT CONTAIN ONE. THE DISK WILL BE ; LOGGED-ON AND MAY BE ACCESSED USING CPM. ; ;FMTIII.7 10/30/83 ; GSR COMPUTERS, 60-10 69TH ST, MASPETH, NY 11378 ; (212)476-2091 - EXPANDED FORMAT MENU TO 6 ; SCREENS FOR FUTURE EXPANSION AND ALSO ADDED ; MANY NEW FORMATS TO THIS PROGRAM. ADDITIONALLY, ; ADDED ON-LINE HELP SCREENS TO ASSIST NEW USERS ; OR USERS WHO FORGET THE USE OF SOME COMMANDS. ; ; LUNIT = 0F4A0H UTABLE = 0F080H ;USER DISK TABLE UFLAG = 0F480H ;USER FLAG CR = 0DH ;ASCII CARRIAGE RET LF = 0AH ;ASCII LINE FEED DS = 24H ;ASCII DOLLAR SIGN DDDS = TBLSTR+18 ;DBL DENS & DBL SD SEL LSTTRK = TBLSTR+17 ;LAST TRACK DBUFF = 0080H ;DEFAULT DISK BUFFER FCBL = 005CH ;FILE CONTROL BLOCK FCBLCR = FCBL+32 ;CURRENT RECORD BDOS = 0005H ;BDOS ENTRY POINT CLRSKN = 26 ;CLEAR SCREEN BYTE ; ; ; DISK DEFINES ; VERS = 22 ;CP/M VERSION NUMBER MSIZE = 60 ;CP/M MEMORY SIZE BIAS = (MSIZE-20)*1024 CCP = 3400H+BIAS ;BASE OF CCP BIOS = CCP+1600H ;BASE OF BIOS ; ; ;DISK I/O PORTS ; DSTAT = 9CH ;DISK STATUS PORT DCMMD = DSTAT ;DISK COMMAND PORT DTRCK = DSTAT+1 ;DISK TRACK PORT DSCTR = DSTAT+2 ;DISK SECTOR PORT DDATA = DSTAT+3 ;DISK DATA PORT DFLAG = 9BH ;STATUS REGISTER 1 DCNTL = DFLAG ;CONTROL REGISTER 1 ; ; ; ; PROGRAM CODE BEGINS: ; .LOC 0100H ; ; SSPD STKPTR ;SAVE FOR RETURN XRA A ;RESET FLAGS STA CPMFLG STA RFLAG STA GETFLG LXI X,TBLSTR ;POINT TO FORMAT TABLES HELLO: LXI SP,STACK + 256 ;RESTORE STACK CALL MESG ;SAY HELLO CALL CI ;GET INPUT STA CMDSTR ;SAVE IT CPI 'D' ;TEST FOR D JZ DESIGN ;DESIGNATE DISK TABLES CPI 'W' ;TEST FOR W JZ WTBLS ;WRITE TABLES TO DISK CPI 'F' ;TEST FOR F JZ FORMAT ;FORMAT ENTIRE DISK CPI 'T' ;TEST FOR T JZ TRK0FM ;FORMAT TRK 0 ONLY CPI 'R' ;TEST FOR R JZ TBOOT ;READ CPM IMAGE CPI 'C' ;TEST FOR C JZ CBOOT ;WRITE CPM TO DISK CPI 'G' ;TEST FOR G JZ GENRAT ;GENERATE SYSTEM DISK CPI 'P' ;TEST FOR P JZ PREVCD ;FMT WITH PREV CODE CPI 'V' ;TEST FOR V JZ VERIFY ;VERIFY ENTIRE DISK CPI 'A' ;TEST FOR A JZ GETCPM ;READ CPM FILE CPI '?' JZ HELP CPI 'X' ;TEST FOR X JNZ HELLO ;INPUT ERROR MVI A,0FFH STA LUNIT LDA DISKNO MOV E,A MVI C,0EH CALL BDOS LSPD STKPTR ;RETURN TO CCP RET WAITKY: LXI D,MSG9 ;WAIT MESSAGE CALL MESG1 CALL CI ;GET INPUT CPI 0DH ;TEST FOR CR JNZ WAITKY ;NOT CR JMP HELLO ; DESIGN: CALL GETCD ;GET PARAMETERS LXI H,TBLSTR ;MOVE THE TABLE LXI D,UTABLE LXI B,128 LDIR MVI A,0FFH ;SET USER FLAG STA UFLAG LDA SELCD ;LOG-ON THE DISK ANI 3 MOV E,A MVI C,0EH CALL BDOS JMP HELLO ; VERIFY: CALL SELDRV ;SELECT DRIVE CALL TBLRD ;READ TABLES CALL TBLSTP LXI X,TBLSTR XRA A ;TRACK = 0 STA TRACK MVI D,1 ;1 128 BYTE SEC MVI A,26 ;8" TRK 0 SECS STA BTSEC ;# OF 128 BYTE SECS STA SECCNT IN DFLAG ;8" OR 5 1/4" ANI 4 JZ VER2 ;8" MVI A,18 ;5 1/4" TRK 0 SECS STA BTSEC ;# OF 128 BYTE SECS STA SECCNT VER2: MVI A,1 ;FIRST SEC SD 0 VER1: STA SECTOR ;SET SECTOR LXI H,BUFADR ;SET DMA ADR SHLD DMAAD MVI A,1 ;SET FLAG FOR READ STA RWFLG CALL WBOOT8 ;READ TRACK MOV L,15(X) ;GET BYTES PER SEC MOV H,16(X) DAD H ;ADJUST VALUE MOV D,H ;# OF 128 BYTE SECS MOV A,19(X) ;PHYS SECS PER TRK STA SECCNT MOV A,18(X) ;TEST FOR DBL SIDE ANI 2 JZ VER4 ;SINGLE SIDE LDA SECTOR ;TEST IF SD 1 DONE ANI 80H JNZ VER4 ;SIDE 1 DONE MOV A,0(X) ;# 128 BYTE SECS/TRK SRLR A ;DIVIDE BY 2 STA BTSEC MVI A,81H ;SELECT SIDE 1 BIT 2,18(X) ;1ST SEC = 0 ? JZ VER1 ;1ST SEC = 1 DCR A ;ADJUST IT JMP VER1 ;READ SOME MORE VER4: MOV A,0(X) ;# 128 BYTE SECS/TRK STA BTSEC MOV A,18(X) ;TEST FOR DBL SIDE ANI 2 JZ VER3 ;SINGLE SIDE MOV A,0(X) ;# 128 BYTE SECS/TRK SRLR A ;DIVIDE BY 2 STA BTSEC VER3: MVI B,58H ;STEP IN 1 TRK CALL EOJA LXI H,TRACK ;TRACK + 1 INR M LDA LSTTRK ;TEST IF LAST TRK CMP M JZ HELLO ;DONE MVI A,1 ;SET SEC = 1 BIT 2,18(X) ;1ST SEC = 0 ? JZ VER1 ;1ST SEC = 1 DCR A ;ADJUST IT JMP VER1 ; GETCD: MVI A,1 ;SET GET CODE FLAG STA GETFLG ; ;MENU #1 ; MENU1: LXI D,MSG1 ;SIGN ON CALL MESG1 CALL CI ;GET INPUT STA FMTSEL CPI '0' ;TEST SELECT VALUE JNZ TST1 LXI H,DP5S0 JMP MVTBL TST1: CPI '1' JNZ TST2 LXI H,DP5S1 JMP MVTBL TST2: CPI '2' JNZ TST3 LXI H,DP5S2 JMP MVTBL TST3: CPI '3' JNZ TST4 LXI H,DP5S3 JMP MVTBL TST4: CPI '4' JNZ TST5 LXI H,DP8S4 JMP MVTBL TST5: CPI '5' JNZ TST6 LXI H,DP8S5 JMP MVTBL TST6: CPI '6' JNZ TST7 LXI H,DP8D6 JMP MVTBL TST7: CPI '7' JNZ TST8 LXI H,DP5D7 JMP MVTBL TST8: CPI '8' JNZ TST9 LXI H,DP8D8 JMP MVTBL TST9: CPI '9' JNZ TSTA LXI H,DP8D9 JMP MVTBL TSTA: CPI 'B' JZ MENU2 CPI 'C' JZ MENU3 CPI 'D' JZ MENUD CPI 'E' JZ MENUE CPI 'F' JZ MENUF CPI 'X' JZ HELLO JMP MENU1 ; ;MENU #2 ; MENU2: LXI D,MSGC CALL MESG1 CALL CI ;GET INPUT STA FMTSEL CPI '0' ;TEST SELECT VALUE JNZ TSA1 LXI H,A0DPB JMP MVTBL TSA1: CPI '1' JNZ TSA2 LXI H,A1DPB JMP MVTBL TSA2: CPI '2' JNZ TSA3 LXI H,A2DPB JMP MVTBL TSA3: CPI '3' JNZ TSA4 LXI H,A3DPB JMP MVTBL TSA4: CPI '4' JNZ TSA5 LXI H,A4DPB JMP MVTBL TSA5: CPI '5' JNZ TSA6 LXI H,A5DPB JMP MVTBL TSA6: CPI '6' JNZ TSA7 LXI H,A6DPB JMP MVTBL TSA7: CPI '7' JNZ TSA8 LXI H,A7DPB JMP MVTBL TSA8: CPI '8' JNZ TSA9 LXI H,A8DPB JMP MVTBL TSA9: CPI '9' JNZ TSAA LXI H,A9DPB JMP MVTBL TSAA: CPI 'A' JZ MENU1 CPI 'C' JZ MENU3 CPI 'D' JZ MENUD CPI 'E' JZ MENUE CPI 'F' JZ MENUF CPI 'X' JZ HELLO JMP MENU2 ; ;MENU #3 ; MENU3: LXI D,MSGD CALL MESG1 CALL CI ;GET INPUT STA FMTSEL CPI '0' ;TEST SELECT VALUE JNZ TSB1 LXI H,B0DPB JMP MVTBL TSB1: CPI '1' JNZ TSB2 LXI H,B1DPB JMP MVTBL TSB2: CPI '2' JNZ TSB3 LXI H,B2DPB JMP MVTBL TSB3: CPI '3' JNZ TSB4 LXI H,B3DPB JMP MVTBL TSB4: CPI '4' JNZ TSB5 LXI H,B4DPB JMP MVTBL TSB5: CPI '5' JNZ TSB6 LXI H,B5DPB JMP MVTBL TSB6: CPI '6' JNZ TSB7 LXI H,B6DPB JMP MVTBL TSB7: CPI '7' JNZ TSB8 LXI H,B7DPB JMP MVTBL TSB8: CPI '8' JNZ TSB9 LXI H,B8DPB JMP MVTBL TSB9: CPI '9' JNZ TSBA LXI H,B9DPB JMP MVTBL TSBA: CPI 'A' JZ MENU1 CPI 'B' JZ MENU2 CPI 'D' JZ MENUD CPI 'E' JZ MENUE CPI 'F' JZ MENUF CPI 'X' JZ HELLO JMP MENU3 ; ; ; ; ; MENU #D ; ; MENUD: LXI D,MESGD ;DONT FORGET TO ADD MENU CALL MESG1 CALL CI STA FMTSEL CPI '0' JNZ TSD1 LXI H,D0DPB JMP MVTBL TSD1: CPI '1' JNZ TSD2 LXI H,D1DPB JMP MVTBL TSD2: CPI '2' JNZ TSD3 LXI H,D2DPB JMP MVTBL TSD3: CPI '3' JNZ TSD4 LXI H,D3DPB JMP MVTBL TSD4: CPI '4' JNZ TSD5 LXI H,D4DPB JMP MVTBL TSD5: CPI '5' JNZ TSD6 LXI H,D5DPB JMP MVTBL TSD6: CPI '6' JNZ TSD7 LXI H,D6DPB JMP MVTBL TSD7: CPI '7' JNZ TSD8 LXI H,D7DPB JMP MVTBL TSD8: CPI '8' JNZ TSD9 LXI H,D8DPB JMP MVTBL TSD9: CPI '9' JNZ TSDA LXI H,D9DPB JMP MVTBL TSDA: CPI 'A' JZ MENU1 CPI 'B' JZ MENU2 CPI 'C' JZ MENU3 CPI 'E' JZ MENUE CPI 'F' JZ MENUF CPI 'X' JZ HELLO JMP MENUD ; ; ; ; ; MENU #E ; ; MENUE: LXI D,MESGE ;DONT FORGET TO ADD MENU CALL MESG1 CALL CI STA FMTSEL CPI '0' JNZ TSE1 LXI H,E0DPB JMP MVTBL TSE1: CPI '1' JNZ TSE2 LXI H,E1DPB JMP MVTBL TSE2: CPI '2' JNZ TSE3 LXI H,E2DPB JMP MVTBL TSE3: CPI '3' JNZ TSE4 LXI H,E3DPB JMP MVTBL TSE4: CPI '4' JNZ TSE5 LXI H,E4DPB JMP MVTBL TSE5: CPI '5' JNZ TSE6 LXI H,E5DPB JMP MVTBL TSE6: CPI '6' JNZ TSE7 LXI H,E6DPB JMP MVTBL TSE7: CPI '7' JNZ TSE8 LXI H,E7DPB JMP MVTBL TSE8: CPI '8' JNZ TSE9 LXI H,E8DPB JMP MVTBL TSE9: CPI '9' JNZ TSEA LXI H,E9DPB JMP MVTBL TSEA: CPI 'A' JZ MENU1 CPI 'B' JZ MENU2 CPI 'C' JZ MENU3 CPI 'D' JZ MENUD CPI 'F' JZ MENUF CPI 'X' JZ HELLO JMP MENUE ; ; ; ; ; MENU #F ; ; MENUF: LXI D,MESGF ;DONT FORGET TO ADD MENU CALL MESG1 CALL CI STA FMTSEL CPI '0' JNZ TSF1 LXI H,F0DPB JMP MVTBL TSF1: CPI '1' JNZ TSF2 LXI H,F1DPB JMP MVTBL TSF2: CPI '2' JNZ TSF3 LXI H,F2DPB JMP MVTBL TSF3: CPI '3' JNZ TSF4 LXI H,F3DPB JMP MVTBL TSF4: CPI '4' JNZ TSF5 LXI H,F4DPB JMP MVTBL TSF5: CPI '5' JNZ TSF6 LXI H,F5DPB JMP MVTBL TSF6: CPI '6' JNZ TSF7 LXI H,F6DPB JMP MVTBL TSF7: CPI '7' JNZ TSF8 LXI H,F7DPB JMP MVTBL TSF8: CPI '8' JNZ TSF9 LXI H,F8DPB JMP MVTBL TSF9: CPI '9' JNZ TSFA LXI H,F9DPB JMP MVTBL TSFA: CPI 'A' JZ MENU1 CPI 'B' JZ MENU2 CPI 'C' JZ MENU3 CPI 'D' JZ MENUD CPI 'E' JZ MENUE CPI 'X' JZ HELLO JMP MENUF ; ; ; ; ; THIS IS THE ONLINE HELP FACILITY ; FOR THE GSR/COMPUTIME FORMAT PROGRAM ; ; MAIN MENU SCREEN ; HELP: LXI D,HLP ;SIGN ON HELP SCREEN CALL MESG1 ;PRINT IT CALL CI ;WAIT FOR INPUT CPI 'A' ;HLP ON READ CP/M FROM FILE JZ HELPA ;PRINT IT CPI 'C' ;HLP ON COPY JZ HELPC CPI 'D' ;HELP ON DESIGNATE JZ HELPD CPI 'F' ;HELP ON FORMAT JZ HELPF CPI 'G' ;HELP ON G COMMAND JZ HELPG CPI 'P' ;HELP ON P COMMAND JZ HELPP CPI 'R' ;HELP ON R COMMAND JZ HELPR CPI 'T' ;HELP ON T COMMAND JZ HELPT CPI 'V' ;HELP ON VERIFY JZ HELPV CPI 'W' ;HELP ON W COMMAND JZ HELPW CPI 'X' ;GO BACK TO MAIN MENU JZ HELLO CPI '?' ;GENERAL INFO JZ HELP JMP HELP ; ; ; ; ; ; THIS IS THE ONLINE HELP FACILITY ; FOR THE GSR/COMPUTIME FORMAT PROGRAM ; ; A = READ CP/M IMAGE FROM FILE ; HELPA: LXI D,HLPMSA ;SIGN ON HELP SCREEN CALL MESG1 ;PRINT IT CALL CI ;WAIT FOR INPUT CPI 'A' ;HLP ON READ CP/M FROM FILE JZ HELPA ;PRINT IT CPI 'C' ;HLP ON COPY JZ HELPC CPI 'D' ;HELP ON DESIGNATE JZ HELPD CPI 'F' ;HELP ON FORMAT JZ HELPF CPI 'G' ;HELP ON G COMMAND JZ HELPG CPI 'P' ;HELP ON P COMMAND JZ HELPP CPI 'R' ;HELP ON R COMMAND JZ HELPR CPI 'T' ;HELP ON T COMMAND JZ HELPT CPI 'V' ;HELP ON VERIFY JZ HELPV CPI 'W' ;HELP ON W COMMAND JZ HELPW CPI 'X' ;GO BACK TO MAIN MENU JZ HELLO CPI '?' ;GENERAL INFO JZ HELP JMP HELPA ; ; ; ; ; ; THIS IS THE ONLINE HELP FACILITY ; FOR THE GSR/COMPUTIME FORMAT PROGRAM ; ; C = COPY CP/M TO DISK ; HELPC: LXI D,HLPMSC ;SIGN ON HELP SCREEN CALL MESG1 ;PRINT IT CALL CI ;WAIT FOR INPUT CPI 'A' ;HLP ON READ CP/M FROM FILE JZ HELPA ;PRINT IT CPI 'C' ;HLP ON COPY JZ HELPC CPI 'D' ;HELP ON DESIGNATE JZ HELPD CPI 'F' ;HELP ON FORMAT JZ HELPF CPI 'G' ;HELP ON G COMMAND JZ HELPG CPI 'P' ;HELP ON P COMMAND JZ HELPP CPI 'R' ;HELP ON R COMMAND JZ HELPR CPI 'T' ;HELP ON T COMMAND JZ HELPT CPI 'V' ;HELP ON VERIFY JZ HELPV CPI 'W' ;HELP ON W COMMAND JZ HELPW CPI 'X' ;GO BACK TO MAIN MENU JZ HELLO CPI '?' ;GENERAL INFO JZ HELP JMP HELPC ; ; ; ; ; ; THIS IS THE ONLINE HELP FACILITY ; FOR THE GSR/COMPUTIME FORMAT PROGRAM ; ; D = DESIGNATE TABLE FOR USE ; HELPD: LXI D,HLPMSD ;SIGN ON HELP SCREEN CALL MESG1 ;PRINT IT CALL CI ;WAIT FOR INPUT CPI 'A' ;HLP ON READ CP/M FROM FILE JZ HELPA ;PRINT IT CPI 'C' ;HLP ON COPY JZ HELPC CPI 'D' ;HELP ON DESIGNATE JZ HELPD CPI 'F' ;HELP ON FORMAT JZ HELPF CPI 'G' ;HELP ON G COMMAND JZ HELPG CPI 'P' ;HELP ON P COMMAND JZ HELPP CPI 'R' ;HELP ON R COMMAND JZ HELPR CPI 'T' ;HELP ON T COMMAND JZ HELPT CPI 'V' ;HELP ON VERIFY JZ HELPV CPI 'W' ;HELP ON W COMMAND JZ HELPW CPI 'X' ;GO BACK TO MAIN MENU JZ HELLO CPI '?' ;GENERAL INFO JZ HELP JMP HELPD ; ; ; ; ; ; ; THIS IS THE ONLINE HELP FACILITY ; FOR THE GSR/COMPUTIME FORMAT PROGRAM ; ; F = FORMAT ALL TRACKS OF DISK ; HELPF: LXI D,HLPMSF ;SIGN ON HELP SCREEN CALL MESG1 ;PRINT IT CALL CI ;WAIT FOR INPUT CPI 'A' ;HLP ON READ CP/M FROM FILE JZ HELPA ;PRINT IT CPI 'C' ;HLP ON COPY JZ HELPC CPI 'D' ;HELP ON DESIGNATE JZ HELPD CPI 'F' ;HELP ON FORMAT JZ HELPF CPI 'G' ;HELP ON G COMMAND JZ HELPG CPI 'P' ;HELP ON P COMMAND JZ HELPP CPI 'R' ;HELP ON R COMMAND JZ HELPR CPI 'T' ;HELP ON T COMMAND JZ HELPT CPI 'V' ;HELP ON VERIFY JZ HELPV CPI 'W' ;HELP ON W COMMAND JZ HELPW CPI 'X' ;GO BACK TO MAIN MENU JZ HELLO CPI '?' ;GENERAL INFO JZ HELP JMP HELPF ; ; ; ; ; ; ; THIS IS THE ONLINE HELP FACILITY ; FOR THE GSR/COMPUTIME FORMAT PROGRAM ; ; G = FORMAT AND WRITE CP/M TO DISK ; HELPG: LXI D,HLPMSG ;SIGN ON HELP SCREEN CALL MESG1 ;PRINT IT CALL CI ;WAIT FOR INPUT CPI 'A' ;HLP ON READ CP/M FROM FILE JZ HELPA ;PRINT IT CPI 'C' ;HLP ON COPY JZ HELPC CPI 'D' ;HELP ON DESIGNATE JZ HELPD CPI 'F' ;HELP ON FORMAT JZ HELPF CPI 'G' ;HELP ON G COMMAND JZ HELPG CPI 'P' ;HELP ON P COMMAND JZ HELPP CPI 'R' ;HELP ON R COMMAND JZ HELPR CPI 'T' ;HELP ON T COMMAND JZ HELPT CPI 'V' ;HELP ON VERIFY JZ HELPV CPI 'W' ;HELP ON W COMMAND JZ HELPW CPI 'X' ;GO BACK TO MAIN MENU JZ HELLO CPI '?' ;GENERAL INFO JZ HELP JMP HELPG ; ; ; ; ; ; THIS IS THE ONLINE HELP FACILITY ; FOR THE GSR/COMPUTIME FORMAT PROGRAM ; ; P = FORMAT USING PREVIOUSLY DEFINED PARAMETERS ; HELPP: LXI D,HLPMSP ;SIGN ON HELP SCREEN CALL MESG1 ;PRINT IT CALL CI ;WAIT FOR INPUT CPI 'A' ;HLP ON READ CP/M FROM FILE JZ HELPA ;PRINT IT CPI 'C' ;HLP ON COPY JZ HELPC CPI 'D' ;HELP ON DESIGNATE JZ HELPD CPI 'F' ;HELP ON FORMAT JZ HELPF CPI 'G' ;HELP ON G COMMAND JZ HELPG CPI 'P' ;HELP ON P COMMAND JZ HELPP CPI 'R' ;HELP ON R COMMAND JZ HELPR CPI 'T' ;HELP ON T COMMAND JZ HELPT CPI 'V' ;HELP ON VERIFY JZ HELPV CPI 'W' ;HELP ON W COMMAND JZ HELPW CPI 'X' ;GO BACK TO MAIN MENU JZ HELLO CPI '?' ;GENERAL INFO JZ HELP JMP HELPP ; ; ; ; ; ; THIS IS THE ONLINE HELP FACILITY ; FOR THE GSR/COMPUTIME FORMAT PROGRAM ; ; R = READ CP/M FROM DISK ; HELPR: LXI D,HLPMSR ;SIGN ON HELP SCREEN CALL MESG1 ;PRINT IT CALL CI ;WAIT FOR INPUT CPI 'A' ;HLP ON READ CP/M FROM FILE JZ HELPA ;PRINT IT CPI 'C' ;HLP ON COPY JZ HELPC CPI 'D' ;HELP ON DESIGNATE JZ HELPD CPI 'F' ;HELP ON FORMAT JZ HELPF CPI 'G' ;HELP ON G COMMAND JZ HELPG CPI 'P' ;HELP ON P COMMAND JZ HELPP CPI 'R' ;HELP ON R COMMAND JZ HELPR CPI 'T' ;HELP ON T COMMAND JZ HELPT CPI 'V' ;HELP ON VERIFY JZ HELPV CPI 'W' ;HELP ON W COMMAND JZ HELPW CPI 'X' ;GO BACK TO MAIN MENU JZ HELLO CPI '?' ;GENERAL INFO JZ HELP JMP HELPR ; ; ; ; ; ; THIS IS THE ONLINE HELP FACILITY ; FOR THE GSR/COMPUTIME FORMAT PROGRAM ; ; T = FORMAT TRACK 0 OF DISK ; HELPT: LXI D,HLPMST ;SIGN ON HELP SCREEN CALL MESG1 ;PRINT IT CALL CI ;WAIT FOR INPUT CPI 'A' ;HLP ON READ CP/M FROM FILE JZ HELPA ;PRINT IT CPI 'C' ;HLP ON COPY JZ HELPC CPI 'D' ;HELP ON DESIGNATE JZ HELPD CPI 'F' ;HELP ON FORMAT JZ HELPF CPI 'G' ;HELP ON G COMMAND JZ HELPG CPI 'P' ;HELP ON P COMMAND JZ HELPP CPI 'R' ;HELP ON R COMMAND JZ HELPR CPI 'T' ;HELP ON T COMMAND JZ HELPT CPI 'V' ;HELP ON VERIFY JZ HELPV CPI 'W' ;HELP ON W COMMAND JZ HELPW CPI 'X' ;GO BACK TO MAIN MENU JZ HELLO CPI '?' ;GENERAL INFO JZ HELP JMP HELPT ; ; ; ; ; ; THIS IS THE ONLINE HELP FACILITY ; FOR THE GSR/COMPUTIME FORMAT PROGRAM ; ; V = VERIFY ALL SECTORS OF DISK ; HELPV: LXI D,HLPMSV ;SIGN ON HELP SCREEN CALL MESG1 ;PRINT IT CALL CI ;WAIT FOR INPUT CPI 'A' ;HLP ON READ CP/M FROM FILE JZ HELPA ;PRINT IT CPI 'C' ;HLP ON COPY JZ HELPC CPI 'D' ;HELP ON DESIGNATE JZ HELPD CPI 'F' ;HELP ON FORMAT JZ HELPF CPI 'G' ;HELP ON G COMMAND JZ HELPG CPI 'P' ;HELP ON P COMMAND JZ HELPP CPI 'R' ;HELP ON R COMMAND JZ HELPR CPI 'T' ;HELP ON T COMMAND JZ HELPT CPI 'V' ;HELP ON VERIFY JZ HELPV CPI 'W' ;HELP ON W COMMAND JZ HELPW CPI 'X' ;GO BACK TO MAIN MENU JZ HELLO CPI '?' ;GENERAL INFO JZ HELP JMP HELPV ; ; ; ; ; ; THIS IS THE ONLINE HELP FACILITY ; FOR THE GSR/COMPUTIME FORMAT PROGRAM ; ; W = WRITE TABLES TO DISK ; HELPW: LXI D,HLPMSW ;SIGN ON HELP SCREEN CALL MESG1 ;PRINT IT CALL CI ;WAIT FOR INPUT CPI 'A' ;HLP ON READ CP/M FROM FILE JZ HELPA ;PRINT IT CPI 'C' ;HLP ON COPY JZ HELPC CPI 'D' ;HELP ON DESIGNATE JZ HELPD CPI 'F' ;HELP ON FORMAT JZ HELPF CPI 'G' ;HELP ON G COMMAND JZ HELPG CPI 'P' ;HELP ON P COMMAND JZ HELPP CPI 'R' ;HELP ON R COMMAND JZ HELPR CPI 'T' ;HELP ON T COMMAND JZ HELPT CPI 'V' ;HELP ON VERIFY JZ HELPV CPI 'W' ;HELP ON W COMMAND JZ HELPW CPI 'X' ;GO BACK TO MAIN MENU JZ HELLO CPI '?' ;GENERAL INFO JZ HELP JMP HELPW ; ; ; ; MVTBL: LXI B,128 LXI D,TBLSTR LDIR ; ; SELDRV: LXI D,MSG2 CALL MESG1 CALL CI CPI 'X' JZ HELLO CPI 'A' JNZ BDRV MVI A,0C0H JMP STRCD BDRV: CPI 'B' JNZ CDRV MVI A,0C1H JMP STRCD CDRV: CPI 'C' JNZ DDRV MVI A,0C2H JMP STRCD DDRV: CPI 'D' JNZ SELDRV MVI A,0C3H STRCD: STA SELCD STA CSELCD OUT DCNTL ANI 3 STA DISKNO ; TBLSTP: IN DFLAG ;8" OR 5" ? ANI 4 MVI A,27 JZ STRCD1 ;8" MVI A,19 ;5" STRCD1: STA LSTSEC XRA A STA SECSZ INR A STA BYTCNT STA FSTSEC RET ; TRK0FM: CALL GETCD XRA A ;RESET GET FLAG STA GETFLG MVI D,0 CALL EOJB CALL SDTRK JMP TBLWRT ; WTBLS: CALL GETCD XRA A ;RESET GET FLAG STA GETFLG JMP TBLWRT ; ; ;READS CPM IMAGE FROM DISK FILE ; GETCPM: XRA A ;SEL RECORD 0 LXI H,FCBL+12 MOV M,A LXI D,FCBL+13 LXI B,20 LDIR LXI D,FCBL ;OPEN FILE MVI C,15 CALL BDOS CPI 0FFH JZ OPENER ;FILE OPEN ERROR MVI B,17 ;READ 17 JUNK SECS JUNKRD: PUSH B CALL DFLTBF POP B DJNZ JUNKRD LXI D,CPMSTR ;READ CPM IMAGE MVI B,49 ;49 SECTORS CPMRD: LXI H,128 PUSH B PUSH D PUSH H CALL SETDMA POP H POP D POP B DAD D XCHG DJNZ CPMRD MVI A,1 ;SET CPM READ FLG STA RFLAG JMP HELLO OPENER: LXI D,MSGA ;SEND ERROR MSG CALL MESG1 JMP WAITKY DFLTBF: LXI D,DBUFF ;DEFAULT BUF ADR SETDMA: MVI C,26 ;SET DMA ADR CALL BDOS RDSEC: LXI D,FCBL ;READ A SECTOR MVI C,20 CALL BDOS ORA A ;TEST FOR EOF RZ ;NOT EOF LXI D,MSGB ;EOF MESSAGE CALL MESG1 JMP WAITKY ; ; ;COPY CPM FROM RAM TO DISK ; ; CBOOT: LDA RFLAG ;TEST IF CPM READ ORA A JZ ERROR ;INPUT ERROR XRA A ;SET FLAG FOR WRT JMPR CBOOT1 ;GO WRITE CPM ; ERROR: LXI D,MSG6 CALL MESG1 JMP WAITKY ; ; ;READ CPM IMAGE TO RAM ; TBOOT: MVI A,1 ;SET CPM READ FLG STA RFLAG ;SET WRITE FLAG CBOOT1: STA RWFLG ;STORE R/W FLAG CALL SELDRV ;SELECT DRIVE CALL TBLRD ;READ TABLES CALL TBLSTP CALL WBOOT ;MOVE CPM TO/FROM RAM JMP HELLO ;DONE ; WBOOT: LXI H,CPMSTR ;SET DMA ADR SHLD DMAAD LXI X,TBLSTR MVI A,2 ;SECTOR = 2 STA SECTOR MVI A,49 ;NO OF SECS STA BTSEC MVI D,1 ;# OF 128 BYTE SECS MVI A,25 ;8" SECS ON TRK 0 STA SECCNT IN DFLAG ANI 4 ;8" OR 5 1/4" ? JRZ WBOOT8 ;8" MVI A,17 STA SECCNT WBOOT8: LDA BTSEC ;SUBTRACT SECTORS SUB D STA BTSEC MVI B,10 BRWAGN: PUSH B LDA DDDS ;SD 1 > 128? ANI 8 LDA SECTOR JZ BTRW6 ;SD 1 > 128 ANI 7FH ;SD 1 < 128 BTRW6: OUT DSCTR CALL SETUP PUSH D ;SAVE FOR RETRY LHLD DMAAD ;GET DMA ADR LDA RWFLG ;TEST FLAG ORA A JRZ BOOTWT ;WRITE OPERATION BOOTRD: LDA SECTOR ;TEST FOR SIDE 1 ANI 80H MVI A,88H ;READ COMMAND JRZ BTRW3 ;SIDE 0 MVI A,8AH ;SELECT SIDE 1 BTRW3: OUT DCMMD STA CMND BTRW1: LXI B,(128*256)+DDATA INIR DCR D ;LOOP CONTROL JRNZ BTRW1 JMPR BTRW5 BOOTWT: LDA SECTOR ;TEST FOR SIDE1 ANI 80H MVI A,0A8H ;WRITE COMMAND JRZ BTRW4 ;SIDE 0 MVI A,0AAH ;SIDE 1 BTRW4: OUT DCMMD STA CMND BTRW2: LXI B,(128*256)+DDATA OUTIR DCR D ;LOOP CONTROL JRNZ BTRW2 BTRW5: POP D ;RESTORE LENGTH CALL EOJ LDA STATUS ;TEST FOR ERRORS ANI 1CH POP B JRZ WBOOTA ;DONE, NO ERRORS DJNZ BRWAGN ;RETRY JMP DERROR WBOOTA: SHLD DMAAD ;UPDATE DMAAD LDA SECTOR ;SECTOR + 1 INR A STA SECTOR LDA BTSEC ;ALL SECS DONE? ORA A RZ ;DONE LDA SECCNT ;PHYÓ SECÓ PEÒ TRACK DCR A ;SUBTRACT 1 STA SECCNT JNZ WBOOT8 ;NOT DONE WITH TRACK MOV L,15(X) ;BYTES PER SEC MOV H,16(X) DAD H ;ADJUST VALUE MOV D,H ;# OF 128 BYTE SECS MOV A,18(X) ;TEST FOR DOUBLE SIDE ANI 2 MVI A,81H ;SIDE 1 SELECT JRNZ WBOOT9 ;DOUBLE SIDE MVI B,58H ;STEP IN 1 TRACK CALL EOJA MVI A,1 ;SECTOR = 1 WBOOT9: STA SECTOR MOV A,19(X) ;PHYS SECS PER TRK STA SECCNT JMP WBOOT8 ;DO THE REST ; GENRAT: LDA RFLAG ;TEST IF CPM READ ORA A JZ ERROR ;CPM NOT READ MVI A,1 ;SET CPM WRT FLG STA CPMFLG JMP PREVCD ;DO FORMAT ; DERROR: LXI D,MSG7 CALL MESG1 JMP WAITKY ; FORMAT: CALL GETCD ;GET FORMAT INFO LXI D,MSG3 ;SEND WARNING MSG CALL MESG1 CALL CI ;GET INPUT CPI 'Y' ;TEST FOR Y JNZ HELLO ;CANCEL COMMAND PREVCD: LDA GETFLG ;TEST FOR GET CODE ORA A CZ GETCD ;GET CODE NEEDED CALL TBLSTP MVI D,0 ;TRACK ADDRESS CALL EOJB ;RESTORE DRIVE CALL SDTRK ;FIRST TRACK IS SD LDA TBLSTR+19 ;SET UP FOR ;REMAINING TRACKS BIT 2,18(X) ;1ST SECTOR = 0? JZ STEP4 ;1ST SECTOR = 1 LDA FSTSEC ;ADJUST 1ST SEC DCR A STA FSTSEC LDA TBLSTR+19 ;GET SECS/TRK JMP STEP5 ;DO NOT INCREMENT STEP4: INR A ;INCREMENT SECS/TRK STEP5: STA LSTSEC ;STORE LAST SEC LDA TBLSTR+16 ;MSD OF BYTES/SEC CPI 4 ;BYTES/SEC = 1024 ? JNZ STEP1 ;NOT 1024 DCR A ;ADJUST IT STEP1: STA SECSZ ;STORE SECTOR SIZE LDA TBLSTR+16 ORA A JZ STEP2 ;128 BYTE SEC SIZE RLC ;>128 JMP STEP3 STEP2: INR A STEP3: STA BYTCNT ;= BYTES PER SEC/128 LDA DDDS ;TEST FOR DBL SD ANI 2 JZ STEPIN ;SINGLE SIDE CALL DSBKP1 ;GET RDY FOR SD 1 LDA DDDS ;TEST FOR DBL DENS ANI 80H JNZ DDS1 ;SD 1 = DBL DENS CALL SDTRK ;SD 1 = SNGL DENS JMP DSDN DDS1: CALL DDTRK DSDN: CALL DSBKP2 ;GET RDY FOR NEXT TRK STEPIN: MVI B,58H CALL EOJA ;DO STEP IN LDA DDDS ;TEST IF DD ANI 80H JNZ DOUBLE ;DO DD FORMAT SINGLE: CALL SDTRK ;FORMAT SD TRACK LDA DDDS ;TEST FOR DBL SD ANI 2 JZ SNGL1 ;SINGLE SIDE CALL DSBKP1 ;GET RDY FOR SD 1 CALL SDTRK ;SD 1 = SNGL DENS CALL DSBKP2 ;GET RDY FOR NEXT TRK SNGL1: LDA LSTTRK ;TEST FOR LAST TRACK CMP D JZ TBLWRT ;DONE MVI B,58H ;DO STEP IN CALL EOJA JMP SINGLE ;DO NEXT TRACK DOUBLE: CALL DDTRK ;FORMAT DD TRACK LDA DDDS ;TEST FOR DBL SD ANI 2 JZ DBL1 ;SINGLE SIDE CALL DSBKP1 ;GET RDY FOR SD1 CALL DDTRK ;SD 1 = DBL DENS CALL DSBKP2 ;GET RDY FOR NEXT TRK DBL1: LDA LSTTRK ;TEST FOR LAST TRACK CMP D JZ TBLWRT ;DONE MVI B,58H ;DO STEP IN CALL EOJA JMP DOUBLE ;DO NEXT TRACK TBLWRT: CALL DWRITE ;WRITE DISK TABLES LDA STATUS ;TEST FOR ERRORS ANI 1CH JZ TBLWR1 ;NO ERRORS LXI D,ERMSG ;SEND ERR MESG CALL MESG1 JMP WAITKY TBLWR1: XRA A ;SET FLAG FOR WRITE STA RWFLG LDA CPMFLG ;TEST FOR CPM WRITE ORA A CNZ WBOOT ;WRITE CPM TO DISK XRA A ;RESET CPM FLAG STA CPMFLG JMP HELLO ; DSBKP1: DCR D ;BACK UP TRK ADR LDA DDDS ;SD 1 > 128? ANI 8 LDA FSTSEC ;SELECT SD 1 JNZ DSBKP3 ;SD 1 < 128 ORI 80H ;SD 1 > 128 DSBKP3: STA FSTSEC LDA DDDS ;SD 1 > 128? ANI 8 LDA LSTSEC JNZ DSBKP4 ;SD 1 < 128 ORI 80H ;SD 1 > 128 DSBKP4: STA LSTSEC LDA SDSEL INR A STA SDSEL RET ; DSBKP2: LDA FSTSEC ;SELECT SD 0 ANI 7FH STA FSTSEC LDA LSTSEC ANI 7FH STA LSTSEC LDA SDSEL DCR A STA SDSEL RET ; ; ;CONSOLE OUTPUT ROUTINE ; CO: PUSH D PUSH H PUSH B MVI C,2 CALL 5 POP B POP H POP D RET ; ; ;CONSOLE INPUT ROUTINE ; CI: PUSH B PUSH H PUSH D MVI C,1 CALL 5 POP D POP H POP B ANI 7FH RET ; ; ;MESSAGE OUTPUT ROUTINE ; MESG: LXI D,MSG MESG1: MVI C,9 JMP 5 ; ; ; SINGLE DENSITY TRACK FORMAT ROUTINE ; SDTRK: LDA SDSEL ;TEST FOR SIDE 1 ORA A LDA SELCD JZ SDTRK1 ;SIDE 0 ORI 20H ;SELECT SIDE 1 SDTRK1: OUT DCNTL STA CSELCD IN DFLAG ;TEST FOR 8"/5" ANI 4 JZ SD8TRK ;8" JMP SD5TRK ;5 1/4" SD8TRK: LDA FSTSEC ;SECTOR ADDRESS MOV E,A LXI H,0E5FFH ;GAP DATA BIT 4,18(X) ;INVERT DATA? JZ SD8TK2 ;NON-INVERTED LXI H,1AFFH ;INVERTED SD8TK2: MVI C,DDATA ;DATA PORT ADDRESS LDA SDSEL ;TEST FOR SIDE 1 ORA A MVI A,0F4H ;WRITE TRACK, SD 0 JZ SD8TK1 ;SIDE 0 MVI A,0F6H ;WRITE TRACK, SD 1 SD8TK1: OUT DCMMD STA CMND MVI B,40 ;WRITE 40 FF'S GAP48: OUTP L DJNZ GAP48 XRA A MVI B,6 ;WRITE 6 0'S GAP408: OUTP A DJNZ GAP408 MVI A,0FCH ;WRITE INDEX MARK OUTP A MVI B,26 ;WRITE 26 FF'S GAP18: OUTP L DJNZ GAP18 FSEC8: XRA A MVI B,6 ;WRITE 6 0'S SYNA8S: OUTP A DJNZ SYNA8S MVI A,0FEH ;ADDRESS MARK OUTP A OUTP D ;TRACK NO LDA SDSEL OUTP A ;SIDE NO OUTP E ;SECTOR NO LDA SECSZ OUTP A ;SECTOR SIZE MVI A,0F7H ;CRC OUTP A MVI B,11 ;WRITE 11 FF'S GAP28: OUTP L DJNZ GAP28 XRA A MVI B,6 ;WRITE 6 0'S SYND8S: OUTP A DJNZ SYND8S MVI A,0FBH ;DATA MARK OUTP A LDA BYTCNT DATA18: MVI B,128 ;WRITE DATA DATAF8: OUTP H DJNZ DATAF8 DCR A JNZ DATA18 MVI A,0F7H ;CRC OUTP A MVI B,27 ;WRITE 27 FF'S GAP38: OUTP L DJNZ GAP38 INR E ;SECTOR + 1 LDA LSTSEC ;TEST FOR LAST CMP E JNZ FSEC8 ;DO NEXT SECTOR ENDTR8: OUTP L ;WRITE FF'S TILL END IN DSTAT STA STATUS ANI 1 JNZ ENDTR8 CALL DWAIT ;DISABLE WAITS INR D ;TRACK + 1 RET SD5TRK: LDA FSTSEC ;SECTOR ADDRESS MOV E,A LXI H,0E500H ;GAP DATA BIT 4,18(X) ;INVERT DATA? JZ SD5TK2 ;NON-INVERTED LXI H,1A00H ;INVERTED SD5TK2: MVI C,DDATA ;DATA PORT ADDRESS LDA SDSEL ;TEST FOR SIDE 1 ORA A MVI A,0F4H ;WRITE TRACK, SD 0 JZ SD5TK1 ;SIDE 0 MVI A,0F6H ;WRITE TRACK, SD 1 SD5TK1: OUT DCMMD STA CMND MVI B,20 ;WRITE 20 0'S GAP1: OUTP L DJNZ GAP1 FSEC: MVI A,0FEH ;ADDRESS MARK OUTP A OUTP D ;TRACK NO LDA SDSEL OUTP A ;SIDE NO OUTP E ;SECTOR NO LDA SECSZ OUTP A ;SECTOR SIZE MVI A,0F7H ;CRC OUTP A MVI B,17 ;WRITE 17 0'S GAP2: OUTP L DJNZ GAP2 MVI A,0FBH ;DATA MARK OUTP A LDA BYTCNT DATA1: MVI B,128 ;WRITE DATA DATAF: OUTP H DJNZ DATAF DCR A JNZ DATA1 MVI A,0F7H ;CRC OUTP A MVI B,14 ;WRITE 14 0'S GAP3: OUTP L DJNZ GAP3 INR E ;SECTOR + 1 LDA LSTSEC ;TEST FOR LAST CMP E JNZ FSEC ;DO NEXT SECTOR ENDTRK: OUTP L ;WRITE 0'S TILL END IN DSTAT STA STATUS ANI 1 JNZ ENDTRK CALL DWAIT ;DISABLE WAITS INR D ;TRACK + 1 RET ; ; ; DOUBLE DENSITY TRACK FORMAT ROUTINE ; DDTRK: LDA SDSEL ;TEST FOR SIDE 1 ORA A LDA SELCD JZ DDTRK1 ;SIDE 0 ORI 20H ;SELECT SIDE 1 DDTRK1: ANI 0BFH ;DBL DENSITY OUT DCNTL STA CSELCD IN DFLAG ;TEST FOR 8"/5" ANI 4 JZ DD8TRK ;8" JMP DD5TRK ;5 1/4" DD8TRK: LDA FSTSEC ;SECTOR ADDRESS MOV E,A LXI H,0E54EH ;GAP DATA BIT 4,18(X) ;INVERT DATA? JZ DD8TK2 ;NON-INVERTED LXI H,1A4EH ;INVERTED DD8TK2: MVI C,DDATA ;DATA PORT ADDRESS LDA SDSEL ;TEST FOR SIDE 1 ORA A MVI A,0F4H ;WRITE TRACK, SD 0 JZ DD8TK1 ;SIDE 0 MVI A,0F6H ;WRITE TRACK, SD 1 DD8TK1: OUT DCMMD STA CMND MVI B,40 ;WRITE 40 4E'S D8GAP1: OUTP L DJNZ D8GAP1 MVI B,12 ;WRITE 12 0'S XRA A F8SEC5: OUTP A DJNZ F8SEC5 MVI A,0F6H ;WRITE 3 F6'S OUTP A OUTP A OUTP A MVI A,0FCH ;WRITE INDEX MARK OUTP A MVI B,50 ;WRITE 50 4E'S F8SEC6: OUTP L DJNZ F8SEC6 D8FSEC: MVI B,12 ;WRITE 12 0'S XRA A F8SEC1: OUTP A DJNZ F8SEC1 MVI B,3 ;WRITE 3 F5'S MVI A,0F5H F8SEC2: OUTP A DJNZ F8SEC2 MVI A,0FEH ;ADDRESS MARK OUTP A OUTP D ;TRACK NO LDA SDSEL OUTP A ;SIDE NO OUTP E ;SECTOR NO LDA SECSZ OUTP A ;SECTOR SIZE MVI A,0F7H ;CRC OUTP A MVI B,22 ;WRITE 22 4E'S D8GAP2: OUTP L DJNZ D8GAP2 XRA A ;WRITE 12 0'S MVI B,12 F8SEC3: OUTP A DJNZ F8SEC3 MVI A,0F5H ;WRITE 3 F5'S MVI B,3 F8SEC4: OUTP A DJNZ F8SEC4 MVI A,0FBH ;DATA MARK OUTP A LDA BYTCNT DDAT81: MVI B,128 ;WRITE DATA DDAT8F: OUTP H DJNZ DDAT8F DCR A JNZ DDAT81 MVI A,0F7H ;CRC OUTP A MVI B,54 ;WRITE 54 4E'S D8GAP3: OUTP L DJNZ D8GAP3 INR E ;SECTOR + 1 LDA LSTSEC ;TEST FOR LAST CMP E JNZ D8FSEC ;DO NEXT SECTOR DENTR8: OUTP L ;WRITE 4E'S TILL END IN DSTAT STA STATUS ANI 1 JNZ DENTR8 CALL DWAIT ;DISABLE WAITS INR D ;TRACK + 1 RET DD5TRK: LDA FSTSEC ;SECTOR ADDRESS MOV E,A LXI H,0E54EH ;GAP DATA BIT 4,18(X) ;INVERT DATA? JZ DD5TK2 ;NON-INVERTED LXI H,1A4EH ;INVERTED DD5TK2: MVI C,DDATA ;DATA PORT ADDRESS LDA SDSEL ;TEST FOR SIDE 1 ORA A MVI A,0F4H ;WRITE TRACK, SD 0 JZ DD5TK1 ;SIDE 0 MVI A,0F6H ;WRITE TRACK, SD 1 DD5TK1: OUT DCMMD STA CMND MVI B,40 ;WRITE 40 4E'S DGAP1: OUTP L DJNZ DGAP1 DFSEC: MVI B,12 ;WRITE 12 0'S XRA A FSEC1: OUTP A DJNZ FSEC1 MVI B,3 ;WRITE 3 F5'S MVI A,0F5H FSEC2: OUTP A DJNZ FSEC2 MVI A,0FEH ;ADDRESS MARK OUTP A OUTP D ;TRACK NO LDA SDSEL OUTP A ;SIDE NO OUTP E ;SECTOR NO LDA SECSZ OUTP A ;SECTOR SIZE MVI A,0F7H ;CRC OUTP A MVI B,22 ;WRITE 22 4E'S DGAP2: OUTP L DJNZ DGAP2 XRA A ;WRITE 12 0'S MVI B,12 FSEC3: OUTP A DJNZ FSEC3 MVI A,0F5H ;WRITE 3 F5'S MVI B,3 FSEC4: OUTP A DJNZ FSEC4 MVI A,0FBH ;DATA MARK OUTP A LDA BYTCNT DDATA1: MVI B,128 ;WRITE DATA DDATAF: OUTP H DJNZ DDATAF DCR A JNZ DDATA1 MVI A,0F7H ;CRC OUTP A MVI B,20 ;WRITE 20 4E'S DGAP3: OUTP L DJNZ DGAP3 INR E ;SECTOR + 1 LDA LSTSEC ;TEST FOR LAST CMP E JNZ DFSEC ;DO NEXT SECTOR DENTRK: OUTP L ;WRITE 4E'S TILL END IN DSTAT STA STATUS ANI 1 JNZ DENTRK CALL DWAIT ;DISABLE WAITS INR D ;TRACK + 1 RET ; TBLRD: LDA SELCD ;SELECT DRIVE STA CSELCD OUT DCNTL CALL EOJB ;RESTORE DRIVE MVI B,10 ;NUMBER OF RETRIES RAGN: PUSH B ;SAVE RETRY COUNT CALL SEEK ;GET READY ANI 0DFH ;BUILD READ COMMAND CALL RDAT ;READ THE TABLES READ4: POP B ;GET RETRY COUNT LDA STATUS ;TEST FOR ERRORS ANI 1CH RZ ;DONE IF NO ERRORS DJNZ RAGN ;DO A RETRY LXI D,MSG8 ;DISPLAY ERR MSG CALL MESG1 JMP WAITKY ; RDAT: OUT DCMMD STA CMND RD1: IN DDATA ;GET THE DATA MOV M,A ;STORE IT INX H ;BUMP THE MEMORY POINTER DCR C ;LOOP CONTROL JNZ RD1 JMP EOJ ;DONE ; DWRITE: LDA SELCD STA CSELCD OUT DCNTL CALL EOJB ;RESTORE DRIVE MVI B,10 ;NUMBER OF RETRIES AGN: PUSH B ;SAVE BC CALL SEEK ;GET READY CALL WRDAT ;WRITE TABLES TO DISK READ3: POP B ;GET ERROR RETRY COUNT LDA STATUS ;TEST FOR ERRORS ANI 1CH RZ ;RETURN IF NO ERRORS DJNZ AGN ;DO A RETRY RET ;ERROR RETURN ; ; WRDAT: OUT DCMMD ;DISK COMMAND PORT STA CMND WRT1: MOV A,M ;GET THE DATA OUT DDATA INX H ;BUMP THE MEMORY POINTER DCR C ;LOOP CONTROL JRNZ WRT1 JMPR EOJ ; EOJB: MVI B,8 ;BASIS OF RESTORE COMMAND EOJA: IN DFLAG ;STEP RATE BITS ANI 3 ORA B ;ADD ON THE COMMAND OUT DCMMD ;DO THE COMMAND STA CMND MVI A,128 ;DELAY SKDLY: DCR A JNZ SKDLY EOJ: IN DSTAT ;TEST FOR INTRQ ANI 1 JNZ EOJ ;WAIT FOR INTRQ CALL DWAIT ;DISABLE WAITS EOJ1: IN DSTAT ;GET THE DISK STATUS STA STATUS ;SAVE A COPY ANI 0C0H RZ ;DONE IF NO ERRORS POP B ;ADJUST STACK ANI 80H ;TEST FOR NOT READY JZ WPMSG ;MUST BE WRT PROTECT LXI D,MSG4 ;NOT RDY MSG EOJ2: CALL MESG1 ;SEND MSG JMP WAITKY ;RETURN TO START WPMSG: LDA RWFLG ;READ OPERATION? ORA A RNZ ;DONE IF READ LXI D,MSG5 ;WRT PROT MSG JMP EOJ2 ;SEND IT ; SEEK: MVI A,1 OUT DSCTR ;DISK SECTOR PORT LDA SELCD STA CSELCD OUT DCNTL IN DFLAG ANI 10H ;SEE IF HEAD IS LOADED MVI A,4 JRZ RDWRT1 ;JUMP IF NOT XRA A ;ELSE, RESET THE HEAD LD FLAG RDWRT1: ADI 0A8H ;BUILD A WRITE SECTOR COMMAND LXI H,TBLSTR ;GET THE DMA ADDRESS MVI C,80H ;128 BYTES PER SECTOR RET ; SETUP: LDA SELCD ;GET SEL CODE STA CSELCD ;SAVE A COPY IN DFLAG ;TEST FOR TRK 0 ANI 40H JRNZ SETUP2 ;NOT TRK 0 LDA SECTOR ;TEST FOR SIDE 1 ANI 80H LDA CSELCD JZ SETUP3 ;TRK 0, SD 0 IS SD SETUP2: MOV A,18(X) ;TEST FOR SD/DD ANI 80H JZ SETUP4 ;DISK IS SD LDA CSELCD ;SET DD ANI 0BFH STA CSELCD ;SAVE A COPY SETUP4: LDA SECTOR ;TEST FOR SIDE 1 ANI 80H LDA CSELCD ;GET SEL CODE JZ SETUP3 ;SIDE 0 ORI 20H ;SELECT SIDE 1 SETUP3: OUT DCNTL STA CSELCD ;SAVE A COPY RET ; ; DWAIT: LDA CSELCD ;RESET AUTO-WAIT ORI 80H OUT DCNTL RET .PAGE ; ; ;TABLES FOR MENU #1 ; ;5 1/4", 40 TRACK, SD, SS (SELECT = 0, MENU #1) ; DP5S0: .WORD 18 ;SECTORS PER TRACK .BYTE 3 ;BLOCK SHIFT FACTOR .BYTE 7 ;BLOCK MASK .BYTE 0 ;EXTENT MASK .WORD 82 ;BLOCKS PER DISKETTE .WORD 63 ;# DIRECTORY ENTRIES .BYTE 0C0H ;ALLOC 0 .BYTE 0 ;ALLOC 1 .WORD 16 ;DIR CHECK VECTOR SIZE .WORD 3 ;SYSTEM TRACK OFFSET .WORD 128 ;BYTES PER SECTOR .BYTE 40 ;TRACKS PER DISK ; CONTROL BYTE .BYTE 00000000B ; BIT 0 = 8"/5" ; BIT 1 = DS/SS ; BIT 2 = SEC 0/SEC 1 ; BIT 3 = SD 1 < 128 ; BIT 4 = INV DATA ; BIT 5 = NON-CYLINDER ; BIT 6 = UNDEFINED ; BIT 7 = DD/SD .BYTE 18 ;PHYSICAL SEC/TRK ; ; SECTOR TRANSLATE TABLE ; T5S0: .BYTE 1,5,9,13,17 .BYTE 3,7,11,15 .BYTE 2,6,10,14,18 .BYTE 4,8,12,16 .PAGE ; ; ;5 1/4", 35 TRACK, SD, SS (SELECT = 1, MENU #1) ; DP5S1: .WORD 18 ;SECTORS PER TRACK .BYTE 3 ;BLOCK SHIFT FACTOR .BYTE 7 ;BLOCK MASK .BYTE 0 ;EXTENT MASK .WORD 71 ;BLOCKS PER DISKETTE .WORD 63 ;# DIRECTORY ENTRIES .BYTE 0C0H ;ALLOC 0 .BYTE 0 ;ALLOC 1 .WORD 16 ;DIR CHECK VECTOR SIZE .WORD 3 ;SYSTEM TRACK OFFSET .WORD 128 ;BYTES PER SECTOR .BYTE 35 ;TRACKS PER DISK ; CONTROL BYTE .BYTE 00000000B ; BIT 0 = 8"/5" ; BIT 1 = DS/SS ; BIT 2 = SEC 0/SEC 1 ; BIT 3 = SD 1 < 128 ; BIT 4 = INV DATA ; BIT 5 = NON-CYLINDER ; BIT 6 = UNDEFINED ; BIT 7 = DD/SD .BYTE 18 ;PHYSICAL SEC/TRK ; ; SECTOR TRANSLATE TABLE ; T5S1: .BYTE 1,5,9,13,17 .BYTE 3,7,11,15 .BYTE 2,6,10,14,18 .BYTE 4,8,12,16 .PAGE ; ; ; ;5 1/4", 40 TRACK, DD, SS (SELECT = 2, MENU #1) ; DP5S2: .WORD 36 ;SECTORS PER TRACK .BYTE 4 ;BLOCK SHIFT FACTOR .BYTE 15 ;BLOCK MASK .BYTE 1 ;EXTENT MASK .WORD 84 ;BLOCKS PER DISKETTE .WORD 63 ;# DIRECTORY ENTRIES .BYTE 0C0H ;ALLOC 0 .BYTE 0 ;ALLOC 1 .WORD 16 ;DIR CHECK VECTOR SIZE .WORD 2 ;SYSTEM TRACK OFFSET .WORD 256 ;BYTES PER SECTOR .BYTE 40 ;TRACKS PER DISK ; CONTROL BYTE .BYTE 10000000B ; BIT 0 = 8"/5" ; BIT 1 = DS/SS ; BIT 2 = SEC 0/SEC 1 ; BIT 3 = SD 1 < 128 ; BIT 4 = INV DATA ; BIT 5 = NON-CYLINDER ; BIT 6 = UNDEFINED ; BIT 7 = DD/SD .BYTE 18 ;PHYSICAL SEC/TRK ; ; SECTOR TRANSLATE TABLE ; T5S2: .BYTE 1,2,9,10,17,18,25,26,33,34 .BYTE 3,4,11,12,19,20,27,28,35,36 .BYTE 5,6,13,14,21,22,29,30 .BYTE 7,8,15,16,23,24,31,32 .PAGE ; ; ; ;5 1/4", 35 TRACK, DD, SS (SELECT = 3, MENU #1) ; DP5S3: .WORD 36 ;SECTORS PER TRACK .BYTE 4 ;BLOCK SHIFT FACTOR .BYTE 15 ;BLOCK MASK .BYTE 1 ;EXTENT MASK .WORD 73 ;BLOCKS PER DISKETTE .WORD 63 ;# DIRECTORY ENTRIES .BYTE 0C0H ;ALLOC 0 .BYTE 0 ;ALLOC 1 .WORD 16 ;DIR CHECK VECTOR SIZE .WORD 2 ;SYSTEM TRACK OFFSET .WORD 256 ;BYTES PER SECTOR .BYTE 35 ;TRACKS PER DISK ; CONTROL BYTE .BYTE 10000000B ; BIT 0 = 8"/5" ; BIT 1 = DS/SS ; BIT 2 = SEC 0/SEC 1 ; BIT 3 = SD 1 < 128 ; BIT 4 = INV DATA ; BIT 5 = NON-CYLINDER ; BIT 6 = UNDEFINED ; BIT 7 = DD/SD .BYTE 18 ;PHYSICAL SEC/TRK ; ; SECTOR TRANSLATE TABLE ; T5S3: .BYTE 1,2,9,10,17,18,25,26,33,34 .BYTE 3,4,11,12,19,20,27,28,35,36 .BYTE 5,6,13,14,21,22,29,30 .BYTE 7,8,15,16,23,24,31,32 .PAGE ; ; ;8" SINGLE DENSITY, SINGLE SIDE (SELECT = 4, MENU #1) ; DP8S4: .WORD 26 ;SECTORS PER TRACK .BYTE 3 ;BLOCK SHIFT FACTOR .BYTE 7 ;BLOCK MASK .BYTE 0 ;EXTENT MASK .WORD 242 ;BLOCKS PER DISKETTE .WORD 63 ;# DIRECTORY ENTRIES .BYTE 0C0H ;ALLOC 0 .BYTE 0 ;ALLOC 1 .WORD 16 ;DIR CHECK VECTOR SIZE .WORD 2 ;SYSTEM TRACK OFFSET .WORD 128 ;BYTES PER SECTOR .BYTE 77 ;TRACKS PER DISK ; CONTROL BYTE .BYTE 00000001B ; BIT 0 = 8"/5" ; BIT 1 = DS/SS ; BIT 2 = SEC 0/SEC 1 ; BIT 3 = SD 1 < 128 ; BIT 4 = INV DATA ; BIT 5 = NON-CYLINDER ; BIT 6 = UNDEFINED ; BIT 7 = DD/SD .BYTE 26 ;PHYSICAL SEC/TRK ; ; SECTOR TRANSLATE TABLE ; T8S4: .BYTE 1,7,13,19,25 .BYTE 5,11,17,23 .BYTE 3,9,15,21 .BYTE 2,8,14,20,26 .BYTE 6,12,18,24 .BYTE 4,10,16,22 .PAGE ; ; ;8" DOUBLE DENSITY, SINGLE SIDE (SELECT = 5, MENU #1) ; DP8S5: .WORD 52 ;SECTORS PER TRACK .BYTE 4 ;BLOCK SHIFT FACTOR .BYTE 15 ;BLOCK MASK .BYTE 1 ;EXTENT MASK .WORD 242 ;BLOCKS PER DISKETTE .WORD 127 ;# DIRECTORY ENTRIES .BYTE 0C0H ;ALLOC 0 .BYTE 0 ;ALLOC 1 .WORD 32 ;DIR CHECK VECTOR SIZE .WORD 2 ;SYSTEM TRACK OFFSET .WORD 256 ;BYTES PER SECTOR .BYTE 77 ;TRACKS PER DISK ; CONTROL BYTE .BYTE 10000001B ; BIT 0 = 8"/5" ; BIT 1 = DS/SS ; BIT 2 = SEC 0/SEC 1 ; BIT 3 = SD 1 < 128 ; BIT 4 = INV DATA ; BIT 5 = NON-CYLINDER ; BIT 6 = UNDEFINED ; BIT 7 = DD/SD .BYTE 26 ;PHYSICAL SEC/TRK ; ; SECTOR TRANSLATE TABLE ; T8S5: .BYTE 1,2,19,20,37,38 .BYTE 3,4,21,22,39,40 .BYTE 5,6,23,24,41,42 .BYTE 7,8,25,26,43,44 .BYTE 9,10,27,28,45,46 .BYTE 11,12,29,30,47,48 .BYTE 13,14,31,32,49,50 .BYTE 15,16,33,34,51,52 .BYTE 17,18,35,36 .PAGE ; ; ;8" DOUBLE DENSITY, DOUBLE SIDE (SELECT = 6, MENU #1) ; DP8D6: .WORD 104 ;SECTORS PER TRACK .BYTE 4 ;BLOCK SHIFT FACTOR .BYTE 15 ;BLOCK MASK .BYTE 0 ;EXTENT MASK .WORD 494 ;BLOCKS PER DISKETTE .WORD 127 ;# DIRECTORY ENTRIES .BYTE 0C0H ;ALLOC 0 .BYTE 0 ;ALLOC 1 .WORD 32 ;DIR CHECK VECTOR SIZE .WORD 1 ;SYSTEM TRACK OFFSET .WORD 256 ;BYTES PER SECTOR .BYTE 77 ;TRACKS PER DISK ; CONTROL BYTE .BYTE 10000011B ; BIT 0 = 8"/5" ; BIT 1 = DS/SS ; BIT 2 = SEC 0/SEC 1 ; BIT 3 = SD 1 < 128 ; BIT 7 = DD/SD .BYTE 26 ;PHYSICAL SEC/TRK/SIDE ; ; SECTOR TRANSLATE TABLE ; T8D6: .BYTE 1,2,19,20,37,38 .BYTE 3,4,21,22,39,40 .BYTE 5,6,23,24,41,42 .BYTE 7,8,25,26,43,44 .BYTE 9,10,27,28,45,46 .BYTE 11,12,29,30,47,48 .BYTE 13,14,31,32,49,50 .BYTE 15,16,33,34,51,52 .BYTE 17,18,35,36 .PAGE ; ; ;5 1/4" DOUBLE DENSITY, DOUBLE SIDE (SELECT = 7, MENU #1) ;96 TRACKS PER INCH ; DP5D7: .WORD 80 ;SECTORS PER TRACK .BYTE 4 ;BLOCK SHIFT FACTOR .BYTE 15 ;BLOCK MASK .BYTE 0 ;EXTENT MASK .WORD 394 ;BLOCKS PER DISKETTE .WORD 127 ;# DIRECTORY ENTRIES .BYTE 0C0H ;ALLOC 0 .BYTE 0 ;ALLOC 1 .WORD 32 ;DIR CHECK VECTOR SIZE .WORD 1 ;SYSTEM TRACK OFFSET .WORD 512 ;BYTES PER SECTOR .BYTE 80 ;TRACKS PER DISK ; CONTROL BYTE .BYTE 10000010B ; BIT 0 = 8"/5" ; BIT 1 = DS/SS ; BIT 2 = SEC 0/SEC 1 ; BIT 3 = SD 1 < 128 ; BIT 7 = DD/SD .BYTE 10 ;PHYSICAL SEC/TRK/SIDE ; ; SECTOR TRANSLATE TABLE ; T5D7: .BYTE 1,2,3,4,9,10,11,12 .BYTE 17,18,19,20,25,26,27,28 .BYTE 33,34,35,36 .BYTE 5,6,7,8,13,14,15,16 .BYTE 21,22,23,24,29,30,31,32 .BYTE 37,38,39,40 .PAGE ; ; ;8" DOUBLE DENSITY, SINGLE SIDE (SELECT = 8, MENU #1) ;1024 BYTES PER SECTOR, 4K ALLOCATION BLOCK SIZE ; DP8D8: .WORD 64 ;SECTORS PER TRACK .BYTE 5 ;BLOCK SHIFT FACTOR .BYTE 31 ;BLOCK MASK .BYTE 3 ;EXTENT MASK .WORD 149 ;BLOCKS PER DISKETTE .WORD 127 ;# DIRECTORY ENTRIES .BYTE 80H ;ALLOC 0 .BYTE 0 ;ALLOC 1 .WORD 32 ;DIR CHECK VECTOR SIZE .WORD 2 ;SYSTEM TRACK OFFSET .WORD 1024 ;BYTES PER SECTOR .BYTE 77 ;TRACKS PER DISK ; CONTROL BYTE .BYTE 10000001B ; BIT 0 = 8"/5" ; BIT 1 = DS/SS ; BIT 2 = SEC 0/SEC 1 ; BIT 3 = SD 1 < 128 ; BIT 4 = INV DATA ; BIT 5 = NON-CYLINDER ; BIT 6 = UNDEFINED ; BIT 7 = DD/SD .BYTE 8 ;PHYSICAL SEC/TRK ; ; SECTOR TRANSLATE TABLE ; T8D8: .BYTE 1,2,3,4,5,6,7,8 .BYTE 17,18,19,20,21,22,23,24 .BYTE 33,34,35,36,37,38,39,40 .BYTE 49,50,51,52,53,54,55,56 .BYTE 9,10,11,12,13,14,15,16 .BYTE 25,26,27,28,29,30,31,32 .BYTE 41,42,43,44,45,46,47,48 .BYTE 57,58,59,60,61,62,63,64 .PAGE ; ; ; ;8" DOUBLE DENSITY, DOUBLE SIDE (SELECT = 9, MENU #1) ;1024 BYTES PER SECTOR, 4K ALLOCATION BLOCK SIZE ; DP8D9: .WORD 128 ;SECTORS PER TRACK .BYTE 5 ;BLOCK SHIFT FACTOR .BYTE 31 ;BLOCK MASK .BYTE 1 ;EXTENT MASK .WORD 303 ;BLOCKS PER DISKETTE .WORD 255 ;# DIRECTORY ENTRIES .BYTE 0C0H ;ALLOC 0 .BYTE 0 ;ALLOC 1 .WORD 64 ;DIR CHECK VECTOR SIZE .WORD 1 ;SYSTEM TRACK OFFSET .WORD 1024 ;BYTES PER SECTOR .BYTE 77 ;TRACKS PER DISK ; CONTROL BYTE .BYTE 10000011B ; BIT 0 = 8"/5" ; BIT 1 = DS/SS ; BIT 2 = SEC 0/SEC 1 ; BIT 3 = SD 1 < 128 ; BIT 4 = INV DATA ; BIT 5 = NON-CYLINDER ; BIT 6 = UNDEFINED ; BIT 7 = DD/SD .BYTE 8 ;PHYSICAL SEC/TRK/SIDE ; ; SECTOR TRANSLATE TABLE ; T8D9: .BYTE 1,2,3,4,5,6,7,8 .BYTE 17,18,19,20,21,22,23,24 .BYTE 33,34,35,36,37,38,39,40 .BYTE 49,50,51,52,53,54,55,56 .BYTE 9,10,11,12,13,14,15,16 .BYTE 25,26,27,28,29,30,31,32 .BYTE 41,42,43,44,45,46,47,48 .BYTE 57,58,59,60,61,62,63,64 .PAGE ; ; ;TABLES FOR MENU #2 ; ; ;DIGITAL VT180 SYSTEM (SELECT = 0, MENU #2) ; DEC RAINBOW ; A0DPB: .WORD 36 ;SECTORS PER TRACK .BYTE 3 ;BLOCK SHIFT FACTOR .BYTE 7 ;BLOCK MASK .BYTE 0 ;EXTENT MASK .WORD 170 ;BLOCKS PER DISKETTE .WORD 63 ;# DIRECTORY ENTRIES .BYTE 0C0H ;ALLOC 0 .BYTE 0 ;ALLOC 1 .WORD 16 ;DIR CHECK VECTOR SIZE .WORD 2 ;SYSTEM TRACK OFFSET .WORD 512 ;BYTES PER SECTOR .BYTE 40 ;TRACKS PER DISK ; CONTROL BYTE .BYTE 10000000B ; BIT 0 = 8"/5" ; BIT 1 = DS/SS ; BIT 2 = SEC 0/SEC 1 ; BIT 3 = SD 1 < 128 ; BIT 4 = INV DATA ; BIT 5 = NON-CYLINDER ; BIT 6 = UNDEFINED ; BIT 7 = DD/SD .BYTE 9 ;PHYSICAL SEC/TRK ; ; SECTOR TRANSLATE TABLE ; A0XLT: .BYTE 1,2,3,4,9,10,11,12,17,18,19,20 .BYTE 25,26,27,28,33,34,35,36,5,6,7,8 .BYTE 13,14,15,16,21,22,23,24,29,30,31,32 .PAGE ; ; ;KAYPRO II COMPUTER, (SELECT = 1, MENU #2) ; A1DPB: .WORD 40 ;SECTORS PER TRACK .BYTE 3 ;BLOCK SHIFT FACTOR .BYTE 7 ;BLOCK MASK .BYTE 0 ;EXTENT MASK .WORD 194 ;BLOCKS PER DISKETTE .WORD 63 ;# DIRECTORY ENTRIES .BYTE 0F0H ;ALLOC 0 .BYTE 0 ;ALLOC 1 .WORD 16 ;DIR CHECK VECTOR SIZE .WORD 1 ;SYSTEM TRACK OFFSET .WORD 512 ;BYTES PER SECTOR .BYTE 40 ;TRACKS PER DISK ; CONTROL BYTE .BYTE 10000100B ; BIT 0 = 8"/5" ; BIT 1 = DS/SS ; BIT 2 = SEC 0/SEC 1 ; BIT 3 = SD 1 < 128 ; BIT 4 = INV DATA ; BIT 5 = NON-CYLINDER ; BIT 6 = UNDEFINED ; BIT 7 = DD/SD .BYTE 10 ;PHYSICAL SEC/TRK ; ; SECTOR TRANSLATE TABLE ; A1XLT: .BYTE 1,2,3,4,5,6,7,8,9,10 .BYTE 11,12,13,14,15,16,17,18,19,20 .BYTE 21,22,23,24,25,26,27,28,29,30 .BYTE 31,32,33,34,35,36,37,38,39,40 .PAGE ; ;CALLAN SYSTEM (SELECT = 2, MENU #2) ; A2DPB: .WORD 64 ;SECTORS PER TRACK .BYTE 4 ;BLOCK SHIFT FACTOR .BYTE 15 ;BLOCK MASK .BYTE 0 ;EXTENT MASK .WORD 303 ;BLOCKS PER DISKETTE .WORD 127 ;# DIRECTORY ENTRIES .BYTE 0C0H ;ALLOC 0 .BYTE 0 ;ALLOC 1 .WORD 32 ;DIR CHECK VECTOR SIZE .WORD 1 ;SYSTEM TRACK OFFSET .WORD 256 ;BYTES PER SECTOR .BYTE 80 ;TRACKS PER DISK ; CONTROL BYTE .BYTE 10001010B ; BIT 0 = 8"/5" ; BIT 1 = DS/SS ; BIT 2 = SEC 0/SEC 1 ; BIT 3 = SD 1 < 128 ; BIT 4 = INV DATA ; BIT 5 = NON-CYLINDER ; BIT 6 = UNDEFINED ; BIT 7 = DD/SD .BYTE 16 ;PHYSICAL SEC/TRK ; ; SECTOR TRANSLATE TABLE ; A2XLT: .BYTE 1,2,3,4,9,10,11,12 .BYTE 17,18,19,20,25,26,27,28 .BYTE 5,6,7,8,13,14,15,16 .BYTE 21,22,23,24,29,30,31,32 .PAGE ; ; ;GSR, 5 1/4", 96 TPI, DD, DS (SELECT = 3, MENU #2) ; A3DPB: .WORD 80 ;SECTORS PER TRACK .BYTE 5 ;BLOCK SHIFT FACTOR .BYTE 31 ;BLOCK MASK .BYTE 3 ;EXTENT MASK .WORD 194 ;BLOCKS PER DISKETTE .WORD 127 ;# DIRECTORY ENTRIES .BYTE 080H ;ALLOC 0 .BYTE 0 ;ALLOC 1 .WORD 32 ;DIR CHECK VECTOR SIZE .WORD 2 ;SYSTEM TRACK OFFSET .WORD 1024 ;BYTES PER SECTOR .BYTE 80 ;TRACKS PER DISK ; CONTROL BYTE .BYTE 10000010B ; BIT 0 = 8"/5" ; BIT 1 = DS/SS ; BIT 2 = SEC 0/SEC 1 ; BIT 3 = SD 1 < 128 ; BIT 4 = INV DATA ; BIT 5 = NON-CYLINDER ; BIT 6 = UNDEFINED ; BIT 7 = DD/SD .BYTE 5 ;PHYSICAL SEC/TRK/SIDE ; ; SECTOR TRANSLATE TABLE ; A3XLT: .BYTE 1,2,3,4,5,6,7,8 .BYTE 17,18,19,20,21,22,23,24 .BYTE 33,34,35,36,37,38,39,40 .BYTE 9,10,11,12,13,14,15,16 .BYTE 25,26,27,28,29,30,31,32 .PAGE ; ; ;5 1/4 " INTERCHANGE STANDARD (SELECT = 4, MENU #2) ;SINGLE DENSITY VERSION ; A4DPB: .WORD 16 ;SECTORS PER TRACK .BYTE 3 ;BLOCK SHIFT FACTOR .BYTE 7 ;BLOCK MASK .BYTE 0 ;EXTENT MASK .WORD 63 ;BLOCKS PER DISKETTE .WORD 63 ;# DIRECTORY ENTRIES .BYTE 0C0H ;ALLOC 0 .BYTE 0 ;ALLOC 1 .WORD 16 ;DIR CHECK VECTOR SIZE .WORD 3 ;SYSTEM TRACK OFFSET .WORD 128 ;BYTES PER SECTOR .BYTE 35 ;TRACKS PER DISK ; CONTROL BYTE .BYTE 00000100B ; BIT 0 = 8"/5" ; BIT 1 = DS/SS ; BIT 2 = SEC 0/SEC 1 ; BIT 3 = SD 1 < 128 ; BIT 4 = INV DATA ; BIT 5 = NON-CYLINDER ; BIT 6 = UNDEFINED ; BIT 7 = DD/SD .BYTE 16 ;PHYSICAL SEC/TRK ; ; SECTOR TRANSLATE TABLE ; A4XLT: .BYTE 1,5,9,13,2,6,10,14 .BYTE 3,7,11,15,4,8,12,16 .PAGE ; ;5 1/4" INTERCHANGE STANDARD (SELECT = 5, MENU #2) ;DOUBLE DENSITY VERSION ; A5DPB: .WORD 32 ;SECTORS PER TRACK .BYTE 3 ;BLOCK SHIFT FACTOR .BYTE 7 ;BLOCK MASK .BYTE 0 ;EXTENT MASK .WORD 151 ;BLOCKS PER DISKETTE .WORD 63 ;# DIRECTORY ENTRIES .BYTE 0C0H ;ALLOC 0 .BYTE 0 ;ALLOC 1 .WORD 16 ;DIR CHECK VECTOR SIZE .WORD 2 ;SYSTEM TRACK OFFSET .WORD 512 ;BYTES PER SECTOR .BYTE 40 ;TRACKS PER DISK ; CONTROL BYTE .BYTE 10000100B ; BIT 0 = 8"/5" ; BIT 1 = DS/SS ; BIT 2 = SEC 0/SEC 1 ; BIT 3 = SD 1 < 128 ; BIT 4 = INV DATA ; BIT 5 = NON-CYLINDER ; BIT 6 = UNDEFINED ; BIT 7 = DD/SD .BYTE 8 ;PHYSICAL SEC/TRK ; ; SECTOR TRANSLATE TABLE ; A5XLT: .BYTE 1,2,3,4,9,10,11,12,17,18,19,20 .BYTE 25,26,27,28,5,6,7,8 .BYTE 13,14,15,16,21,22,23,24,29,30,31,32 .PAGE ; ;5 1/4" DOUBLE DENSITY, DOUBLE SIDE (SELECT = 6, MENU #2) ;SUPER BRAIN FORMAT ; A6DPB: .WORD 40 ;SECTORS PER TRACK .BYTE 4 ;BLOCK SHIFT FACTOR .BYTE 15 ;BLOCK MASK .BYTE 1 ;EXTENT MASK .WORD 169 ;BLOCKS PER DISKETTE .WORD 63 ;# DIRECTORY ENTRIES .BYTE 128 ;ALLOC 0 .BYTE 0 ;ALLOC 1 .WORD 16 ;DIR CHECK VECTOR SIZE .WORD 2 ;SYSTEM TRACK OFFSET .WORD 512 ;BYTES PER SECTOR .BYTE 35 ;TRACKS PER DISK SIDE ; CONTROL BYTE .BYTE 10111010B ; BIT 0 = 8"/5" ; BIT 1 = DS/SS ; BIT 2 = SEC 0/SEC 1 ; BIT 3 = SD 1 < 128 ; BIT 4 = INV DATA ; BIT 5 = NON-CYLINDER ; BIT 6 = UNDEFINED ; BIT 7 = DD/SD .BYTE 10 ;PHYSICAL SEC/TRK/SIDE ; ; SECTOR TRANSLATE TABLE ; A6XLT: .BYTE 1,2,3,4,9,10,11,12,17,18,19,20 .BYTE 25,26,27,28,33,34,35,36,5,6,7,8 .BYTE 13,14,15,16,21,22,23,24 .BYTE 29,30,31,32,37,38,39,40 .PAGE ; ;5 1/4" DOUBLE DENSITY, SINGLE SIDE (SELECT = 7, MENU #2) ;SUPER BRAIN FORMAT ; A7DPB: .WORD 40 ;SECTORS PER TRACK .BYTE 4 ;BLOCK SHIFT FACTOR .BYTE 15 ;BLOCK MASK .BYTE 1 ;EXTENT MASK .WORD 81 ;BLOCKS PER DISKETTE .WORD 63 ;# DIRECTORY ENTRIES .BYTE 128 ;ALLOC 0 .BYTE 0 ;ALLOC 1 .WORD 16 ;DIR CHECK VECTOR SIZE .WORD 2 ;SYSTEM TRACK OFFSET .WORD 512 ;BYTES PER SECTOR .BYTE 35 ;TRACKS PER DISK ; CONTROL BYTE .BYTE 10010000B ; BIT 0 = 8"/5" ; BIT 1 = DS/SS ; BIT 2 = SEC 0/SEC 1 ; BIT 3 = SD 1 < 128 ; BIT 4 = INV DATA ; BIT 5 = NON-CYLINDER ; BIT 6 = UNDEFINED ; BIT 7 = DD/SD .BYTE 10 ;PHYSICAL SEC/TRK ; ; SECTOR TRANSLATE TABLE ; A7XLT: .BYTE 1,2,3,4,9,10,11,12,17,18,19,20 .BYTE 25,26,27,28,33,34,35,36,5,6,7,8 .BYTE 13,14,15,16,21,22,23,24 .BYTE 29,30,31,32,37,38,39,40 .PAGE ; ;GSR, 5 1/4", 48 TPI, DD, DS (SELECT = 8, MENU #2) ; A8DPB: .WORD 80 ;SECTORS PER TRACK .BYTE 5 ;BLOCK SHIFT FACTOR .BYTE 31 ;BLOCK MASK .BYTE 3 ;EXTENT MASK .WORD 94 ;BLOCKS PER DISKETTE .WORD 127 ;# DIRECTORY ENTRIES .BYTE 80H ;ALLOC 0 .BYTE 0 ;ALLOC 1 .WORD 32 ;DIR CHECK VECTOR SIZE .WORD 2 ;SYSTEM TRACK OFFSET .WORD 1024 ;BYTES PER SECTOR .BYTE 40 ;TRACKS PER DISK ; CONTROL BYTE .BYTE 10000010B ; BIT 0 = 8"/5" ; BIT 1 = DS/SS ; BIT 2 = SEC 0/SEC 1 ; BIT 3 = SD 1 < 128 ; BIT 4 = INV DATA ; BIT 5 = NON-CYLINDER ; BIT 6 = UNDEFINED ; BIT 7 = DD/SD .BYTE 5 ;PHYSICAL SEC/TRK/SIDE ; ; SECTOR TRANSLATE TABLE ; A8XLT: .BYTE 1,2,3,4,5,6,7,8 .BYTE 17,18,19,20,21,22,23,24 .BYTE 33,34,35,36,37,38,39,40 .BYTE 9,10,11,12,13,14,15,16 .BYTE 25,26,27,28,29,30,31,32 .PAGE ; ;XEROX 820-2, 5 1/4", DD, SS (SELECT = 9, MENU #2) ; A9DPB: .WORD 34 ;SECTORS PER TRACK .BYTE 3 ;BLOCK SHIFT FACTOR .BYTE 7 ;BLOCK MASK .BYTE 0 ;EXTENT MASK .WORD 156 ;BLOCKS PER DISKETTE .WORD 63 ;# DIRECTORY ENTRIES .BYTE 0C0H ;ALLOC 0 .BYTE 0 ;ALLOC 1 .WORD 16 ;DIR CHECK VECTOR SIZE .WORD 3 ;SYSTEM TRACK OFFSET .WORD 256 ;BYTES PER SECTOR .BYTE 40 ;TRACKS PER DISK ; CONTROL BYTE .BYTE 10000000B ; BIT 0 = 8"/5" ; BIT 1 = DS/SS ; BIT 2 = SEC 0/SEC 1 ; BIT 3 = SD 1 < 128 ; BIT 4 = INV DATA ; BIT 5 = NON-CYLINDER ; BIT 6 = UNDEFINED ; BIT 7 = DD/SD .BYTE 17 ;PHYSICAL SEC/TRK ; ; SECTOR TRANSLATE TABLE ; A9XLT: .BYTE 1,2,3,4,5,6,7,8 .BYTE 9,10,11,12,13,14,15,16 .BYTE 17,18,19,20,21,22,23,24 .BYTE 25,26,27,28,29,30,31,32 .BYTE 33,34 .PAGE ; ; ;TABLES FOR MENU #3 ; ; ;IBM PC, 5 1/4", DD, SS (SELECT = 0, MENU #3) ; B0DPB: .WORD 32 ;SECTORS PER TRACK .BYTE 3 ;BLOCK SHIFT FACTOR .BYTE 7 ;BLOCK MASK .BYTE 0 ;EXTENT MASK .WORD 155 ;BLOCKS PER DISKETTE .WORD 63 ;# DIRECTORY ENTRIES .BYTE 0C0H ;ALLOC 0 .BYTE 0 ;ALLOC 1 .WORD 16 ;DIR CHECK VECTOR SIZE .WORD 1 ;SYSTEM TRACK OFFSET .WORD 512 ;BYTES PER SECTOR .BYTE 40 ;TRACKS PER DISK ; CONTROL BYTE .BYTE 10000000B ; BIT 0 = 8"/5" ; BIT 1 = DS/SS ; BIT 2 = SEC 0/SEC 1 ; BIT 3 = SD 1 < 128 ; BIT 4 = INV DATA ; BIT 5 = NON-CYLINDER ; BIT 6 = UNDEFINED ; BIT 7 = DD/SD .BYTE 8 ;PHYSICAL SEC/TRK ; ; SECTOR TRANSLATE TABLE ; B0XLT: .BYTE 1,2,3,4,5,6,7,8 .BYTE 9,10,11,12,13,14,15,16 .BYTE 17,18,19,20,21,22,23,24 .BYTE 25,26,27,28,29,30,31,32 .PAGE ; ;XEROX 820 & CROMEMCO 520, 5 1/4", SD, SS (SELECT = 1, MENU #3) ; B1DPB: .WORD 18 ;SECTORS PER TRACK .BYTE 3 ;BLOCK SHIFT FACTOR .BYTE 7 ;BLOCK MASK .BYTE 0 ;EXTENT MASK .WORD 82 ;BLOCKS PER DISKETTE .WORD 31 ;# DIRECTORY ENTRIES .BYTE 80H ;ALLOC 0 .BYTE 0 ;ALLOC 1 .WORD 8 ;DIR CHECK VECTOR SIZE .WORD 3 ;SYSTEM TRACK OFFSET .WORD 128 ;BYTES PER SECTOR .BYTE 40 ;TRACKS PER DISK ; CONTROL BYTE .BYTE 00000000B ; BIT 0 = 8"/5" ; BIT 1 = DS/SS ; BIT 2 = SEC 0/SEC 1 ; BIT 3 = SD 1 < 128 ; BIT 4 = INV DATA ; BIT 5 = NON-CYLINDER ; BIT 6 = UNDEFINED ; BIT 7 = DD/SD .BYTE 18 ;PHYSICAL SEC/TRK ; ; SECTOR TRANSLATE TABLE ; B1XLT: .BYTE 1,6,11,16,3,8,13,18,5,10 .BYTE 15,2,7,12,17,4,9,14 .PAGE ; ;OSBORNE, 5 1/4", SD, SS (SELECT = 2, MENU #3) ; B2DPB: .WORD 20 ;SECTORS PER TRACK .BYTE 4 ;BLOCK SHIFT FACTOR .BYTE 15 ;BLOCK MASK .BYTE 1 ;EXTENT MASK .WORD 45 ;BLOCKS PER DISKETTE .WORD 63 ;# DIRECTORY ENTRIES .BYTE 80H ;ALLOC 0 .BYTE 0 ;ALLOC 1 .WORD 16 ;DIR CHECK VECTOR SIZE .WORD 3 ;SYSTEM TRACK OFFSET .WORD 256 ;BYTES PER SECTOR .BYTE 40 ;TRACKS PER DISK ; CONTROL BYTE .BYTE 00000000B ; BIT 0 = 8"/5" ; BIT 1 = DS/SS ; BIT 2 = SEC 0/SEC 1 ; BIT 3 = SD 1 < 128 ; BIT 4 = INV DATA ; BIT 5 = NON-CYLINDER ; BIT 6 = UNDEFINED ; BIT 7 = DD/SD .BYTE 10 ;PHYSICAL SEC/TRK ; ; SECTOR TRANSLATE TABLE ; B2XLT: .BYTE 1,2,5,6,9,10,13,14,17,18 .BYTE 3,4,7,8,11,12,15,16,19,20 .PAGE ; ;SIERRA DATA SCIENCES 8" DD/DS 1024 BYTE SECTORS ; B3DPB: .WORD 128 ;SECTORS PER TRACK .BYTE 6 ;BLOCK SHIFT FACTOR .BYTE 63 ;BLOCK MASK .BYTE 7 ;EXTENT MASK .WORD 149 ;BLOCKS PER DISKETTE .WORD 127 ;# DIRECTORY ENTRIES .BYTE 192 ;ALLOC 0 .BYTE 0 ;ALLOC 1 .WORD 32 ;DIR CHECK VECTOR SIZE .WORD 2 ;SYSTEM TRACK OFFSET .WORD 1024 ;BYTES PER SECTOR .BYTE 77 ;TRACKS PER DISK ; CONTROL BYTE .BYTE 10001011B ; BIT 0 = 8"/5" ; BIT 1 = DS/SS ; BIT 2 = SEC 0/SEC 1 ; BIT 3 = SD 1 < 128 ; BIT 4 = INV DATA ; BIT 5 = NON-CYLINDER ; BIT 6 = UNDEFINED ; BIT 7 = DD/SD .BYTE 8 ;PHYSICAL SEC/TRK ; ; SECTOR TRANSLATE TABLE ; B3XLT: .BYTE 1,2,3,4,5,6,7,8 .BYTE 9,10,11,12,13,14,15,16 .BYTE 17,18,19,20,21,22,23,24 .BYTE 25,26,27,28,29,30,31,32 .BYTE 33,34,35,36,37,38,39,40 .BYTE 41,42,43,44,45,46,47,48 .BYTE 49,50,51,52,53,54,55,56 .BYTE 57,58,59,60,61,62,63,64 .PAGE ; ;ITHACA INTERSYSTEMS, 8", DD/SS (SELECT = 4, MENU #3) ; B4DPB: .WORD 60 ;SECTORS PER TRACK .BYTE 4 ;BLOCK SHIFT FACTOR .BYTE 15 ;BLOCK MASK .BYTE 1 ;EXTENT MASK .WORD 284 ;BLOCKS PER DISKETTE .WORD 191 ;# DIRECTORY ENTRIES .BYTE 224 ;ALLOC 0 .BYTE 0 ;ALLOC 1 .WORD 48 ;DIR CHECK VECTOR SIZE .WORD 2 ;SYSTEM TRACK OFFSET .WORD 512 ;BYTES PER SECTOR .BYTE 77 ;TRACKS PER DISK ; CONTROL BYTE .BYTE 10000001B ; BIT 0 = 8"/5" ; BIT 1 = DS/SS ; BIT 2 = SEC 0/SEC 1 ; BIT 3 = SD 1 < 128 ; BIT 4 = INV DATA ; BIT 5 = NON-CYLINDER ; BIT 6 = UNDEFINED ; BIT 7 = DD/SD .BYTE 15 ;PHYSICAL SEC/TRK ; ; SECTOR TRANSLATE TABLE ; B4XLT: .BYTE 1,2,3,4,17,18,19,20 .BYTE 33,34,35,36,49,50,51,52 .BYTE 5,6,7,8,21,22,23,24 .BYTE 37,38,39,40,53,54,55,56 .BYTE 9,10,11,12,25,26,27,28 .BYTE 41,42,43,44,57,58,59,60 .BYTE 13,14,15,16,29,30,31,32 .BYTE 45,46,47,48 .PAGE ; ; ; ITHACA INTERSYSTEMS 8" DD/DS 512 BYTE SECTORS ; (SELECT = 5, MENU #3) ; B5DPB: .WORD 120 ;SECTORS PER TRACK .BYTE 5 ;BLOCK SHIFT FACTOR .BYTE 31 ;BLOCK MASK .BYTE 1 ;EXTENT MASK .WORD 285 ;BLOCKS PER DISKETTE .WORD 127 ;# DIRECTORY ENTRIES .BYTE 80H ;ALLOC 0 .BYTE 0 ;ALLOC 1 .WORD 32 ;DIR CHECK VECTOR SIZE .WORD 2 ;SYSTEM TRACK OFFSET .WORD 512 ;BYTES PER SECTOR .BYTE 77 ;TRACKS PER DISK ; CONTROL BYTE .BYTE 10001011B ; BIT 0 = 8"/5" ; BIT 1 = DS/SS ; BIT 2 = SEC 0/SEC 1 ; BIT 3 = SD 1 < 128 ; BIT 4 = INV DATA ; BIT 5 = NON-CYLINDER ; BIT 6 = UNDEFINED ; BIT 7 = DD/SD .BYTE 15 ;PHYSICAL SEC/TRK ; ; SECTOR TRANSLATE TABLE ; B5XLT: .BYTE 1,2,3,4,17,18,19,20 .BYTE 33,34,35,36,49,50,51,52 .BYTE 5,6,7,8,21,22,23,24 .BYTE 37,38,39,40,53,54,55,56 .BYTE 9,10,11,12,25,26,27,28 .BYTE 41,42,43,44,57,58,59,60 .BYTE 13,14,15,16,29,30,31,32 .BYTE 45,46,47,48 .PAGE ; ; DISK JOCKEY 8" DD/SS (512 BYTE SECTORS) ; (SELECT = 6, MENU #3) ; B6DPB: .WORD 60 ;SECTORS PER TRACK .BYTE 4 ;BLOCK SHIFT FACTOR .BYTE 15 ;BLOCK MASK .BYTE 0 ;EXTENT MASK .WORD 280 ;BLOCKS PER DISKETTE .WORD 127 ;# DIRECTORY ENTRIES .BYTE 0C0H ;ALLOC 0 .BYTE 0 ;ALLOC 1 .WORD 32 ;DIR CHECK VECTOR SIZE .WORD 2 ;SYSTEM TRACK OFFSET .WORD 512 ;BYTES PER SECTOR .BYTE 77 ;TRACKS PER DISK ; CONTROL BYTE .BYTE 10000001B ; BIT 0 = 8"/5" ; BIT 1 = DS/SS ; BIT 2 = SEC 0/SEC 1 ; BIT 3 = SD 1 < 128 ; BIT 4 = INV DATA ; BIT 5 = NON-CYLINDER ; BIT 6 = UNDEFINED ; BIT 7 = DD/SD .BYTE 15 ;PHYSICAL SEC/TRK ; ; SECTOR TRANSLATE TABLE ; B6XLT: .BYTE 1,2,3,4,17,18,19,20 .BYTE 33,34,35,36,49,50,51,52 .BYTE 5,6,7,8,21,22,23,24 .BYTE 37,38,39,40,53,54,55,56 .BYTE 9,10,11,12,25,26,27,28 .BYTE 41,42,43,44,57,58,59,60 .BYTE 13,14,15,16,29,30,31,32 .BYTE 45,46,47,48 .PAGE ; ; DISK JOCKEY 8" DD/DS (512 BYTE SECTORS) ; (SELECT = 7, MENU #3) ; B7DPB: .WORD 120 ;SECTORS PER TRACK .BYTE 4 ;BLOCK SHIFT FACTOR .BYTE 15 ;BLOCK MASK .BYTE 0 ;EXTENT MASK .WORD 561 ;BLOCKS PER DISKETTE .WORD 255 ;# DIRECTORY ENTRIES .BYTE 0F0H ;ALLOC 0 .BYTE 0 ;ALLOC 1 .WORD 64 ;DIR CHECK VECTOR SIZE .WORD 2 ;SYSTEM TRACK OFFSET .WORD 512 ;BYTES PER SECTOR .BYTE 77 ;TRACKS PER DISK ; CONTROL BYTE .BYTE 10001011B ; BIT 0 = 8"/5" ; BIT 1 = DS/SS ; BIT 2 = SEC 0/SEC 1 ; BIT 3 = SD 1 < 128 ; BIT 4 = INV DATA ; BIT 5 = NON-CYLINDER ; BIT 6 = UNDEFINED ; BIT 7 = DD/SD .BYTE 15 ;PHYSICAL SEC/TRK ; ; SECTOR TRANSLATE TABLE ; B7XLT: .BYTE 1,2,3,4,17,18,19,20 .BYTE 33,34,35,36,49,50,51,52 .BYTE 5,6,7,8,21,22,23,24 .BYTE 37,38,39,40,53,54,55,56 .BYTE 9,10,11,12,25,26,27,28 .BYTE 41,42,43,44,57,58,59,60 .BYTE 13,14,15,16,29,30,31,32 .BYTE 45,46,47,48 .PAGE ; ; DISK JOCKEY 8" DD/SS 1024 BYTE SECTORS ; (SELECT = 8, MENU #3) ; B8DPB: .WORD 64 ;SECTORS PER TRACK .BYTE 4 ;BLOCK SHIFT FACTOR .BYTE 15 ;BLOCK MASK .BYTE 0 ;EXTENT MASK .WORD 299 ;BLOCKS PER DISKETTE .WORD 127 ;# DIRECTORY ENTRIES .BYTE 0C0H ;ALLOC 0 .BYTE 0 ;ALLOC 1 .WORD 32 ;DIR CHECK VECTOR SIZE .WORD 2 ;SYSTEM TRACK OFFSET .WORD 1024 ;BYTES PER SECTOR .BYTE 77 ;TRACKS PER DISK ; CONTROL BYTE .BYTE 10000001B ; BIT 0 = 8"/5" ; BIT 1 = DS/SS ; BIT 2 = SEC 0/SEC 1 ; BIT 3 = SD 1 < 128 ; BIT 4 = INV DATA ; BIT 5 = NON-CYLINDER ; BIT 6 = UNDEFINED ; BIT 7 = DD/SD .BYTE 8 ;PHYSICAL SEC/TRK ; ; SECTOR TRANSLATE TABLE ; B8XLT: .BYTE 1,2,3,4,5,6,7,8 .BYTE 25,26,27,28,29,30,31,32 .BYTE 49,50,51,52,53,54,55,56 .BYTE 9,10,11,12,13,14,15,16 .BYTE 33,34,35,36,37,38,39,40 .BYTE 57,58,59,60,61,62,63,64 .BYTE 17,18,19,20,21,22,23,24 .BYTE 41,42,43,44,45,46,47,48 .PAGE ; ; DISK JOCKEY 8" DD/DS 1024 BYTE SECTORS ; (SELECT = 9, MENU #3) ; B9DPB: .WORD 128 ;SECTORS PER TRACK .BYTE 4 ;BLOCK SHIFT FACTOR .BYTE 15 ;BLOCK MASK .BYTE 0 ;EXTENT MASK .WORD 599 ;BLOCKS PER DISKETTE .WORD 255 ;# DIRECTORY ENTRIES .BYTE 0F0H ;ALLOC 0 .BYTE 0 ;ALLOC 1 .WORD 64 ;DIR CHECK VECTOR SIZE .WORD 2 ;SYSTEM TRACK OFFSET .WORD 1024 ;BYTES PER SECTOR .BYTE 77 ;TRACKS PER DISK ; CONTROL BYTE .BYTE 10001011B ; BIT 0 = 8"/5" ; BIT 1 = DS/SS ; BIT 2 = SEC 0/SEC 1 ; BIT 3 = SD 1 < 128 ; BIT 4 = INV DATA ; BIT 5 = NON-CYLINDER ; BIT 6 = UNDEFINED ; BIT 7 = DD/SD .BYTE 8 ;PHYSICAL SEC/TRK ; ; SECTOR TRANSLATE TABLE ; B9XLT: .BYTE 1,2,3,4,5,6,7,8 .BYTE 25,26,27,28,29,30,31,32 .BYTE 49,50,51,52,53,54,55,56 .BYTE 9,10,11,12,13,14,15,16 .BYTE 33,34,35,36,37,38,39,40 .BYTE 57,58,59,60,61,62,63,64 .BYTE 17,18,19,20,21,22,23,24 .BYTE 41,42,43,44,45,46,47,48 .PAGE ; ; ; ; ; (SELECT = 0, MENU #4 ) ; ; MORROW MICRO-DECISIONS, 5 1/4" DD/SS ; (USES 48 TPI DRIVES) ; D0DPB: .WORD 40 ;SECTORS PER TRACK .BYTE 4 ;BLOCK SHIFT FACTOR .BYTE 15 ;BLOCK MASK .BYTE 1 ;EXTENT MASK .WORD 94 ;BLOCKS PER DISKETTE .WORD 127 ;# DIRECTORY ENTRIES .BYTE 192 ;ALLOC 0 .BYTE 0 ;ALLOC 1 .WORD 32 ;DIR CHECK VECTOR SIZE .WORD 2 ;SYSTEM TRACK OFFSET .WORD 1024 ;BYTES PER SECTOR .BYTE 40 ;TRACKS PER DISK ; CONTROL BYTE .BYTE 10000000B ;BIT 0 = 8"=1/5"=0 ;BIT 1 = DS=1/SS=0 ;BIT 2 = SEC 0 = 1/SEC 1 = 0 ;BIT 3 = SIDE 1 < 128 = 1 ;BIT 4 = INVERTED DATA = 1 ;BIT 5 = NON-CYLINDER = 1 ;BIT 6 = UNDEFINED ;BIT 7 = DD = 1/SD = 0 ; .BYTE 5 ;PHYSICAL SEC/TRK ; ; SECTOR TRANSLATION TABLES ; D0XLT: .BYTE 1,2,3,4,5,6,7,8 .BYTE 25,26,27,28,29,30,31,32 .BYTE 9,10,11,12,13,14,15,16 .BYTE 33,34,35,36,37,38,39,40 .BYTE 17,18,19,20,21,22,23,24 .PAGE ; ; ; ; ; ; (SELECT = 1, MENU #4 ) ; ; MORROW MICRO-DECISIONS, 5 1/4", DD/DS ; (USES 48 TPI DRIVES) ; D1DPB: .WORD 80 ;SECTORS PER TRACK .BYTE 4 ;BLOCK SHIFT FACTOR .BYTE 15 ;BLOCK MASK .BYTE 1 ;EXTENT MASK .WORD 194 ;BLOCKS PER DISKETTE .WORD 191 ;# DIRECTORY ENTRIES .BYTE 224 ;ALLOC 0 .BYTE 00 ;ALLOC 1 .WORD 48 ;DIR CHECK VECTOR SIZE .WORD 2 ;SYSTEM TRACK OFFSET .WORD 1024 ;BYTES PER SECTOR .BYTE 40 ;TRACKS PER DISK ; CONTROL BYTE .BYTE 10001010B ;BIT 0 = 8"=1/5"=0 ;BIT 1 = DS=1/SS=0 ;BIT 2 = SEC 0 = 1/SEC 1 = 0 ;BIT 3 = SIDE 1 < 128 = 1 ;BIT 4 = INVERTED DATA = 1 ;BIT 5 = NON-CYLINDER = 1 ;BIT 6 = UNDEFINED ;BIT 7 = DD = 1/SD = 0 ; .BYTE 5 ;PHYSICAL SEC/TRK ; ; SECTOR TRANSLATION TABLES ; D1XLT: .BYTE 1,2,3,4,5,6,7,8 .BYTE 25,26,27,28,29,30,31,32 .BYTE 9,10,11,12,13,14,15,16 .BYTE 33,34,35,36,37,38,39,40 .BYTE 17,18,19,20,21,22,23,24 .PAGE ; ; ; ; ; ; (SELECT = 2, MENU #4 ) ; ; CDL, 5 1/4", DD/SS (512 BYTE SECTORS) ; D2DPB: .WORD 32 ;SECTORS PER TRACK .BYTE 4 ;BLOCK SHIFT FACTOR .BYTE 0FH ;BLOCK MASK .BYTE 0 ;EXTENT MASK .WORD 49H ;BLOCKS PER DISKETTE .WORD 127 ;# DIRECTORY ENTRIES .BYTE 80H ;ALLOC 0 .BYTE 0 ;ALLOC 1 .WORD 32 ;DIR CHECK VECTOR SIZE .WORD 2 ;SYSTEM TRACK OFFSET .WORD 512 ;BYTES PER SECTOR .BYTE 40 ;TRACKS PER DISK ; CONTROL BYTE .BYTE 10000100B ;BIT 0 = 8"=1/5"=0 ;BIT 1 = DS=1/SS=0 ;BIT 2 = SEC 0 = 1/SEC 1 = 0 ;BIT 3 = SIDE 1 < 128 = 1 ;BIT 4 = INVERTED DATA = 1 ;BIT 5 = NON-CYLINDER = 1 ;BIT 6 = UNDEFINED ;BIT 7 = DD = 1/SD = 0 ; .BYTE 8 ;PHYSICAL SEC/TRK ; ; SECTOR TRANSLATION TABLES ; D2XLT: .BYTE 1,2,3,4,5,6,7,8 .BYTE 9,10,11,12,13,14,15,16 .BYTE 17,18,19,20,21,22,23,24 .BYTE 25,26,27,28,29,30,31,32 .PAGE ; ; ; ; ; ; (SELECT = 3, MENU #4 ) ; ; SANYO 1000, 5 1/4" DS/DD (16 SEC @ 256) ; D3DPB: .WORD 64 ;SECTORS PER TRACK .BYTE 4 ;BLOCK SHIFT FACTOR .BYTE 15 ;BLOCK MASK .BYTE 1 ;EXTENT MASK .WORD 9BH ;BLOCKS PER DISKETTE .WORD 3FH ;# DIRECTORY ENTRIES .BYTE 80H ;ALLOC 0 .BYTE 00 ;ALLOC 1 .WORD 16 ;DIR CHECK VECTOR SIZE .WORD 2 ;SYSTEM TRACK OFFSET .WORD 256 ;BYTES PER SECTOR .BYTE 40 ;TRACKS PER DISK ; CONTROL BYTE .BYTE 10001010B ;BIT 0 = 8"=1/5"=0 ;BIT 1 = DS=1/SS=0 ;BIT 2 = SEC 0 = 1/SEC 1 = 0 ;BIT 3 = SIDE 1 < 128 = 1 ;BIT 4 = INVERTED DATA = 1 ;BIT 5 = NON-CYLINDER = 1 ;BIT 6 = UNDEFINED ;BIT 7 = DD = 1/SD = 0 ; .BYTE 16 ;PHYSICAL SEC/TRK ; ; SECTOR TRANSLATION TABLES ; D3XLT: .BYTE 1,2,7,8,13,14,19,20 .BYTE 25,26,31,32,5,6,11,12 .BYTE 17,18,23,24,29,30,3,4 .BYTE 9,10,15,16,21,22,27,28 .PAGE ; ; ; ; ; EPSON, 5 1/4", DD/DS 16 SECTORS @ 256 ; (SELECT = 4, MENU #4 ) ; D4DPB: .WORD 64 ;SECTORS PER TRACK .BYTE 4 ;BLOCK SHIFT FACTOR .BYTE 0FH ;BLOCK MASK .BYTE 1 ;EXTENT MASK .WORD 97H ;BLOCKS PER DISKETE .WORD 7FH ;# DIRECTORY ENTRIES .BYTE 80H ;ALLOC 0 .BYTE 00 ;ALLOC 1 .WORD 32 ;DIR CHECK VECTOR SIZE .WORD 2 ;SYSTEM TRACK OFFSET .WORD 256 ;BYTES PER SECTOR .BYTE 40 ;TRACKS PER DISK ; CONTROL BYTE .BYTE 10001010B ;BIT 0 = 8"=1/5"=0 ;BIT 1 = DS=1/SS=0 ;BIT 2 = SEC 0 = 1/SEC 1 = 0 ;BIT 3 = SIDE 1 < 128 = 1 ;BIT 4 = INVERTED DATA = 1 ;BIT 5 = NON-CYLINDER = 1 ;BIT 6 = UNDEFINED ;BIT 7 = DD = 1/SD = 0 ; .BYTE 16 ;PHYSICAL SEC/TRK ; ; SECTOR TRANSLATION TABLES ; D4XLT: .BYTE 1,2,3,4,5,6,7,8 .BYTE 9,10,11,12,13,14,15,16 .BYTE 17,18,19,20,21,22,23,24 .BYTE 25,26,27,28,29,30,31,32 .PAGE ; ; ; ; ; EPSON, 5 1/4" DD/DS 10 SECTORS AT 512 ; (SELECT = 5, MENU #4 ) ; D5DPB: .WORD 80 ;SECTORS PER TRACK .BYTE 4 ;BLOCK SHIFT FACTOR .BYTE 15 ;BLOCK MASK .BYTE 1 ;EXTENT MASK .WORD 0BDH ;BLOCKS PER DISKETTE .WORD 127 ;# DIRECTORY ENTRIES .BYTE 80H ;ALLOC 0 .BYTE 00 ;ALLOC 1 .WORD 32 ;DIR CHECK VECTOR SIZE .WORD 2 ;SYSTEM TRACK OFFSET .WORD 512 ;BYTES PER SECTOR .BYTE 40 ;TRACKS PER DISK ; CONTROL BYTE .BYTE 10001010B ;BIT 0 = 8"=1/5"=0 ;BIT 1 = DS=1/SS=0 ;BIT 2 = SEC 0 = 1/SEC 1 = 0 ;BIT 3 = SIDE 1 < 128 = 1 ;BIT 4 = INVERTED DATA = 1 ;BIT 5 = NON-CYLINDER = 1 ;BIT 6 = UNDEFINED ;BIT 7 = DD = 1/SD = 0 ; .BYTE 10 ;PHYSICAL SEC/TRK ; ; SECTOR TRANSLATION TABLES ; D5XLT: .BYTE 1,2,3,4,5,6,7,8 .BYTE 9,10,11,12,13,14,15,16 .BYTE 17,18,19,20,21,22,23,24 .BYTE 25,26,27,28,29,30,31,32 .BYTE 33,34,35,36,37,38,39,40 .PAGE ; ; ; ; ; (SELECT = 6, MENU #4 ) ; QCS EXTENSION, 5 1/4", DD/SS 9 SECTORS @ 512 ; ; D6DPB: .WORD 24H ;SECTORS PER TRACK .BYTE 4 ;BLOCK SHIFT FACTOR .BYTE 15 ;BLOCK MASK .BYTE 0 ;EXTENT MASK .WORD 52H ;BLOCKS PER DISKETTE .WORD 127 ;# DIRECTORY ENTRIES .BYTE 80H ;ALLOC 0 .BYTE 00 ;ALLOC 1 .WORD 32 ;DIR CHECK VECTOR SIZE .WORD 2 ;SYSTEM TRACK OFFSET .WORD 512 ;BYTES PER SECTOR .BYTE 40 ;TRACKS PER DISK ; CONTROL BYTE .BYTE 10000100B ;BIT 0 = 8"=1/5"=0 ;BIT 1 = DS=1/SS=0 ;BIT 2 = SEC 0 = 1/SEC 1 = 0 ;BIT 3 = SIDE 1 < 128 = 1 ;BIT 4 = INVERTED DATA = 1 ;BIT 5 = NON-CYLINDER = 1 ;BIT 6 = UNDEFINED ;BIT 7 = DD = 1/SD = 0 ; .BYTE 9 ;PHYSICAL SEC/TRK ; ; SECTOR TRANSLATION TABLES ; D6XLT: .BYTE 1,2,3,4,5,6,7,8 .BYTE 9,10,11,12,13,14,15,16 .BYTE 17,18,19,20,21,22,23,24 .BYTE 25,26,27,28,29,30,31,32 .BYTE 33,34,35,36 .PAGE ; ; ; ; SANYO 1250 ; (SELECT = 7, MENU #4 ) ; ; ; D7DPB: .WORD 64 ;SECTORS PER TRACK .BYTE 5 ;BLOCK SHIFT FACTOR .BYTE 31 ;BLOCK MASK .BYTE 3 ;EXTENT MASK .WORD 155 ;BLOCKS PER DISKETTE .WORD 127 ;# DIRECTORY ENTRIES .BYTE 80H ;ALLOC 0 .BYTE 0 ;ALLOC 1 .WORD 32 ;DIR CHECK VECTOR SIZE .WORD 2 ;SYSTEM TRACK OFFSET .WORD 256 ;BYTES PER SECTOR .BYTE 80 ;TRACKS PER DISK ; CONTROL BYTE .BYTE 10001010B ;BIT 0 = 8"=1/5"=0 ;BIT 1 = DS=1/SS=0 ;BIT 2 = SEC 0 = 1/SEC 1 = 0 ;BIT 3 = SIDE 1 < 128 = 1 ;BIT 4 = INVERTED DATA = 1 ;BIT 5 = NON-CYLINDER = 1 ;BIT 6 = UNDEFINED ;BIT 7 = DD = 1/SD = 0 ; .BYTE 16 ;PHYSICAL SEC/TRK ; ; SECTOR TRANSLATION TABLES ; D7XLT: .BYTE 1,2,7,8,13,14,19,20 .BYTE 25,26,31,32,5,6,11,12 .BYTE 17,18,23,24,29,30,3,4 .BYTE 9,10,15,16,21,22,27,28 .PAGE ; ; ; ; ; ; (SELECT = 8, MENU #4 ) ; IBM PC (CP/M-86), 5 1/4", DD/DS ; ; D8DPB: .WORD 32 ;SECTORS PER TRACK .BYTE 4 ;BLOCK SHIFT FACTOR .BYTE 0FH ;BLOCK MASK .BYTE 1 ;EXTENT MASK .WORD 9DH ;BLOCKS PER DISKETTE .WORD 3FH ;# DIRECTORY ENTRIES .BYTE 80H ;ALLOC 0 .BYTE 00 ;ALLOC 1 .WORD 16 ;DIR CHECK VECTOR SIZE .WORD 2 ;SYSTEM TRACK OFFSET .WORD 512 ;BYTES PER SECTOR .BYTE 40 ;TRACKS PER DISK ; CONTROL BYTE .BYTE 10001000B ;BIT 0 = 8"=1/5"=0 ;BIT 1 = DS=1/SS=0 ;BIT 2 = SEC 0 = 1/SEC 1 = 0 ;BIT 3 = SIDE 1 < 128 = 1 ;BIT 4 = INVERTED DATA = 1 ;BIT 5 = NON-CYLINDER = 1 ;BIT 6 = UNDEFINED ;BIT 7 = DD = 1/SD = 0 ; .BYTE 8 ;PHYSICAL SEC/TRK ; ; SECTOR TRANSLATION TABLES ; D8XLT: .BYTE 1,2,3,4,5,6,7,8 .BYTE 9,10,11,12,13,14,15,16 .BYTE 17,18,19,20,21,22,23,24 .BYTE 25,26,27,28,29,30,31,32 .PAGE ; ; ; ; ; ; (SELECT = 9, MENU #4 ) ; ; ; D9DPB: .WORD 64 ;SECTORS PER TRACK .BYTE 5 ;BLOCK SHIFT FACTOR .BYTE 31 ;BLOCK MASK .BYTE 3 ;EXTENT MASK .WORD 149 ;BLOCKS PER DISKETTE .WORD 127 ;# DIRECTORY ENTRIES .BYTE 80H ;ALLOC 0 .BYTE 00 ;ALLOC 1 .WORD 32 ;DIR CHECK VECTOR SIZE .WORD 2 ;SYSTEM TRACK OFFSET .WORD 1024 ;BYTES PER SECTOR .BYTE 77 ;TRACKS PER DISK ; CONTROL BYTE .BYTE 10000001B ;BIT 0 = 8"=1/5"=0 ;BIT 1 = DS=1/SS=0 ;BIT 2 = SEC 0 = 1/SEC 1 = 0 ;BIT 3 = SIDE 1 < 128 = 1 ;BIT 4 = INVERTED DATA = 1 ;BIT 5 = NON-CYLINDER = 1 ;BIT 6 = UNDEFINED ;BIT 7 = DD = 1/SD = 0 ; .BYTE 8 ;PHYSICAL SEC/TRK ; ; SECTOR TRANSLATION TABLES ; D9XLT: .BYTE 1,2,3,4,5,6,7,8 .BYTE 17,18,19,20,21,22,23,24 .BYTE 33,34,35,36,37,38,39,40 .BYTE 49,50,51,52,53,54,55,56 .BYTE 9,10,11,12,13,14,15,16 .BYTE 25,26,27,28,29,30,31,32 .BYTE 41,42,43,44,45,46,47,48 .BYTE 57,58,59,60,61,62,63,64 .PAGE ; ; ; ; ; ZENITH Z-100, 5 1/4", SD/SS ; (SELECT = 0, MENU #5 ) ; ; ; E0DPB: .WORD 16 ;SECTORS PER TRACK .BYTE 3 ;BLOCK SHIFT FACTOR .BYTE 7 ;BLOCK MASK .BYTE 0 ;EXTENT MASK .WORD 77 ;BLOCKS PER DISKETTE .WORD 63 ;# DIRECTORY ENTRIES .BYTE 0C0H ;ALLOC 0 .BYTE 00 ;ALLOC 1 .WORD 16 ;DIR CHECK VECTOR SIZE .WORD 2 ;SYSTEM TRACK OFFSET .WORD 128 ;BYTES PER SECTOR .BYTE 40 ;TRACKS PER DISK ; CONTROL BYTE .BYTE 00000000B ;BIT 0 = 8"=1/5"=0 ;BIT 1 = DS=1/SS=0 ;BIT 2 = SEC 0 = 1/SEC 1 = 0 ;BIT 3 = SIDE 1 < 128 = 1 ;BIT 4 = INVERTED DATA = 1 ;BIT 5 = NON-CYLINDER = 1 ;BIT 6 = UNDEFINED ;BIT 7 = DD = 1/SD = 0 ; .BYTE 16 ;PHYSICAL SEC/TRK ; ; SECTOR TRANSLATION TABLES ; E0XLT: .BYTE 1,2,3,4,5,6,7,8 .BYTE 9,10,11,12,13,14,15,16 .PAGE ; ; ; ; ; HEATH/NEC 5 1/4" DD/SS 16 SECTORS @ 512 BYTES ; (SELECT = 1, MENU #5 ) ; ; ; E1DPB: .WORD 32 ;SECTORS PER TRACK .BYTE 3 ;BLOCK SHIFT FACTOR .BYTE 7 ;BLOCK MASK .BYTE 0 ;EXTENT MASK .WORD 97H ;BLOCKS PER DISKETTE .WORD 3FH ;# DIRECTORY ENTRIES .BYTE 0C0H ;ALLOC 0 .BYTE 00 ;ALLOC 1 .WORD 15 ;DIR CHECK VECTOR SIZE .WORD 2 ;SYSTEM TRACK OFFSET .WORD 256 ;BYTES PER SECTOR .BYTE 40 ;TRACKS PER DISK ; CONTROL BYTE .BYTE 10000000B ;BIT 0 = 8"=1/5"=0 ;BIT 1 = DS=1/SS=0 ;BIT 2 = SEC 0 = 1/SEC 1 = 0 ;BIT 3 = SIDE 1 < 128 = 1 ;BIT 4 = INVERTED DATA = 1 ;BIT 5 = NON-CYLINDER = 1 ;BIT 6 = UNDEFINED ;BIT 7 = DD = 1/SD = 0 ; .BYTE 16 ;PHYSICAL SEC/TRK ; ; SECTOR TRANSLATION TABLES ; E1XLT: .BYTE 1,2,3,4,5,6,7,8 .BYTE 9,10,11,12,13,14,15,16 .BYTE 17,18,19,20,21,22,23,24 .BYTE 25,26,27,28,29,30,31,32 .PAGE ; ; ; HEATH 5 1/4" SD/SS 10 @ 256 ; (SELECT = 2, MENU #5 ) ; ; ; E2DPB: .WORD 14H ;SECTORS PER TRACK .BYTE 3 ;BLOCK SHIFT FACTOR .BYTE 7 ;BLOCK MASK .BYTE 0 ;EXTENT MASK .WORD 5BH ;BLOCKS PER DISKETTE .WORD 3FH ;# DIRECTORY ENTRIES .BYTE 80H ;ALLOC 0 .BYTE 00 ;ALLOC 1 .WORD 15 ;DIR CHECK VECTOR SIZE .WORD 2 ;SYSTEM TRACK OFFSET .WORD 256 ;BYTES PER SECTOR .BYTE 40 ;TRACKS PER DISK ; CONTROL BYTE .BYTE 00000000B ;BIT 0 = 8"=1/5"=0 ;BIT 1 = DS=1/SS=0 ;BIT 2 = SEC 0 = 1/SEC 1 = 0 ;BIT 3 = SIDE 1 < 128 = 1 ;BIT 4 = INVERTED DATA = 1 ;BIT 5 = NON-CYLINDER = 1 ;BIT 6 = UNDEFINED ;BIT 7 = DD = 1/SD = 0 ; .BYTE 10 ;PHYSICAL SEC/TRK ; ; SECTOR TRANSLATION TABLES ; E2XLT: .BYTE 1,2,3,4,5,6,7,8 .BYTE 9,10,11,12,13,14,15,16 .BYTE 17,18,19,20 .PAGE ; ; ; ; ; ITHACA INTERSYSTEMS, 5 1/4" DD/DS 9 SECTORS @ 512 ; (SELECT = 3, MENU #5 ) ; E3DPB: .WORD 72 ;SECTORS PER TRACK .BYTE 4 ;BLOCK SHIFT FACTOR .BYTE 15 ;BLOCK MASK .BYTE 1 ;EXTENT MASK .WORD 0AAH ;BLOCKS PER DISKETTE .WORD 3FH ;# DIRECTORY ENTRIES .BYTE 80H ;ALLOC 0 .BYTE 00 ;ALLOC 1 .WORD 15 ;DIR CHECK VECTOR SIZE .WORD 2 ;SYSTEM TRACK OFFSET .WORD 512 ;BYTES PER SECTOR .BYTE 40 ;TRACKS PER DISK ; CONTROL BYTE .BYTE 10001010B ;BIT 0 = 8"=1/5"=0 ;BIT 1 = DS=1/SS=0 ;BIT 2 = SEC 0 = 1/SEC 1 = 0 ;BIT 3 = SIDE 1 < 128 = 1 ;BIT 4 = INVERTED DATA = 1 ;BIT 5 = NON-CYLINDER = 1 ;BIT 6 = UNDEFINED ;BIT 7 = DD = 1/SD = 0 ; .BYTE 9 ;PHYSICAL SEC/TRK ; ; SECTOR TRANSLATION TABLES ; E3XLT: .BYTE 1,2,3,4,5,6,7,8 .BYTE 9,10,11,12,13,14,15,16 .BYTE 17,18,19,20,21,22,23,24 .BYTE 25,26,27,28,29,30,31,32 .BYTE 33,34,35,36 .PAGE ; ; ; TELEVIDEO, 5 1/4" DD/DS 18 SECTORS @ 256 ; (SELECT = 4, MENU #5 ) ; ; ; E4DPB: .WORD 72 ;SECTORS PER TRACK .BYTE 4 ;BLOCK SHIFT FACTOR .BYTE 15 ;BLOCK MASK .BYTE 0 ;EXTENT MASK .WORD 0AAH ;BLOCKS PER DISKETTE .WORD 3FH ;# DIRECTORY ENTRIES .BYTE 80H ;ALLOC 0 .BYTE 00 ;ALLOC 1 .WORD 15 ;DIR CHECK VECTOR SIZE .WORD 2 ;SYSTEM TRACK OFFSET .WORD 256 ;BYTES PER SECTOR .BYTE 40 ;TRACKS PER DISK ; CONTROL BYTE .BYTE 10001010B ;BIT 0 = 8"=1/5"=0 ;BIT 1 = DS=1/SS=0 ;BIT 2 = SEC 0 = 1/SEC 1 = 0 ;BIT 3 = SIDE 1 < 128 = 1 ;BIT 4 = INVERTED DATA = 1 ;BIT 5 = NON-CYLINDER = 1 ;BIT 6 = UNDEFINED ;BIT 7 = DD = 1/SD = 0 ; .BYTE 18 ;PHYSICAL SEC/TRK ; ; SECTOR TRANSLATION TABLES ; E4XLT: .BYTE 1,2,3,4,5,6,7,8 .BYTE 9,10,11,12,13,14,15,16 .BYTE 17,18,19,20,21,22,23,24 .BYTE 25,26,27,28,29,30,31,32 .BYTE 33,34,35,36 .PAGE ; ; ; ; ; ; (SELECT = 5, MENU #5 ) ; ; ; E5DPB: .WORD 64 ;SECTORS PER TRACK .BYTE 5 ;BLOCK SHIFT FACTOR .BYTE 31 ;BLOCK MASK .BYTE 3 ;EXTENT MASK .WORD 149 ;BLOCKS PER DISKETTE .WORD 127 ;# DIRECTORY ENTRIES .BYTE 80H ;ALLOC 0 .BYTE 00 ;ALLOC 1 .WORD 32 ;DIR CHECK VECTOR SIZE .WORD 2 ;SYSTEM TRACK OFFSET .WORD 1024 ;BYTES PER SECTOR .BYTE 77 ;TRACKS PER DISK ; CONTROL BYTE .BYTE 10000001B ;BIT 0 = 8"=1/5"=0 ;BIT 1 = DS=1/SS=0 ;BIT 2 = SEC 0 = 1/SEC 1 = 0 ;BIT 3 = SIDE 1 < 128 = 1 ;BIT 4 = INVERTED DATA = 1 ;BIT 5 = NON-CYLINDER = 1 ;BIT 6 = UNDEFINED ;BIT 7 = DD = 1/SD = 0 ; .BYTE 8 ;PHYSICAL SEC/TRK ; ; SECTOR TRANSLATION TABLES ; E5XLT: .BYTE 1,2,3,4,5,6,7,8 .BYTE 17,18,19,20,21,22,23,24 .BYTE 33,34,35,36,37,38,39,40 .BYTE 49,50,51,52,53,54,55,56 .BYTE 9,10,11,12,13,14,15,16 .BYTE 25,26,27,28,29,30,31,32 .BYTE 41,42,43,44,45,46,47,48 .BYTE 57,58,59,60,61,62,63,64 .PAGE ; ; ; ; ; ; (SELECT = 6, MENU #5 ) ; ; ; E6DPB: .WORD 64 ;SECTORS PER TRACK .BYTE 5 ;BLOCK SHIFT FACTOR .BYTE 31 ;BLOCK MASK .BYTE 3 ;EXTENT MASK .WORD 149 ;BLOCKS PER DISKETTE .WORD 127 ;# DIRECTORY ENTRIES .BYTE 80H ;ALLOC 0 .BYTE 00 ;ALLOC 1 .WORD 32 ;DIR CHECK VECTOR SIZE .WORD 2 ;SYSTEM TRACK OFFSET .WORD 1024 ;BYTES PER SECTOR .BYTE 77 ;TRACKS PER DISK ; CONTROL BYTE .BYTE 10000001B ;BIT 0 = 8"=1/5"=0 ;BIT 1 = DS=1/SS=0 ;BIT 2 = SEC 0 = 1/SEC 1 = 0 ;BIT 3 = SIDE 1 < 128 = 1 ;BIT 4 = INVERTED DATA = 1 ;BIT 5 = NON-CYLINDER = 1 ;BIT 6 = UNDEFINED ;BIT 7 = DD = 1/SD = 0 ; .BYTE 8 ;PHYSICAL SEC/TRK ; ; SECTOR TRANSLATION TABLES ; E6XLT: .BYTE 1,2,3,4,5,6,7,8 .BYTE 17,18,19,20,21,22,23,24 .BYTE 33,34,35,36,37,38,39,40 .BYTE 49,50,51,52,53,54,55,56 .BYTE 9,10,11,12,13,14,15,16 .BYTE 25,26,27,28,29,30,31,32 .BYTE 41,42,43,44,45,46,47,48 .BYTE 57,58,59,60,61,62,63,64 .PAGE ; ; ; ; ; ; (SELECT = 7, MENU #5 ) ; ; ; E7DPB: .WORD 64 ;SECTORS PER TRACK .BYTE 5 ;BLOCK SHIFT FACTOR .BYTE 31 ;BLOCK MASK .BYTE 3 ;EXTENT MASK .WORD 149 ;BLOCKS PER DISKETTE .WORD 127 ;# DIRECTORY ENTRIES .BYTE 80H ;ALLOC 0 .BYTE 00 ;ALLOC 1 .WORD 32 ;DIR CHECK VECTOR SIZE .WORD 2 ;SYSTEM TRACK OFFSET .WORD 1024 ;BYTES PER SECTOR .BYTE 77 ;TRACKS PER DISK ; CONTROL BYTE .BYTE 10000001B ;BIT 0 = 8"=1/5"=0 ;BIT 1 = DS=1/SS=0 ;BIT 2 = SEC 0 = 1/SEC 1 = 0 ;BIT 3 = SIDE 1 < 128 = 1 ;BIT 4 = INVERTED DATA = 1 ;BIT 5 = NON-CYLINDER = 1 ;BIT 6 = UNDEFINED ;BIT 7 = DD = 1/SD = 0 ; .BYTE 8 ;PHYSICAL SEC/TRK ; ; SECTOR TRANSLATION TABLES ; E7XLT: .BYTE 1,2,3,4,5,6,7,8 .BYTE 17,18,19,20,21,22,23,24 .BYTE 33,34,35,36,37,38,39,40 .BYTE 49,50,51,52,53,54,55,56 .BYTE 9,10,11,12,13,14,15,16 .BYTE 25,26,27,28,29,30,31,32 .BYTE 41,42,43,44,45,46,47,48 .BYTE 57,58,59,60,61,62,63,64 .PAGE ; ; ; ; ; ; (SELECT = 8, MENU #5 ) ; ; ; E8DPB: .WORD 64 ;SECTORS PER TRACK .BYTE 5 ;BLOCK SHIFT FACTOR .BYTE 31 ;BLOCK MASK .BYTE 3 ;EXTENT MASK .WORD 149 ;BLOCKS PER DISKETTE .WORD 127 ;# DIRECTORY ENTRIES .BYTE 80H ;ALLOC 0 .BYTE 00 ;ALLOC 1 .WORD 32 ;DIR CHECK VECTOR SIZE .WORD 2 ;SYSTEM TRACK OFFSET .WORD 1024 ;BYTES PER SECTOR .BYTE 77 ;TRACKS PER DISK ; CONTROL BYTE .BYTE 10000001B ;BIT 0 = 8"=1/5"=0 ;BIT 1 = DS=1/SS=0 ;BIT 2 = SEC 0 = 1/SEC 1 = 0 ;BIT 3 = SIDE 1 < 128 = 1 ;BIT 4 = INVERTED DATA = 1 ;BIT 5 = NON-CYLINDER = 1 ;BIT 6 = UNDEFINED ;BIT 7 = DD = 1/SD = 0 ; .BYTE 8 ;PHYSICAL SEC/TRK ; ; SECTOR TRANSLATION TABLES ; E8XLT: .BYTE 1,2,3,4,5,6,7,8 .BYTE 17,18,19,20,21,22,23,24 .BYTE 33,34,35,36,37,38,39,40 .BYTE 49,50,51,52,53,54,55,56 .BYTE 9,10,11,12,13,14,15,16 .BYTE 25,26,27,28,29,30,31,32 .BYTE 41,42,43,44,45,46,47,48 .BYTE 57,58,59,60,61,62,63,64 .PAGE ; ; ; ; ; ; (SELECT = 9, MENU #5 ) ; ; ; E9DPB: .WORD 64 ;SECTORS PER TRACK .BYTE 5 ;BLOCK SHIFT FACTOR .BYTE 31 ;BLOCK MASK .BYTE 3 ;EXTENT MASK .WORD 149 ;BLOCKS PER DISKETTE .WORD 127 ;# DIRECTORY ENTRIES .BYTE 80H ;ALLOC 0 .BYTE 00 ;ALLOC 1 .WORD 32 ;DIR CHECK VECTOR SIZE .WORD 2 ;SYSTEM TRACK OFFSET .WORD 1024 ;BYTES PER SECTOR .BYTE 77 ;TRACKS PER DISK ; CONTROL BYTE .BYTE 10000001B ;BIT 0 = 8"=1/5"=0 ;BIT 1 = DS=1/SS=0 ;BIT 2 = SEC 0 = 1/SEC 1 = 0 ;BIT 3 = SIDE 1 < 128 = 1 ;BIT 4 = INVERTED DATA = 1 ;BIT 5 = NON-CYLINDER = 1 ;BIT 6 = UNDEFINED ;BIT 7 = DD = 1/SD = 0 ; .BYTE 8 ;PHYSICAL SEC/TRK ; ; SECTOR TRANSLATION TABLES ; E9XLT: .BYTE 1,2,3,4,5,6,7,8 .BYTE 17,18,19,20,21,22,23,24 .BYTE 33,34,35,36,37,38,39,40 .BYTE 49,50,51,52,53,54,55,56 .BYTE 9,10,11,12,13,14,15,16 .BYTE 25,26,27,28,29,30,31,32 .BYTE 41,42,43,44,45,46,47,48 .BYTE 57,58,59,60,61,62,63,64 .PAGE ; ; ; ; ; ; (SELECT = 0, MENU #6 ) ; ; ; F0DPB: .WORD 64 ;SECTORS PER TRACK .BYTE 5 ;BLOCK SHIFT FACTOR .BYTE 31 ;BLOCK MASK .BYTE 3 ;EXTENT MASK .WORD 149 ;BLOCKS PER DISKETTE .WORD 127 ;# DIRECTORY ENTRIES .BYTE 80H ;ALLOC 0 .BYTE 00 ;ALLOC 1 .WORD 32 ;DIR CHECK VECTOR SIZE .WORD 2 ;SYSTEM TRACK OFFSET .WORD 1024 ;BYTES PER SECTOR .BYTE 77 ;TRACKS PER DISK ; CONTROL BYTE .BYTE 10000001B ;BIT 0 = 8"=1/5"=0 ;BIT 1 = DS=1/SS=0 ;BIT 2 = SEC 0 = 1/SEC 1 = 0 ;BIT 3 = SIDE 1 < 128 = 1 ;BIT 4 = INVERTED DATA = 1 ;BIT 5 = NON-CYLINDER = 1 ;BIT 6 = UNDEFINED ;BIT 7 = DD = 1/SD = 0 ; .BYTE 8 ;PHYSICAL SEC/TRK ; ; SECTOR TRANSLATION TABLES ; F0XLT: .BYTE 1,2,3,4,5,6,7,8 .BYTE 17,18,19,20,21,22,23,24 .BYTE 33,34,35,36,37,38,39,40 .BYTE 49,50,51,52,53,54,55,56 .BYTE 9,10,11,12,13,14,15,16 .BYTE 25,26,27,28,29,30,31,32 .BYTE 41,42,43,44,45,46,47,48 .BYTE 57,58,59,60,61,62,63,64 .PAGE ; ; ; ; ; ; (SELECT = 1, MENU #6 ) ; ; ; F1DPB: .WORD 64 ;SECTORS PER TRACK .BYTE 5 ;BLOCK SHIFT FACTOR .BYTE 31 ;BLOCK MASK .BYTE 3 ;EXTENT MASK .WORD 149 ;BLOCKS PER DISKETTE .WORD 127 ;# DIRECTORY ENTRIES .BYTE 80H ;ALLOC 0 .BYTE 00 ;ALLOC 1 .WORD 32 ;DIR CHECK VECTOR SIZE .WORD 2 ;SYSTEM TRACK OFFSET .WORD 1024 ;BYTES PER SECTOR .BYTE 77 ;TRACKS PER DISK ; CONTROL BYTE .BYTE 10000001B ;BIT 0 = 8"=1/5"=0 ;BIT 1 = DS=1/SS=0 ;BIT 2 = SEC 0 = 1/SEC 1 = 0 ;BIT 3 = SIDE 1 < 128 = 1 ;BIT 4 = INVERTED DATA = 1 ;BIT 5 = NON-CYLINDER = 1 ;BIT 6 = UNDEFINED ;BIT 7 = DD = 1/SD = 0 ; .BYTE 8 ;PHYSICAL SEC/TRK ; ; SECTOR TRANSLATION TABLES ; F1XLT: .BYTE 1,2,3,4,5,6,7,8 .BYTE 17,18,19,20,21,22,23,24 .BYTE 33,34,35,36,37,38,39,40 .BYTE 49,50,51,52,53,54,55,56 .BYTE 9,10,11,12,13,14,15,16 .BYTE 25,26,27,28,29,30,31,32 .BYTE 41,42,43,44,45,46,47,48 .BYTE 57,58,59,60,61,62,63,64 .PAGE ; ; ; ; ; ; (SELECT = 2, MENU #6 ) ; ; ; F2DPB: .WORD 64 ;SECTORS PER TRACK .BYTE 5 ;BLOCK SHIFT FACTOR .BYTE 31 ;BLOCK MASK .BYTE 3 ;EXTENT MASK .WORD 149 ;BLOCKS PER DISKETTE .WORD 127 ;# DIRECTORY ENTRIES .BYTE 80H ;ALLOC 0 .BYTE 00 ;ALLOC 1 .WORD 32 ;DIR CHECK VECTOR SIZE .WORD 2 ;SYSTEM TRACK OFFSET .WORD 1024 ;BYTES PER SECTOR .BYTE 77 ;TRACKS PER DISK ; CONTROL BYTE .BYTE 10000001B ;BIT 0 = 8"=1/5"=0 ;BIT 1 = DS=1/SS=0 ;BIT 2 = SEC 0 = 1/SEC 1 = 0 ;BIT 3 = SIDE 1 < 128 = 1 ;BIT 4 = INVERTED DATA = 1 ;BIT 5 = NON-CYLINDER = 1 ;BIT 6 = UNDEFINED ;BIT 7 = DD = 1/SD = 0 ; .BYTE 8 ;PHYSICAL SEC/TRK ; ; SECTOR TRANSLATION TABLES ; F2XLT: .BYTE 1,2,3,4,5,6,7,8 .BYTE 17,18,19,20,21,22,23,24 .BYTE 33,34,35,36,37,38,39,40 .BYTE 49,50,51,52,53,54,55,56 .BYTE 9,10,11,12,13,14,15,16 .BYTE 25,26,27,28,29,30,31,32 .BYTE 41,42,43,44,45,46,47,48 .BYTE 57,58,59,60,61,62,63,64 .PAGE ; ; ; ; ; ; (SELECT = 3, MENU #6 ) ; ; ; F3DPB: .WORD 64 ;SECTORS PER TRACK .BYTE 5 ;BLOCK SHIFT FACTOR .BYTE 31 ;BLOCK MASK .BYTE 3 ;EXTENT MASK .WORD 149 ;BLOCKS PER DISKETTE .WORD 127 ;# DIRECTORY ENTRIES .BYTE 80H ;ALLOC 0 .BYTE 00 ;ALLOC 1 .WORD 32 ;DIR CHECK VECTOR SIZE .WORD 2 ;SYSTEM TRACK OFFSET .WORD 1024 ;BYTES PER SECTOR .BYTE 77 ;TRACKS PER DISK ; CONTROL BYTE .BYTE 10000001B ;BIT 0 = 8"=1/5"=0 ;BIT 1 = DS=1/SS=0 ;BIT 2 = SEC 0 = 1/SEC 1 = 0 ;BIT 3 = SIDE 1 < 128 = 1 ;BIT 4 = INVERTED DATA = 1 ;BIT 5 = NON-CYLINDER = 1 ;BIT 6 = UNDEFINED ;BIT 7 = DD = 1/SD = 0 ; .BYTE 8 ;PHYSICAL SEC/TRK ; ; SECTOR TRANSLATION TABLES ; F3XLT: .BYTE 1,2,3,4,5,6,7,8 .BYTE 17,18,19,20,21,22,23,24 .BYTE 33,34,35,36,37,38,39,40 .BYTE 49,50,51,52,53,54,55,56 .BYTE 9,10,11,12,13,14,15,16 .BYTE 25,26,27,28,29,30,31,32 .BYTE 41,42,43,44,45,46,47,48 .BYTE 57,58,59,60,61,62,63,64 .PAGE ; ; ; ; ; ; (SELECT = 4, MENU #6 ) ; ; ; F4DPB: .WORD 64 ;SECTORS PER TRACK .BYTE 5 ;BLOCK SHIFT FACTOR .BYTE 31 ;BLOCK MASK .BYTE 3 ;EXTENT MASK .WORD 149 ;BLOCKS PER DISKETTE .WORD 127 ;# DIRECTORY ENTRIES .BYTE 80H ;ALLOC 0 .BYTE 00 ;ALLOC 1 .WORD 32 ;DIR CHECK VECTOR SIZE .WORD 2 ;SYSTEM TRACK OFFSET .WORD 1024 ;BYTES PER SECTOR .BYTE 77 ;TRACKS PER DISK ; CONTROL BYTE .BYTE 10000001B ;BIT 0 = 8"=1/5"=0 ;BIT 1 = DS=1/SS=0 ;BIT 2 = SEC 0 = 1/SEC 1 = 0 ;BIT 3 = SIDE 1 < 128 = 1 ;BIT 4 = INVERTED DATA = 1 ;BIT 5 = NON-CYLINDER = 1 ;BIT 6 = UNDEFINED ;BIT 7 = DD = 1/SD = 0 ; .BYTE 8 ;PHYSICAL SEC/TRK ; ; SECTOR TRANSLATION TABLES ; F4XLT: .BYTE 1,2,3,4,5,6,7,8 .BYTE 17,18,19,20,21,22,23,24 .BYTE 33,34,35,36,37,38,39,40 .BYTE 49,50,51,52,53,54,55,56 .BYTE 9,10,11,12,13,14,15,16 .BYTE 25,26,27,28,29,30,31,32 .BYTE 41,42,43,44,45,46,47,48 .BYTE 57,58,59,60,61,62,63,64 .PAGE ; ; ; ; ; ; (SELECT = 5, MENU #6 ) ; ; ; F5DPB: .WORD 64 ;SECTORS PER TRACK .BYTE 5 ;BLOCK SHIFT FACTOR .BYTE 31 ;BLOCK MASK .BYTE 3 ;EXTENT MASK .WORD 149 ;BLOCKS PER DISKETTE .WORD 127 ;# DIRECTORY ENTRIES .BYTE 80H ;ALLOC 0 .BYTE 00 ;ALLOC 1 .WORD 32 ;DIR CHECK VECTOR SIZE .WORD 2 ;SYSTEM TRACK OFFSET .WORD 1024 ;BYTES PER SECTOR .BYTE 77 ;TRACKS PER DISK ; CONTROL BYTE .BYTE 10000001B ;BIT 0 = 8"=1/5"=0 ;BIT 1 = DS=1/SS=0 ;BIT 2 = SEC 0 = 1/SEC 1 = 0 ;BIT 3 = SIDE 1 < 128 = 1 ;BIT 4 = INVERTED DATA = 1 ;BIT 5 = NON-CYLINDER = 1 ;BIT 6 = UNDEFINED ;BIT 7 = DD = 1/SD = 0 ; .BYTE 8 ;PHYSICAL SEC/TRK ; ; SECTOR TRANSLATION TABLES ; F5XLT: .BYTE 1,2,3,4,5,6,7,8 .BYTE 17,18,19,20,21,22,23,24 .BYTE 33,34,35,36,37,38,39,40 .BYTE 49,50,51,52,53,54,55,56 .BYTE 9,10,11,12,13,14,15,16 .BYTE 25,26,27,28,29,30,31,32 .BYTE 41,42,43,44,45,46,47,48 .BYTE 57,58,59,60,61,62,63,64 .PAGE ; ; ; ; ; ; (SELECT = 6, MENU #6 ) ; ; ; F6DPB: .WORD 64 ;SECTORS PER TRACK .BYTE 5 ;BLOCK SHIFT FACTOR .BYTE 31 ;BLOCK MASK .BYTE 3 ;EXTENT MASK .WORD 149 ;BLOCKS PER DISKETTE .WORD 127 ;# DIRECTORY ENTRIES .BYTE 80H ;ALLOC 0 .BYTE 00 ;ALLOC 1 .WORD 32 ;DIR CHECK VECTOR SIZE .WORD 2 ;SYSTEM TRACK OFFSET .WORD 1024 ;BYTES PER SECTOR .BYTE 77 ;TRACKS PER DISK ; CONTROL BYTE .BYTE 10000001B ;BIT 0 = 8"=1/5"=0 ;BIT 1 = DS=1/SS=0 ;BIT 2 = SEC 0 = 1/SEC 1 = 0 ;BIT 3 = SIDE 1 < 128 = 1 ;BIT 4 = INVERTED DATA = 1 ;BIT 5 = NON-CYLINDER = 1 ;BIT 6 = UNDEFINED ;BIT 7 = DD = 1/SD = 0 ; .BYTE 8 ;PHYSICAL SEC/TRK ; ; SECTOR TRANSLATION TABLES ; F6XLT: .BYTE 1,2,3,4,5,6,7,8 .BYTE 17,18,19,20,21,22,23,24 .BYTE 33,34,35,36,37,38,39,40 .BYTE 49,50,51,52,53,54,55,56 .BYTE 9,10,11,12,13,14,15,16 .BYTE 25,26,27,28,29,30,31,32 .BYTE 41,42,43,44,45,46,47,48 .BYTE 57,58,59,60,61,62,63,64 .PAGE ; ; ; ; ; ; (SELECT = 7, MENU #6 ) ; ; ; F7DPB: .WORD 64 ;SECTORS PER TRACK .BYTE 5 ;BLOCK SHIFT FACTOR .BYTE 31 ;BLOCK MASK .BYTE 3 ;EXTENT MASK .WORD 149 ;BLOCKS PER DISKETTE .WORD 127 ;# DIRECTORY ENTRIES .BYTE 80H ;ALLOC 0 .BYTE 00 ;ALLOC 1 .WORD 32 ;DIR CHECK VECTOR SIZE .WORD 2 ;SYSTEM TRACK OFFSET .WORD 1024 ;BYTES PER SECTOR .BYTE 77 ;TRACKS PER DISK ; CONTROL BYTE .BYTE 10000001B ;BIT 0 = 8"=1/5"=0 ;BIT 1 = DS=1/SS=0 ;BIT 2 = SEC 0 = 1/SEC 1 = 0 ;BIT 3 = SIDE 1 < 128 = 1 ;BIT 4 = INVERTED DATA = 1 ;BIT 5 = NON-CYLINDER = 1 ;BIT 6 = UNDEFINED ;BIT 7 = DD = 1/SD = 0 ; .BYTE 8 ;PHYSICAL SEC/TRK ; ; SECTOR TRANSLATION TABLES ; F7XLT: .BYTE 1,2,3,4,5,6,7,8 .BYTE 17,18,19,20,21,22,23,24 .BYTE 33,34,35,36,37,38,39,40 .BYTE 49,50,51,52,53,54,55,56 .BYTE 9,10,11,12,13,14,15,16 .BYTE 25,26,27,28,29,30,31,32 .BYTE 41,42,43,44,45,46,47,48 .BYTE 57,58,59,60,61,62,63,64 .PAGE ; ; ; ; ; ; (SELECT = 8, MENU #6 ) ; ; ; F8DPB: .WORD 64 ;SECTORS PER TRACK .BYTE 5 ;BLOCK SHIFT FACTOR .BYTE 31 ;BLOCK MASK .BYTE 3 ;EXTENT MASK .WORD 149 ;BLOCKS PER DISKETTE .WORD 127 ;# DIRECTORY ENTRIES .BYTE 80H ;ALLOC 0 .BYTE 00 ;ALLOC 1 .WORD 32 ;DIR CHECK VECTOR SIZE .WORD 2 ;SYSTEM TRACK OFFSET .WORD 1024 ;BYTES PER SECTOR .BYTE 77 ;TRACKS PER DISK ; CONTROL BYTE .BYTE 10000001B ;BIT 0 = 8"=1/5"=0 ;BIT 1 = DS=1/SS=0 ;BIT 2 = SEC 0 = 1/SEC 1 = 0 ;BIT 3 = SIDE 1 < 128 = 1 ;BIT 4 = INVERTED DATA = 1 ;BIT 5 = NON-CYLINDER = 1 ;BIT 6 = UNDEFINED ;BIT 7 = DD = 1/SD = 0 ; .BYTE 8 ;PHYSICAL SEC/TRK ; ; SECTOR TRANSLATION TABLES ; F8XLT: .BYTE 1,2,3,4,5,6,7,8 .BYTE 17,18,19,20,21,22,23,24 .BYTE 33,34,35,36,37,38,39,40 .BYTE 49,50,51,52,53,54,55,56 .BYTE 9,10,11,12,13,14,15,16 .BYTE 25,26,27,28,29,30,31,32 .BYTE 41,42,43,44,45,46,47,48 .BYTE 57,58,59,60,61,62,63,64 .PAGE ; ; ; ; ; ; (SELECT = 9, MENU #6 ) ; ; ; F9DPB: .WORD 64 ;SECTORS PER TRACK .BYTE 5 ;BLOCK SHIFT FACTOR .BYTE 31 ;BLOCK MASK .BYTE 3 ;EXTENT MASK .WORD 149 ;BLOCKS PER DISKETTE .WORD 127 ;# DIRECTORY ENTRIES .BYTE 80H ;ALLOC 0 .BYTE 00 ;ALLOC 1 .WORD 32 ;DIR CHECK VECTOR SIZE .WORD 2 ;SYSTEM TRACK OFFSET .WORD 1024 ;BYTES PER SECTOR .BYTE 77 ;TRACKS PER DISK ; CONTROL BYTE .BYTE 10000001B ;BIT 0 = 8"=1/5"=0 ;BIT 1 = DS=1/SS=0 ;BIT 2 = SEC 0 = 1/SEC 1 = 0 ;BIT 3 = SIDE 1 < 128 = 1 ;BIT 4 = INVERTED DATA = 1 ;BIT 5 = NON-CYLINDER = 1 ;BIT 6 = UNDEFINED ;BIT 7 = DD = 1/SD = 0 ; .BYTE 8 ;PHYSICAL SEC/TRK ; ; SECTOR TRANSLATION TABLES ; F9XLT: .BYTE 1,2,3,4,5,6,7,8 .BYTE 17,18,19,20,21,22,23,24 .BYTE 33,34,35,36,37,38,39,40 .BYTE 49,50,51,52,53,54,55,56 .BYTE 9,10,11,12,13,14,15,16 .BYTE 25,26,27,28,29,30,31,32 .BYTE 41,42,43,44,45,46,47,48 .BYTE 57,58,59,60,61,62,63,64 .PAGE ; ; ; SIGN-ON MESSAGE ; MSG: .BYTE CLRSKN .BYTE CR,LF .ASCII 'GSR COMPUTERS FORMAT PROGRAM, VERSION III.7' .BYTE CR,LF,LF .ASCII 'ENTER COMMAND' .BYTE CR,LF .ASCII 'A = READ CPM IMAGE FROM FILE ON DISK' .BYTE CR,LF .ASCII ' (MUST ENTER FILE NAME AT START OF EXECUTION)' .BYTE CR,LF .ASCII ' (E.G. FMTIII CPM60.COM )' .BYTE CR,LF .ASCII 'C = COPY CPM IMAGE TO DISK,(USE R OR A COMMAND FIRST)' .BYTE CR,LF .ASCII 'D = DESIGNATE TABLE FOR DISK ACCESS' .BYTE CR,LF .ASCII 'F = FORMAT ALL TRACKS OF DISK' .BYTE CR,LF .ASCII 'G = FORMAT DISK AND WRITE CPM TO DISK' .BYTE CR,LF .ASCII ' (USES PREVIOUSLY DEFINED PARAMETERS)' .BYTE CR,LF .ASCII ' (MUST USE R OR A COMMAND FIRST)' .BYTE CR,LF .ASCII 'P = FORMAT DISK USING PREVIOUSLY ENTERED PARAMETERS' .BYTE CR,LF .ASCII 'R = READ CPM IMAGE FROM DISK' .BYTE CR,LF .ASCII 'T = FORMAT TRACK 0 ONLY' .BYTE CR,LF .ASCII 'V = VERIFY ALL SECTORS OF DISK.' .BYTE CR,LF .ASCII 'W = WRITE TABLES TO DISK ONLY' .BYTE CR,LF .ASCII '? = ON LINE HELP FOR ABOVE COMMANDS' .BYTE CR,LF .ASCII 'X = RETURN TO CPM' .BYTE CR,LF,DS .PAGE ; MSG1: .BYTE CLRSKN .BYTE CR,LF,LF .ASCII 'MENU #1, SELECT DESIRED FORMAT' .BYTE CR,LF .ASCII '0 = 5 1/4, 40 TRACKS, SINGLE DENSITY, SINGLE SIDE' .BYTE CR,LF .ASCII '1 = 5 1/4, 35 TRACKS, SINGLE DENSITY, SINGLE SIDE' .BYTE CR,LF .ASCII '2 = 5 1/4, 40 TRACKS, DOUBLE DENSITY, SINGLE SIDE' .BYTE CR,LF .ASCII '3 = 5 1/4, 35 TRACKS, DOUBLE DENSITY, SINGLE SIDE' .BYTE CR,LF .ASCII '4 = 8 INCH, SINGLE DENSITY, SINGLE SIDE' .BYTE CR,LF .ASCII '5 = 8 INCH, DOUBLE DENSITY, SINGLE SIDE' .BYTE CR,LF .ASCII '6 = 8 INCH, DOUBLE DENSITY, DOUBLE SIDE' .BYTE CR,LF .ASCII '7 = 5 1/4 INCH, DOUBLE DENSITY, DOUBLE SIDE,' .BYTE CR,LF .ASCII ' 512 BYTES PER SECTOR, 96 TRACKS PER INCH' .BYTE CR,LF .ASCII '8 = 8 INCH, DOUBLE DENSITY, SINGLE SIDE,' .BYTE CR,LF .ASCII ' 1K BYTES PER SECTOR, 4K ALLOCATION BLOCK' .BYTE CR,LF .ASCII '9 = 8 INCH, DOUBLE DENSITY, DOUBLE SIDE,' .BYTE CR,LF .ASCII ' 1K BYTES PER SECTOR, 4K ALLOCATION BLOCK' .BYTE CR,LF .ASCII 'B = MENU #2' .BYTE CR,LF .ASCII 'C = MENU #3' .BYTE CR,LF .ASCII 'D = MENU #4' .BYTE CR,LF .ASCII 'E = MENU #5' .BYTE CR,LF .ASCII 'F = MENU #6' .BYTE CR,LF .ASCII 'X = ABORT THIS COMMAND' .BYTE CR,LF,DS .PAGE ; MSG3: .BYTE CLRSKN .BYTE CR,LF,LF,LF .ASCII 'OKAY TO FORMAT ENTIRE DISK?' .BYTE CR,LF .ASCII 'ERASES ALL FILES. ANSWER Y IF OKAY' .BYTE CR,LF,DS ; MSG2: .BYTE CLRSKN .BYTE CR,LF,LF,LF .ASCII 'SELECT DRIVE TO BE USED' .BYTE CR,LF,DS ; MSG4: .BYTE CLRSKN .BYTE CR,LF,LF,LF .ASCII 'DRIVE IS NOT READY.' .BYTE CR,LF,DS ; MSG5: .BYTE CLRSKN .BYTE CR,LF,LF,LF .ASCII 'DISK IS WRITE PROTECTED.' .BYTE CR,LF,DS ; MSG6: .BYTE CLRSKN .BYTE CR,LF,LF,LF .ASCII 'YOU MUST ENTER THE R OR A COMMAND BEFORE USING THIS COMMAND' .BYTE CR,LF,DS ; MSG7: .BYTE CLRSKN .BYTE CR,LF,LF,LF .ASCII 'BAD SECTOR ON DISK' .BYTE CR,LF,DS ; MSG8: .BYTE CLRSKN .BYTE CR,LF,LF,LF .ASCII 'UNABLE TO READ DISK TABLES' .BYTE CR,LF,DS ; MSG9: .ASCII 'PRESS CARRIAGE RETURN KEY TO CONTINUE' .BYTE CR,LF,LF,DS ; MSGA: .BYTE CLRSKN .BYTE CR,LF,LF,LF .ASCII 'FILE NOT FOUND' .BYTE CR,LF,LF,DS ; MSGB: .BYTE CLRSKN .BYTE CR,LF,LF,LF .ASCII 'UNEXPECTED END OF FILE' .BYTE CR,LF,LF,DS .PAGE ; ; ;MENU #2 SIGN ON MESSAGE ; MSGC: .BYTE CLRSKN .BYTE CR,LF,LF .ASCII 'MENU #2, SELECT DESIRED FORMAT' .BYTE CR,LF .ASCII '0 = DIGITAL VT180 & DEC RAINBOW SYSTEM' .BYTE CR,LF .ASCII '1 = KAYPRO II SUITCASE COMPUTER' .BYTE CR,LF .ASCII '2 = CALLAN SYSTEM (USES 5 1/4 INCH, 96 TPI, DD)' .BYTE CR,LF .ASCII '3 = GSR 5 1/4 INCH, 96 TPI, DBL DENS, DBL SIDE' .BYTE CR,LF .ASCII ' 1K BYTES PER SECTOR, 4K ALLOCATION BLOCK' .BYTE CR,LF .ASCII '4 = INTERCHANGE STANDARD, 5 1/4 INCH SINGLE DENSITY' .BYTE CR,LF .ASCII '5 = INTERCHANGE STANDARD, 5 1/4 INCH DOUBLE DENSITY' .BYTE CR,LF .ASCII '6 = SUPER BRAIN, 5 1/4", DD/DS' .BYTE CR,LF .ASCII '7 = SUPER BRAIN, 5 1/4" , DD/SS' .BYTE CR,LF .ASCII '8 = GSR 5 1/4 INCH, 48 TPI, DBL DENS, DBL SIDE' .BYTE CR,LF .ASCII ' 1K BYTES PER SECTOR, 4K ALLOCATION BLOCK' .BYTE CR,LF .ASCII '9 = XEROX 820-2, 5 1/4", DOUBLE DENSITY, SINGLE SIDE' .BYTE CR,LF .ASCII 'A = MENU #1' .BYTE CR,LF .ASCII 'C = MENU #3' .BYTE CR,LF .ASCII 'D = MENU #4' .BYTE CR,LF .ASCII 'E = MENU #5' .BYTE CR,LF .ASCII 'F = MENU #6' .BYTE CR,LF .ASCII 'X = ABORT THIS COMMAND' .BYTE CR,LF,DS .PAGE ; ; ;MENU #3 SIGN ON MESSAGE ; MSGD: .BYTE CLRSKN .BYTE CR,LF,LF .ASCII 'MENU #3, SELECT DESIRED FORMAT' .BYTE CR,LF .ASCII '0 = IBM PC (CP/M-86), 5 1/4",' .BYTE CR,LF .ASCII ' DOUBLE DENSITY, SINGLE SIDED' .BYTE CR,LF .ASCII '1 = XEROX 820 AND CROMEMCO 520, 5 1/4", SGL DENS, SGL SIDE' .BYTE CR,LF .ASCII '2 = OSBORNE, 5 1/4", SINGLE DENSITY, SINGLE SIDE' .BYTE CR,LF .ASCII '3 = SIERRA DATA SCIENCES, 8" DOUBLE DENSITY' .BYTE CR,LF .ASCII ' DOUBLE SIDED (1024 BYTE SECTORS)' .BYTE CR,LF .ASCII '4 = ITHACA INTERSYSTEMS, 8", DD/SS (512 BYTE SECTORS)' .BYTE CR,LF .ASCII '5 = ITHACA INTERSYSTEMS, 8", DD/DS (512 BYTE SECTORS)' .BYTE CR,LF .ASCII '6 = DISK JOCKEY, 8", DD/SS (512 BYTE SECTORS)' .BYTE CR,LF .ASCII '7 = DISK JOCKEY, 8", DD/DS (512 BYTE SECTORS)' .BYTE CR,LF .ASCII '8 = DISK JOCKEY, 8", DD/SS (1024 BYTE SECTORS)' .BYTE CR,LF .ASCII '9 = DISK JOCKEY, 8", DD/DS (1024 BYTE SECTORS)' .BYTE CR,LF .ASCII 'A = MENU #1' .BYTE CR,LF .ASCII 'B = MENU #2' .BYTE CR,LF .ASCII 'D = MENU #4' .BYTE CR,LF .ASCII 'E = MENU #5' .BYTE CR,LF .ASCII 'F = MENU #6' .BYTE CR,LF .ASCII 'X = ABORT THIS COMMAND' .BYTE CR,LF,DS .PAGE ; ; ; ; ; ; MESGD: .BYTE CLRSKN .BYTE CR,LF,LF .ASCII 'MENU #4 SELECT DESIRED FORMAT' .BYTE CR,LF,LF .ASCII '0 = MORROW MICRO-DECISIONS, 5 1/4", DD/SS' .BYTE CR,LF .ASCII ' (USES 48 TPI DRIVES)' .BYTE CR,LF .ASCII '1 = MORROW MICRO-DECISIONS, 5 1/4", DD/DS' .BYTE CR,LF .ASCII ' (USES 48 TPI DRIVES)' .BYTE CR,LF .ASCII '2 = CDL, 5 1/4" DD/SS (512 BYTE SECT)' .BYTE CR,LF .ASCII '3 = SANYO 1000/1100, 5 1/4", DD/DS (16 SECT @ 256)' .BYTE CR,LF .ASCII ' (USES 48 TPI DRIVES)' .BYTE CR,LF .ASCII '4 = EPSON, 5 1/4", DD/DS (16 SECT @ 256)' .BYTE CR,LF .ASCII '5 = EPSON, 5 1/4", DD/DS (10 SECT @ 512)' .BYTE CR,LF .ASCII ' (USES 48 TPI DRIVES)' .BYTE CR,LF .ASCII '6 = QCS EXTENSION, 5 1/4", DD/SS (9 SECT @ 512)' .BYTE CR,LF .ASCII '7 = SANYO 1250, 5 1/4", DD/DS (USES 96 TPI DRIVES)' .BYTE CR,LF .ASCII '8 = IMB PC (CP/M-86), 5 1/4", DD/DS' .BYTE CR,LF .ASCII '9 = UNASSIGNED, AVAILABLE FOR USER INSTALLED FORMAT' .BYTE CR,LF .ASCII 'A = MENU #1' .BYTE CR,LF .ASCII 'B = MENU #2' .BYTE CR,LF .ASCII 'C = MENU #3' .BYTE CR,LF .ASCII 'E = MENU #5' .BYTE CR,LF .ASCII 'F = MENU #6' .BYTE CR,LF .ASCII 'X = ABORT THIS COMMAND' .BYTE CR,LF,DS .PAGE ; ; ; ; MESGE: .BYTE CLRSKN .BYTE CR,LF,LF .ASCII 'MENU #5, SELECT DESIRED FORMAT' .BYTE CR,LF,LF .ASCII '0 = ZENITH Z-100, 5 1/4", SD/SS' .BYTE CR,LF .ASCII '1 = HEATH/NEC, 5 1/4", DD/SS (16 SECT @ 256)' .BYTE CR,LF .ASCII '2 = HEATH, 5 1/4", SD/SS (10 SECT @ 256)' .BYTE CR,LF .ASCII '3 = ITHACA INTERSYSTEMS, 5 1/4", DD/DS (9 SECT @ 256)' .BYTE CR,LF .ASCII '4 = TELEVIDEO, 5 1/4", DD/DS (18 SECT @ 256)' .BYTE CR,LF .ASCII '5 = UNASSIGNED, AVAILABLE FOR USER INSTALLED FORMAT' .BYTE CR,LF .ASCII '6 = UNASSIGNED, AVAILABLE FOR USER INSTALLED FORMAT' .BYTE CR,LF .ASCII '7 = UNASSIGNED, AVAILABLE FOR USER INSTALLED FORMAT' .BYTE CR,LF .ASCII '8 = UNASSIGNED, AVAILABLE FOR USER INSTALLED FORMAT' .BYTE CR,LF .ASCII '9 = UNASSIGNED, AVAILABLE FOR USER INSTALLED FORMAT' .BYTE CR,LF .ASCII 'A = MENU #1' .BYTE CR,LF .ASCII 'B = MENU #2' .BYTE CR,LF .ASCII 'C = MENU #3' .BYTE CR,LF .ASCII 'D = MENU #4' .BYTE CR,LF .ASCII 'F = MENU #6' .BYTE CR,LF .ASCII 'X = ABORT THIS COMMAND' .BYTE CR,LF,DS .PAGE ; ; ; ; ; MESGF: .BYTE CLRSKN .BYTE CR,LF,LF .ASCII 'MENU #6, SELECT DESIRED FORMAT' .BYTE CR,LF,LF .ASCII '0 = UNASSIGNED, AVAILABLE FOR USER INSTALLED FORMAT' .BYTE CR,LF .ASCII '1 = UNASSIGNED, AVAILABLE FOR USER INSTALLED FORMAT' .BYTE CR,LF .ASCII '2 = UNASSIGNED, AVAILABLE FOR USER INSTALLED FORMAT' .BYTE CR,LF .ASCII '3 = UNASSIGNED, AVAILABLE FOR USER INSTALLED FORMAT' .BYTE CR,LF .ASCII '4 = UNASSIGNED, AVAILABLE FOR USER INSTALLED FORMAT' .BYTE CR,LF .ASCII '5 = UNASSIGNED, AVAILABLE FOR USER INSTALLED FORMAT' .BYTE CR,LF .ASCII '6 = UNASSIGNED, AVAILABLE FOR USER INSTALLED FORMAT' .BYTE CR,LF .ASCII '7 = UNASSIGNED, AVAILABLE FOR USER INSTALLED FORMAT' .BYTE CR,LF .ASCII '8 = UNASSIGNED, AVAILABLE FOR USER INSTALLED FORMAT' .BYTE CR,LF .ASCII '9 = UNASSIGNED, AVAILABLE FOR USER INSTALLED FORMAT' .BYTE CR,LF .ASCII 'A = MENU #1' .BYTE CR,LF .ASCII 'B = MENU #2' .BYTE CR,LF .ASCII 'C = MENU #3' .BYTE CR,LF .ASCII 'E = MENU #4' .BYTE CR,LF .ASCII 'F = MENU #5' .BYTE CR,LF .ASCII 'X = ABORT THIS COMMAND' .BYTE CR,LF,DS .PAGE ; ; ; ERMSG: .BYTE CLRSKN .BYTE CR,LF,LF,LF .ASCII 'UNABLE TO WRITE TABLES TO DISK' .BYTE CR,LF,LF,DS ; ; ; ; ; ; MAIN HELP SCREEN ; ; HLP: .BYTE CLRSKN .BYTE CR,LF,LF,LF .ASCII 'THIS IS AN EXPLANATION OF HOW TO USE THE ONLINE HELP' .BYTE CR,LF .ASCII 'FACILITY. THIS FACILTY IS USED FOR SHORT DEFINITIONS' .BYTE CR,LF .ASCII 'ON HOW TO USE THE VARIOUS OPTIONS OF THE GSR COMPUTERS' .BYTE CR,LF .ASCII 'FORMAT PROGRAM. TO RECEIVE ASSISTANCE ON A PARTICULAR' .BYTE CR,LF .ASCII 'SUBJECT, CHOOSE ONE OF THE OPTIONS LISTED BELOW.' .BYTE CR,LF,LF .ASCII 'A = HELP ON READ CP/M IMAGES FROM FILE ON DISK' .BYTE CR,LF .ASCII 'C = HELP ON COPYING A CP/M IMAGE TO A DISK' .BYTE CR,LF .ASCII 'D = HELP ON DESIGNATING A TABLE FOR DISK ACCESS' .BYTE CR,LF .ASCII 'F = HELP ON FORMATTING ALL TRACKS OF A DISK' .BYTE CR,LF .ASCII 'G = HELP ON FORMATTING AND WRITING CP/M TO DISK' .BYTE CR,LF .ASCII 'P = HELP ON FORMATTING A DISK USING PREVIOUSLY DEFINED' .BYTE CR,LF .ASCII ' PARAMETERS' .BYTE CR,LF .ASCII 'R = HELP ON READING THE CP/M IMAGE FROM A DISK' .BYTE CR,LF .ASCII 'T = HELP ON FORMATTING TRACK 0 OF A DISK' .BYTE CR,LF .ASCII 'V = HELP ON VERIFYING ALL SECTORS OF A DISK' .BYTE CR,LF .ASCII 'W = HELP ON WRITING TABLES TO A DISK' .BYTE CR,LF .ASCII 'X = ABORT THIS HELP SCREEN AND RETURN TO MAIN MENU' .BYTE CR,LF,LF .ASCII 'NOTE: YOU MAY ENTER ANY OF THE ABOVE COMMANDS AT ANY OF' .BYTE CR,LF .ASCII ' THE MENU SCREENS FOR ADDITIONAL INFORMATION ON' .BYTE CR,LF .ASCII ' ANOTHER SUBJECT.' .BYTE CR,LF,LF .ASCII 'PLEASE ENTER SELECTION?' .BYTE DS ; ; ; HELP ON THE "A" COMMAND ; ; HLPMSA: .BYTE CLRSKN .BYTE CR,LF,LF,LF .ASCII 'THE USE OF THE "A" COMMAND ALLOWS THE USER TO READ A' .BYTE CR,LF .ASCII 'CP/M FILE FROM DISK THAT WAS PREVIOUSLY CREATED THROUGH' .BYTE CR,LF .ASCII 'THE USE OF THE "MOVCPM" PROGRAM THAT IS PROVIDED BY' .BYTE CR,LF .ASCII 'DIGITAL RESEARCH. THE WAY THAT THIS FILE IS CREATED IS' .BYTE CR,LF .ASCII 'BY EXECUTING THE FOLLOWING COMMAND TO CREATE A 60k CP/M' .BYTE CR,LF .ASCII 'SYSTEM. "MOVCPM 60 *" WHEN THIS IS ACCOMPLISHED, YOU' .BYTE CR,LF .ASCII 'MUST SAVE THIS FILE TO DISK USING THE "SAVE" COMMAND AT' .BYTE CR,LF .ASCII 'THE A> AS FOLLOWS; "SAVE 34 CPM60.COM". ONCE THIS FILE' .BYTE CR,LF .ASCII 'IS ON DISK, YOU THEN CALL UP THIS FORMAT PROGRAM AS' .BYTE CR,LF .ASCII 'FOLLOWS: "FMTIII7 CPM60.COM". THIS LOADS THE CP/M' .BYTE CR,LF .ASCII 'IMAGE INTO MEMORY AND THEN BY USING THE "C" COMMAND' .BYTE CR,LF .ASCII 'YOU CAN COPY THIS IMAGE TO A DISK.' .BYTE CR,LF,LF,LF .ASCII ' PLEASE ENTER NEW SELECTION' .BYTE CR,LF .ASCII ' OR "X" TO RETURN TO THE MAIN MENU.' .BYTE DS ; ; ; HELP ON "C" COMMAND ; ; HLPMSC: .BYTE CLRSKN .BYTE CR,LF,LF,LF,LF,LF .ASCII 'THE USE OF THE "C" COMMAND IS FOR COPYING THE CP/M SYSTEM' .BYTE CR,LF .ASCII 'TO A SPECIFIED DISK DRIVE. YOU MUST HAVE USED AN "A" OR' .BYTE CR,LF .ASCII 'AN "R" COMMAND PRIOR TO USING THE "C" COMMAND TO HAVE' .BYTE CR,LF .ASCII 'PREVIOUSLY READ A CP/M IMAGE INTO MEMORY. WHEN THE "C"' .BYTE CR,LF .ASCII 'COMMAND IS CHOSEN, THE USER WILL BE PROMPTED AS TO WHICH' .BYTE CR,LF .ASCII 'DRIVE IS TO BE SELECTED TO WHICH THE CP/M SYSTEM WILL BE' .BYTE CR,LF .ASCII 'COPIED.' .BYTE CR,LF,LF,LF .ASCII ' PLEASE ENTER NEW SELECTION' .BYTE CR,LF .ASCII ' OR "X" TO RETURN TO THE MAIN MENU.' .BYTE DS ; ; ; HELP ON THE "D" COMMAND ; ; HLPMSD: .BYTE CLRSKN .BYTE CR,LF,LF,LF,LF,LF,LF .ASCII 'THE USE OF THE "D" COMMAND IS FOR DESIGNATING A DISK' .BYTE CR,LF .ASCII 'PARAMETER TABLE FOR USE WITHOUT WRITING THAT SPECIFIC' .BYTE CR,LF .ASCII 'TABLE OUT ON THE DISK. THIS COMMAND IS USEFUL FOR' .BYTE CR,LF .ASCII 'TESTING UNKNOWN FORMATS OR FOR READING AND WRITING TO' .BYTE CR,LF .ASCII 'DISKS OF A KNOWN FORMAT THAT DO NOT CONTAIN THE DISK' .BYTE CR,LF .ASCII 'PARAMETER BLOCKS ON THE DISK.' .BYTE CR,LF .ASCII 'TO USE THIS COMMAND CHOOSE OPTION "D" FROM' .BYTE CR,LF .ASCII 'THE MAIN MENU AND THEN MAKE THE APPROPRIATE SELECTION' .BYTE CR,LF .ASCII 'FROM ONE OF THE FORMAT SUB-MENUS.' .BYTE CR,LF,LF,LF .ASCII ' PLEASE ENTER NEW SELECTION' .BYTE CR,LF .ASCII ' OR "X" TO RETURN TO THE MAIN MENU.' .BYTE DS ; ; ; HELP ON THE "F" COMMAND ; ; HLPMSF: .BYTE CLRSKN .BYTE CR,LF,LF,LF .ASCII 'THE USE OF THE "F" COMMAND IS FOR FORMATTING ALL THE' .BYTE CR,LF .ASCII 'TRACKS OF A DISK. WHEN THIS OPTION IS SELECTED FROM' .BYTE CR,LF .ASCII 'THE MAIN MENU, YOU WILL BE IMMEDIATELY PLACED INTO' .BYTE CR,LF .ASCII 'THE FIRST FORMAT SUB-MENU. FROM THIS SUB-MENU, YOU' .BYTE CR,LF .ASCII 'HAVE THE ABILITY TO GO TO ANY OF THE OTHER SUB-MENUS' .BYTE CR,LF .ASCII 'THAT ARE PROVIDED WITH THIS PROGRAM OR RETURN TO THE' .BYTE CR,LF .ASCII 'MAIN MENU SCREEN.' .BYTE CR,LF .ASCII 'WHEN A CHOICE IS MADE FROM A SUB-MENU, YOU ARE PROMPTED' .BYTE CR,LF .ASCII 'AS TO WHICH DISK DRIVE THAT YOU WISH TO FORMAT. WHEN' .BYTE CR,LF .ASCII 'AN APPROPRIATE RESPONSE HAS BEEN ENTERED, YOU ARE THEN' .BYTE CR,LF .ASCII 'NOTIFIED THAT ALL DATA ON THE DISK THAT IS TO BE FORMATED' .BYTE CR,LF .ASCII 'WILL BE ERASED AND YOU MUST ENTER A "Y OR N" RESPONSE.' .BYTE CR,LF .ASCII 'AT THIS POINT, THE PROGRAM WILL EITHER BEGIN FORMATTING' .BYTE CR,LF .ASCII 'THE DISK AND PLACE THE TABLES ON THE DISK IF "Y" WAS' .BYTE CR,LF .ASCII 'ENTERED OR RETURN TO THE MAIN MENU IF "N" WAS ENTERED.' .BYTE CR,LF,LF,LF .ASCII ' PLEASE ENTER SELECTION' .BYTE CR,LF .ASCII ' OR "X" TO RETURN TO MAIN MENU.' .BYTE DS ; ; ; HELP ON THE "G" COMMAND ; ; HLPMSG: .BYTE CLRSKN .BYTE CR,LF,LF,LF,LF,LF,LF,LF .ASCII 'THE USE OF THE "G" COMMAND IS FOR FORMATTING AND WRITING' .BYTE CR,LF .ASCII 'CP/M TO A SPECIFIED DISK. YOU ARE PROMPTED AS TO WHICH' .BYTE CR,LF .ASCII 'DISK THAT YOU WISH TO FORMAT AND YOU MUST FOLLOW THE' .BYTE CR,LF .ASCII 'SAME PROCEDURES AS OUTLINED UNDER THE "F" COMMAND.' .BYTE CR,LF .ASCII 'PRIOR TO USING THIS COMMAND, YOU MUST HAVE PREVIOUSLY' .BYTE CR,LF .ASCII 'USED AN "R" OR AN "A" TO HAVE COPIED A CP/M IMAGE' .BYTE CR,LF .ASCII 'INTO MEMORY.' .BYTE CR,LF,LF .ASCII ' PLEASE ENTER SELECTION' .BYTE CR,LF .ASCII ' OR "X" TO RETURN TO MAIN MENU' .BYTE DS ; ; ; HELP ON THE "P" COMMAND ; ; HLPMSP: .BYTE CLRSKN .BYTE CR,LF,LF,LF,LF,LF,LF .ASCII 'THE USE OF THE "P" COMMAND IS FOR FORMATTING A' .BYTE CR,LF .ASCII 'DISK USING PREVIOUSLY ENTERED PARAMETERS.' .BYTE CR,LF .ASCII 'THIS COMMAND IS USEFUL WHEN IT IS NECESSARY TO' .BYTE CR,LF .ASCII 'FORMAT MORE THAN ONE DISK WITH THE SAME FORMAT.' .BYTE CR,LF .ASCII 'THIS COMMAND IS SIMILAR TO THE "G" COMMAND EXCEPT' .BYTE CR,LF .ASCII 'THAT IT DOES NOT WRITE THE CP/M SYSTEM TO THE DISK.' .BYTE CR,LF,LF .ASCII ' PLEASE ENTER SELECTION' .BYTE CR,LF .ASCII ' OR "X" TO RETURN TO MAIN MENU.' .BYTE DS ; ; ; HELP ON THE "R" COMMAND ; ; HLPMSR: .BYTE CLRSKN .BYTE CR,LF,LF,LF,LF,LF,LF .ASCII 'THE USE OF THE "R" COMMAND IS FOR READING THE CP/M' .BYTE CR,LF .ASCII 'IMAGE FROM A DISK. THE USER IS PROMPTED AS TO THE' .BYTE CR,LF .ASCII 'SOURCE DISK THAT CONTAINS A GOOD VERSION OF CP/M' .BYTE CR,LF .ASCII 'ON THE SYSTEM TRACKS. YOU MUST THEN USE THE "C"' .BYTE CR,LF .ASCII 'COMMAND TO COPY THIS SYSTEM TO A DESTINATION DISK.' .BYTE CR,LF,LF .ASCII ' PLEASE ENTER SELECTION' .BYTE CR,LF .ASCII ' OR "X" TO RETURN TO MAIN MENU.' .BYTE DS ; ; ; HELP ON THE "T" COMMAND ; ; HLPMST: .BYTE CLRSKN .BYTE CR,LF,LF,LF,LF,LF,LF .ASCII 'THE USE OF THE "T" COMMAND IS FOR FORMATTING ONLY' .BYTE CR,LF .ASCII 'TRACK 0 OF A DISK. USE OF THIS COMMAND IS SIMILAR' .BYTE CR,LF .ASCII 'TO USING THE "F" COMMAND EXCEPT THAT ONLY TRACK 0' .BYTE CR,LF .ASCII 'IS FORMATTED.' .BYTE CR,LF .ASCII '(THIS COMMAND DOES NOT WRITE A CP/M SYSTEM TO THE' .BYTE CR,LF .ASCII ' DESTINATION DISK.)' .BYTE CR,LF,LF .ASCII ' PLEASE ENTER SELECTION' .BYTE CR,LF .ASCII ' OR "X" TO RETURN TO MAIN MENU.' .BYTE DS ; ; ; HELP ON THE "V" COMMAND ; ; HLPMSV: .BYTE CLRSKN .BYTE CR,LF,LF,LF,LF,LF,LF .ASCII 'THE USE OF THE "V" COMMAND IS TO VERIFY THAT ALL TRACKS' .BYTE CR,LF .ASCII 'AND SECTORS OF A DISK ARE IN OPERATING ORDER. THIS' .BYTE CR,LF .ASCII 'COMMAND DOES NOT ERASE DATA, IT ONLY VERIFIES THAT ALL' .BYTE CR,LF .ASCII 'TRACKS AND SECTORS ARE GOOD AND WILL REPORT AN ERROR' .BYTE CR,LF,LF .ASCII 'MESSAGE IF A BAD TRACK OR SECTOR IS FOUND.' .BYTE CR,LF .ASCII ' PLEASE ENTER SELECTION' .BYTE CR,LF .ASCII ' OR "X" TO RETURN TO THE MAIN MENU.' .BYTE DS ; ; ; HELP ON THE "W" COMMAND ; ; HLPMSW: .BYTE CLRSKN .BYTE CR,LF,LF,LF,LF,LF,LF,LF .ASCII 'THE USE OF THE "W" COMMAND IS FOR WRITING THE DISK' .BYTE CR,LF .ASCII 'PARAMETER TABLES ONTO TRACK 0. THIS COMMAND IS USED' .BYTE CR,LF .ASCII 'WHEN A DISK ALREADY HAS A FORMATTED TRACK 0 AND YOU' .BYTE CR,LF .ASCII 'WISH TO PLACE THE PARAMETER TABLES ON THAT DISK.' .BYTE CR,LF .ASCII 'THE FORMAT FOR USING THIS COMMAND IS SIMILAR TO USING' .BYTE CR,LF .ASCII 'THE "F" COMMAND EXCEPT ONLY THE TABLES ARE WRITTEN TO' .BYTE CR,LF .ASCII 'DESTINATION DISK.' .BYTE CR,LF,LF .ASCII ' PLEASE ENTER SELECTION' .BYTE CR,LF .ASCII ' OR "X" TO RETURN TO MAIN MENU.' .BYTE DS ; ; ; DISKNO: .BYTE 0 TRACK: .BYTE 0 SECTOR: .BYTE 1 STATUS: .BYTE 0 CMND: .BYTE 0 DMAAD: .WORD BUFADR SECSZ: .BYTE 0 BYTCNT: .BYTE 1 FMTSEL: .BYTE 0 SDSEL: .BYTE 0 CMDSTR: .BLKB 1 DRVSEL: .BLKB 1 SELCD: .BYTE 0 CSELCD: .BLKB 1 FSTSEC: .BYTE 1 LSTSEC: .BLKB 1 BTSEC: .BLKB 1 CPMFLG: .BLKB 1 GETFLG: .BLKB 1 RWFLG: .BLKB 1 RFLAG: .BYTE 0FFH SECCNT: .BYTE 1 STKPTR: .BLKB 2 STACK: .BLKB 256 TBLSTR: .BLKB 128 CPMSTR: .BLKB 49*128 BUFADR: .BLKB 4000H ; .END CD: .BLKB 1 FSTSEC: .BYTE 1 LSTSEC: .BLKB 1 BTSEC: .BLKB 1 CPMFLG: .BLKB 1 GETFLG: .BLKB 1 RWFLG: .BLKB 1 RFLAG: .BY