Mar 03,1983 18:47:54 #001 *** Format Program for CP/M Ver. 2.0 *** ***************************************************************** * * * DISK FORMAT PROGRAM FOR DISK JOCKEY 2D CONTROLLER. * * 11/16/79 * * * ***************************************************************** ; ; WARNING: THIS VERSION HAS BEEN MODIFIED SUCH THAT ; WHEN CALLED, IT WILL AUTOMATICALLY FORMAT ; DISC B FOR 256 BYTES/SECTOR AND THEN RETURN ; TO CP/M. ; TITLE '*** Format Program for CP/M Ver. 2.0 ***' 0100 ORG 100H 0034 = REVNUM EQU 52 ;REVISION # TIMES 10 0005 = BDOS EQU 5 ;CP/M ENTRY POINT 0000 = WBOOT EQU 0 E000 = ORIGIN EQU 0E000H E3F8 = DISKIO EQU ORIGIN+3F8H E3FF = DATREG EQU DISKIO+7 E3F9 = DRVSEL EQU DISKIO+1 E3FB = CSTALL EQU DISKIO+3 E3FC = CMDREG EQU DISKIO+4 0008 = DSIDE EQU 10Q 000F = UNLOADB EQU 17Q 00F4 = WTCMD EQU 364Q 0059 = SICMD EQU 131Q 00D0 = IMMIRQ EQU 320Q 0018 = UNLOADA EQU 30Q 0009 = RESTOR EQU 11Q 0010 = INDEX EQU 20Q 0004 = TRKZRO EQU 4 0001 = INTRQA EQU 1 0004 = INTRQB EQU 4 090D = LHSDENB EQU 90DH 080C = LHDDENB EQU 80CH 0111 = LHSDENA EQU 111H 0010 = LHDDENA EQU 10H 000D = ACR EQU 0DH 000A = ALF EQU 0AH 0100 319A06 START LXI SP,STACK 0103 2A07E0 LHLD ORIGIN+7 ;ADJUST 0106 23 INX H ; THE 0107 7E MOV A,M ; CALLING 0108 21C602 LXI H,STDVSL+1 ; ROUTINES 010B 110400 LXI D,4 ; FOR 010E 77 MOV M,A ; DIFFERENT 010F EE03 XRI 3 ; VERSIONS 0111 19 DAD D ; OF THE 0112 77 MOV M,A ; DISK 0113 19 DAD D ; JOCKEY 0114 77 MOV M,A ; CONTROLLER Mar 03,1983 18:47:54 #002 *** Format Program for CP/M Ver. 2.0 *** 0115 11AA04 LXI D,SMESSG ;PRINT THE 0118 CD8A02 CALL PBUFF ; SIGN ON MESSAGE 011B 118C04 CROK LXI D,DMESSG ;ECHO THE CR AND 011E CD8A02 CALL PBUFF ; PRINT DRIVE SELECT 0121 3E42 MVI A,'B' ;FORCE B DRIVE 0123 FE4E CPI 'N' ; NEW PARAMETER 0125 CA1B01 JZ CROK ; REQUEST 0128 326406 STA LETTER ;SAVE FOR EXIT 012B D641 SUI 'A' ;TEST FOR GOOD 012D F23901 JP NOTLOW ; DRIVE SELECT 0130 117704 INPUTB LXI D,BMESSG ;PRINT THE BAD 0133 CD8A02 CALL PBUFF ; INPUT MESSAGE 0136 C31B01 JMP CROK ; AND WAIT FOR INPUT 0139 FE04 NOTLOW CPI 4 ;TEST FOR DRIVE 013B F23001 JP INPUTB ; SELECT TOO LARGE 013E 326506 STA DRVNO ;SAVE DRIVE NO. 0141 11B105 FMTSIZ LXI D,DENMSG ;SELECT THE SECTOR SIZE 0144 CD8A02 CALL PBUFF 0147 3E32 MVI A,'2' ;FORCE DUALDENSITY 256 0149 FE4E CPI 'N' 014B CA1B01 JZ CROK 014E D631 SUI '1' ;STRIP OFF ASCII BIAS 0150 F25C01 JP SIZCHK 0153 117704 SIZERR LXI D,BMESSG 0156 CD8A02 CALL PBUFF 0159 C34101 JMP FMTSIZ 015C FE04 SIZCHK CPI 4 015E D25301 JNC SIZERR 0161 326706 STA NEWSIZE 0164 110805 SENDI LXI D,IMESSG ;SEND OUT THE 0167 213405 LXI H,JMESSG ; DISKETTE INSERT 016A CD7F02 CALL SENDMP ; MESSAGE 016D 3E0D GETIN2 MVI A,0DH ;FORCE A C/R 016F FE4E CPI 'N' ;TEST FOR NEW 0171 CA1B01 JZ CROK ; PARAMETER REQUEST 0174 116106 PROCED LXI D,ACRALF 0177 CD8A02 CALL PBUFF 017A 3A6506 LDA DRVNO ;GET THE DRIVE NO 017D 4F MOV C,A 017E 3E7F MVI A,177Q ;DRIVE SELECT BITS 0180 07 QLOOP RLC ;ROTATE SELECT BITS 0181 0D DCR C ; TO PROPER DRIVE 0182 F28001 JP QLOOP ; POSITION 0185 E63F ANI 3FH 0187 326606 STA SELECT ;SAVE FOR TRACK ROUTINE 018A CDC502 CALL STDVSL 018D CDD102 CALL MODEL 0190 011101 LXI B,LHSDENA Mar 03,1983 18:47:54 #003 *** Format Program for CP/M Ver. 2.0 *** 0193 CA9901 JZ PREP 0196 010D09 LXI B,LHSDENB 0199 78 PREP MOV A,B 019A CDC902 CALL STBITS 019D 79 MOV A,C 019E CDC902 CALL STBITS 01A1 21FCE3 LXI H,CMDREG 01A4 36D0 MVI M,IMMIRQ 01A6 3E40 MVI A,40H 01A8 3D WIRQD DCR A 01A9 C2A801 JNZ WIRQD 01AC 7E MOV A,M 01AD 1F RAR 01AE DAD201 JC NOTRDY 01B1 17 RAL 01B2 17 RAL 01B3 DAD201 JC NOTRDY 01B6 116204 LXI D,WMESSG 01B9 17 RAL 01BA DAD501 JC NOTRDYX 01BD 110000 LXI D,0 01C0 CDE402 CALL GTINDX 01C3 CDCD02 IXLOOP CALL GTSTAT 01C6 E610 ANI INDEX 01C8 A8 XRA B 01C9 C2E201 JNZ DOREST 01CC 1B DCX D 01CD 7A MOV A,D 01CE B3 ORA E 01CF C2C301 JNZ IXLOOP 01D2 115304 NOTRDY LXI D,RMESSG ;NOT READY MESSAGE 01D5 EB NOTRDYX XCHG 01D6 114A04 LXI D,AMESSG ;DRIVE MESSAGE 01D9 CD7F02 CALL SENDMP ;SEND ERROR MESSAGE 01DC CDD702 CALL UNLOAD 01DF C36401 JMP SENDI ;BACK FOR MORE INPUT 01E2 3609 DOREST MVI M,RESTOR 01E4 7E WRSTRS MOV A,M 01E5 1F RAR 01E6 D2E401 JNC WRSTRS 01E9 7E WRSTRD MOV A,M 01EA 1F RAR 01EB DAE901 JC WRSTRD 01EE 7E MOV A,M 01EF E604 ANI TRKZRO 01F1 CAD201 JZ NOTRDY 01F4 010204 LXI B,SDLIST 01F7 21E503 LXI H,DLIST 01FA CDCD03 CALL OVLAY 01FD 012604 LXI B,L128 0200 21F803 LXI H,SLIST 0203 CDCD03 CALL OVLAY 0206 3E2A MVI A,'*' 0208 CDAA02 CALL PCHAR Mar 03,1983 18:47:54 #004 *** Format Program for CP/M Ver. 2.0 *** 020B CDED02 CALL INDEXP 020E 2600 MVI H,0 0210 CD1103 CALL TRACK 0213 110903 LXI D,TABLE 0216 3A6706 LDA NEWSIZE 0219 87 ADD A 021A CA4702 JZ FINDIX 021D 6F MOV L,A 021E 2600 MVI H,0 0220 19 DAD D 0221 4E MOV C,M 0222 23 INX H 0223 46 MOV B,M 0224 21F803 LXI H,SLIST 0227 CDCD03 CALL OVLAY 022A 011404 LXI B,DDLIST 022D 21E503 LXI H,DLIST 0230 CDCD03 CALL OVLAY 0233 CDD102 CALL MODEL 0236 011000 LXI B,LHDDENA 0239 CA3F02 JZ LOADD 023C 010C08 LXI B,LHDDENB 023F 78 LOADD MOV A,B 0240 CDC902 CALL STBITS 0243 79 MOV A,C 0244 CDC902 CALL STBITS 0247 CDED02 FINDIX CALL INDEXP 024A 2601 MVI H,1 024C 3E2A TKSTEP MVI A,'*' 024E CDAA02 CALL PCHAR 0251 11FCE3 LXI D,CMDREG 0254 3E59 MVI A,SICMD 0256 12 STAX D 0257 1A WSICMS LDAX D 0258 1F RAR 0259 D25702 JNC WSICMS 025C 1A WSICMD LDAX D 025D 1F RAR 025E DA5C02 JC WSICMD 0261 CD1103 CALL TRACK 0264 62 MOV H,D 0265 24 INR H 0266 3E4D MVI A,77 0268 BC CMP H 0269 C24C02 JNZ TKSTEP 026C CDD702 CALL UNLOAD 026F 116305 LXI D,FMESSG 0272 CD8A02 CALL PBUFF 0275 3E0D MVI A,0DH ;FORCE RETURN TO CPM 0277 FE46 CPI 'F' 0279 CA1B01 JZ CROK 027C C30000 JMP WBOOT 027F E5 SENDMP PUSH H ;SAVE SECOND HALF 0280 CD8A02 CALL PBUFF ;SEND FIRST HALF 0283 3A6406 LDA LETTER ;PRINT THE Mar 03,1983 18:47:54 #005 *** Format Program for CP/M Ver. 2.0 *** 0286 CDAA02 CALL PCHAR ; LETTER 0289 D1 POP D ;SEND THE SECOND 028A 0E09 PBUFF MVI C,9 028C C30500 JMP BDOS 028F 11B902 RBUFF LXI D,INBUFX 0292 0E0A MVI C,10 0294 CD0500 CALL BDOS 0297 3ABA02 LDA INBUFX+1 029A A7 ANA A 029B 3E0D MVI A,ACR 029D C8 RZ 029E 3ABB02 LDA INBUF 02A1 FE61 CPI 'a' 02A3 D8 RC 02A4 FE7B CPI 'z'+1 02A6 D0 RNC 02A7 D620 SUI 40Q 02A9 C9 RET 02AA E5 PCHAR PUSH H 02AB C5 PUSH B 02AC D5 PUSH D 02AD F5 PUSH PSW 02AE 5F MOV E,A 02AF 0E02 MVI C,2 02B1 CD0500 CALL BDOS 02B4 F1 POP PSW 02B5 D1 POP D 02B6 C1 POP B 02B7 E1 POP H 02B8 C9 RET 02B9 0A00 INBUFX DB 10,0 02BB 0000000000INBUF DB 0,0,0,0,0,0,0,0,0,0 02C5 32F9E3 STDVSL STA DISKIO+1 02C8 C9 RET 02C9 32FAE3 STBITS STA DISKIO+2 02CC C9 RET 02CD 3AFAE3 GTSTAT LDA DISKIO+2 02D0 C9 RET 02D1 3AF4E3 MODEL LDA DISKIO-4 02D4 FEC9 CPI (RET) 02D6 C9 RET 02D7 CDD102 UNLOAD CALL MODEL 02DA 3E18 MVI A,UNLOADA 02DC CAC902 JZ STBITS 02DF 3E0F MVI A,UNLOADB 02E1 C3C902 JMP STBITS Mar 03,1983 18:47:54 #006 *** Format Program for CP/M Ver. 2.0 *** 02E4 CDD102 GTINDX CALL MODEL 02E7 0600 MVI B,0 02E9 C8 RZ 02EA 0610 MVI B,INDEX 02EC C9 RET 02ED CDE402 INDEXP CALL GTINDX 02F0 CDCD02 WINDXH CALL GTSTAT 02F3 E610 ANI INDEX 02F5 A8 XRA B 02F6 CAF002 JZ WINDXH 02F9 CDCD02 WINDXL CALL GTSTAT 02FC E610 ANI INDEX 02FE A8 XRA B 02FF C2F902 JNZ WINDXL 0302 C9 RET 0303 CDE402 INDXW CALL GTINDX 0306 C3F902 JMP WINDXL 0309 2604 TABLE DW L128 030B 2F04 DW L256 030D 3804 DW L512 030F 4104 DW L1024 0311 3A6606 TRACK LDA SELECT 0314 CDC502 CALL STDVSL 0317 AF XRA A 0318 327103 STA SIDENO 031B CD3403 CALL WTRACK 031E CDCD02 CALL GTSTAT 0321 E608 ANI DSIDE 0323 C0 RNZ 0324 3C INR A 0325 327103 STA SIDENO 0328 3A6606 LDA SELECT 032B E6EF ANI 357Q 032D CDC502 CALL STDVSL WIL 0330 CD0303 CALL INDXW 0333 EB XCHG 0334 11FFE3 WTRACK LXI D,DATREG ;1791 DATA REG 0337 2E01 MVI L,1 ;INITIALIZE SECTOR REG 0339 01504E LXI B,4E50H ;DATA & COUNT 033A = OVLD1 EQU $-2 033C 3EF4 MVI A,WTCMD ;ISSUE A WRITE 033E 32FCE3 STA CMDREG ; TRACK COMMAND 0341 EB XCHG ;ADJUST THE REGISTERS 0342 70 WTL1 MOV M,B ;INDEX MARK 0343 0D DCR C ; PREAMBLE 0344 C24203 JNZ WTL1 ; FIELD 0347 010C00 LXI B,0CH ;DATA & COUNT 0348 = OVLD2 EQU $-2 034A 70 WTL2 MOV M,B ;INDEX MARK 034B 0D DCR C ; ZERO LEADER 034C C24A03 JNZ WTL2 ; FIELD Mar 03,1983 18:47:54 #007 *** Format Program for CP/M Ver. 2.0 *** 034F 36F6 OVLD3 MVI M,0F6H ;SPECIAL DOUBLE 0351 36F6 MVI M,0F6H ; DENSITY CLOCK 0353 36F6 MVI M,0F6H ; AND DATA MARK 0355 36FC WTL3 MVI M,0FCH ;INDEX MARK 0357 01324E LXI B,4E32H ;DATA & COUNT 0358 = OVLD4 EQU $-2 035A 70 WTL4 MOV M,B ;SECTOR MARK 035B 0D DCR C ; PREAMBLE 035C C25A03 JNZ WTL4 ; FIELD 035F 010C00 SLOOP LXI B,0CH ;DATA & COUNT 0360 = OVLD5 EQU $-2 0362 70 WTL5 MOV M,B ;SECTOR MARK 0363 0D DCR C ; ZERO LEADER 0364 C26203 JNZ WTL5 ; FIELD 0367 36F5 OVLD6 MVI M,0F5H ;SPECIAL DOUBLE 0369 36F5 MVI M,0F5H ; DENSITY CLOCK 036B 36F5 MVI M,0F5H ; AND DATA MARK 036D 36FE WTL6 MVI M,0FEH ;SECTOR MARK 036F 72 MOV M,D ;TRACK NUMBER 0370 3600 MVI M,0 ;SIDE NUMBER 0371 = SIDENO EQU $-1 0372 73 MOV M,E ;SECTOR NUMBER 0373 3601 MVI M,1 ;SECTOR LENGTH 0374 = OVLS1 EQU $-1 0375 36F7 MVI M,0F7H ;CRC DATA BYTES 0377 1C INR E ;INCREMENT SECTOR 0378 01164E LXI B,4E16H ;DATA & COUNT 0379 = OVLD7 EQU $-2 037B 70 WTL7 MOV M,B ;SECTOR MARK 037C 0D DCR C ; POSTAMBLE 037D C27B03 JNZ WTL7 ; FIELD 0380 010C00 LXI B,0CH ;DATA & COUNT 0381 = OVLD8 EQU $-2 0383 70 WTL8 MOV M,B ;DATA MARK 0384 0D DCR C ; ZERO LEADER 0385 C28303 JNZ WTL8 ; FIELD 0388 36F5 OVLD9 MVI M,0F5H ;SPECIAL DOUBLE 038A 36F5 MVI M,0F5H ; DENSITY CLOCK 038C 36F5 MVI M,0F5H ; AND DATA MARK 038E 36FB WTL9 MVI M,0FBH ;DATA MARK 0390 0140E5 LXI B,0E540H ;DATA & COUNT 0391 = OVLS2 EQU $-2 0393 70 WTL10 MOV M,B ;WRITE FIRST 0394 0D DCR C ; QUARTER OF 0395 C29303 JNZ WTL10 ; SECTOR DATA 0398 0E40 MVI C,40H ;COUNT 0399 = OVLS3 EQU $-1 039A 70 WTL11 MOV M,B ;WRITE SECOND 039B 0D DCR C ; QUARTER OF 039C C29A03 JNZ WTL11 ; SECTOR DATA 039F 0E40 MVI C,40H ;COUNT 03A0 = OVLS4 EQU $-1 03A1 70 WTL12 MOV M,B ;WRITE THIRD 03A2 0D DCR C ; QUARTER OF 03A3 C2A103 JNZ WTL12 ; SECTOR DATA 03A6 0E40 MVI C,40H ;COUNT Mar 03,1983 18:47:54 #008 *** Format Program for CP/M Ver. 2.0 *** 03A7 = OVLS5 EQU $-1 03A8 70 WTL13 MOV M,B ;WRITE FOURTH 03A9 0D DCR C ; QUARTER OF 03AA C2A803 JNZ WTL13 ; SECTOR DATA 03AD 36F7 MVI M,0F7H ;CRC DATA BYTES 03AF 3E1B MVI A,27 ;LAST SECTOR + 1 03B0 = OVLS6 EQU $-1 03B1 01364E LXI B,4E36H ;COUNT & DATA 03B2 = OVLS7 EQU $-2 03B4 70 WTL14 MOV M,B ;DATA 03B5 0D DCR C ; POSTAMBLE 03B6 C2B403 JNZ WTL14 ; FIELD 03B9 BB CMP E ;LAST SECTOR TEST 03BA C25F03 JNZ SLOOP 03BD 70 WTL15 MOV M,B ;FILL DATA 03BE 0D DCR C ; TO INDEX HOLE 03BF C2BD03 JNZ WTL15 03C2 70 WTL16 MOV M,B ;FILL DATA 03C3 0D DCR C ; TO INDEX HOLE 03C4 C2C203 JNZ WTL16 03C7 70 WTL17 MOV M,B ;FILL DATA 03C8 0D DCR C ; TO INDEX HOLE 03C9 C2C703 JNZ WTL17 03CC C9 RET 03CD 7E OVLAY MOV A,M ;LENGTH OF LIST 03CE E5 PUSH H ;SAVE LIST PTR 03CF 213403 LXI H,WTRACK ;OVERLAY AREA 03D2 E3 XTHL ; RECOVER POINTER 03D3 1600 MVI D,0 03D5 23 OVLAY1 INX H ;INCREMENT POINTER 03D6 5E MOV E,M ;GET OFFSET 03D7 E3 XTHL ;EXCHANGE POINTERS 03D8 19 DAD D ;ADD THE OFFSET 03D9 F5 PUSH PSW ;SAVE LENGTH COUNT 03DA 0A LDAX B ;GET REPLACEMENT DATA 03DB 77 MOV M,A ;DO THE REPLACEMENT 03DC 03 INX B ;NEXT REPLACEMENT DATA 03DD F1 POP PSW ;RECOVER LENGTH COUNT 03DE 3D DCR A ;DECREMENT 03DF E3 XTHL ;EXCHANGE POINTERS 03E0 C2D503 JNZ OVLAY1 03E3 E1 POP H ;ADJUST STACK 03E4 C9 RET * THE LISTS BELOW REPRESENTS THE DISTANCES * BETWEEN SUCCESSIVE LOCATIONS OF THE WTRACK * ROUTINE THAT ARE TO BE OVERLAID IN ORDER * THAT THE SAME ROUTINE WILL SERVE TO FORMAT * DIFFERENT SIZED AND DENSITY DISKETTE * SECTOR FORMATS 03E5 12 DLIST DB 18 ;LENGTH OF LIST 03E6 06 DB OVLD1-WTRACK 03E7 01 DB 1 03E8 0D DB OVLD2-OVLD1-1 Mar 03,1983 18:47:54 #009 *** Format Program for CP/M Ver. 2.0 *** 03E9 07 DB OVLD3-OVLD2 03EA 01 DB 1 03EB 01 DB 1 03EC 07 DB OVLD4-OVLD3-2 03ED 01 DB 1 03EE 07 DB OVLD5-OVLD4-1 03EF 07 DB OVLD6-OVLD5 03F0 01 DB 1 03F1 01 DB 1 03F2 10 DB OVLD7-OVLD6-2 03F3 01 DB 1 03F4 07 DB OVLD8-OVLD7-1 03F5 07 DB OVLD9-OVLD8 03F6 01 DB 1 03F7 01 DB 1 03F8 09 SLIST DB 9 ;LIST LENGTH 03F9 40 DB OVLS1-WTRACK 03FA 1D DB OVLS2-OVLS1 03FB 01 DB 1 03FC 07 DB OVLS3-OVLS2-1 03FD 07 DB OVLS4-OVLS3 03FE 07 DB OVLS5-OVLS4 03FF 09 DB OVLS6-OVLS5 0400 02 DB OVLS7-OVLS6 0401 01 DB 1 * OVERLAY DATA FOR SINGLE DENSITY * FORMATTED DISKETTES 0402 28FF SDLIST DW 0FF28H 0404 06 DB 6 0405 C35503 JMP WTL3 0408 1AFF DW 0FF1AH 040A 06 DB 6 040B C36D03 JMP WTL6 040E 0BFF DW 0FF0BH 0410 06 DB 6 0411 C38E03 JMP WTL9 * OVERLAY DATA FOR DOUBLE DENSITY * FORMATTED DISKETTES 0414 504E DDLIST DW 4E50H 0416 0C DB 0CH 0417 36F6 MVI M,0F6H 0419 36 DB 36H 041A 324E DW 4E32H 041C 0C DB 0CH 041D 36F5 MVI M,0F5H 041F 36 DB 36H 0420 164E DW 4E16H 0422 0C DB 0CH 0423 36F5 MVI M,0F5H 0425 36 DB 36H Mar 03,1983 18:47:54 #010 *** Format Program for CP/M Ver. 2.0 *** * OVERLAY DATA FOR SINGLE DENSITY * 26 SECTORS/TRACK 128 BYTE SECTORS 0426 00 L128 DB 0 0427 20E5 DW 0E520H 0429 20 DB 20H 042A 20 DB 20H 042B 20 DB 20H 042C 1B DB 27 042D 1BFF DW 0FF1BH * OVERLAY DATA FOR DOUBLE DENSITY * 26 SECTORS/TRACK 256 BYTE SECTORS 042F 01 L256 DB 1 0430 40E5 DW 0E540H 0432 40 DB 40H 0433 40 DB 40H 0434 40 DB 40H 0435 1B DB 27 0436 364E DW 4E36H * OVERLAY DATA FOR DOUBLE DENSITY * 15 SECTORS/TRACK 512 BYTE SECTORS 0438 02 L512 DB 2 0439 80E5 DW 0E580H 043B 80 DB 80H 043C 80 DB 80H 043D 80 DB 80H 043E 10 DB 16 043F 6A4E DW 4E6AH * OVERLAY DATA FOR DOUBLE DENSITY * 8 SECTORS/TRACK 1024 BYTE SECTORS 0441 03 L1024 DB 3 0442 00E5 DW 0E500H 0444 00 DB 0 0445 00 DB 0 0446 00 DB 0 0447 09 DB 9 0448 744E DW 4E74H 044A 0D0A AMESSG DB ACR,ALF 044C 4472697665 DB 'Drive $' 0453 204973204ERMESSG DB ' Is Not Ready.$' 0462 2049732057WMESSG DB ' Is Write Protected.$' 0477 0D0A BMESSG DB ACR,ALF 0479 496D70726F DB 'Improper Response.$' 048C 0D0A DMESSG DB ACR,ALF 048E 53656C6563 DB 'Select Drive (A,B,C,or D): $' Mar 03,1983 18:47:54 #011 *** Format Program for CP/M Ver. 2.0 *** 04AA 4469736B20SMESSG DB 'Disk Jockey 2D Disk Format program' 04CC 2052657669 DB ' Revision ' 04D6 352E32 DB '0'+REVNUM/10,'.','0'+(REVNUM MOD 10) 04D9 0D0A DB ACR,ALF 04DB 5479706520 DB 'Type "^C" to return to CP/M, "N" to restart.$' 0508 0D0A IMESSG DB ACR,ALF 050A 496E736572 DB 'Insert a Write Enabled Diskette in Drive $' 0534 0D0A JMESSG DB ACR,ALF 0536 436C6F7365 DB 'Close the Drive Door and then Press RETURN: $' 0563 0D0A FMESSG DB ACR,ALF 0565 46756E6374 DB 'Function Complete.' 0577 0D0A DB ACR,ALF 0579 5479706520 DB 'Type RETURN to return to CP/M, or F to Format another: $' 05B1 0D0A DENMSG DB ACR,ALF 05B3 53656C6563 DB 'Select a sector size:' 05C8 0D0A DB ACR,ALF 05CA 2020202020 DB ' 1) 128 Byte Single density.' 05EA 0D0A DB ACR,ALF 05EC 2020202020 DB ' 2) 256 Byte Double density.' 060C 0D0A DB ACR,ALF 060E 2020202020 DB ' 3) 512 Byte Double Density.' 062E 0D0A DB ACR,ALF 0630 2020202020 DB ' 4) 1024 Byte Double Density.' 0651 0D0A DB ACR,ALF 0653 536563746F DB 'Sector Size: $' 0661 0D0A24 ACRALF DB ACR,ALF,'$' 0664 00 LETTER DB 0 0665 00 DRVNO DB 0 0666 00 SELECT DB 0 0667 00 NEWSIZE DB 0 0668 DS 50 069A = STACK EQU $ 069A END