PAGE 1 10-13-86 13:33:05 Offset Data Source Line IBM Personal Computer BASIC Compiler V2.00 0030 0006 DIM BLOCK$(511) 0030 0006 DIM DFNAME$(15) 0030 0006 START: 0030 0006 CLEAR 0030 ** CALL $INI 0035 ** CALL $560 003A ** I00001: CALL $DSW 003F ** CALL $EVT 0044 ** INT 3 0045 ** INT 3 0046 ** INT 3 0047 ** I00002: INT 3 0048 ** CALL $LINA 004D ** INT 3 004E ** CALL $CLX 0053 0846 LOCATE 1,10: PRINT "FILLDISK.EXE DOS UTILITY 10/10 /90 BENNY THE ROBOT" 0053 ** INT 3 0054 ** MOV BX,0001H 0057 ** CALL $LO0 005C ** MOV BX,000AH 005F ** CALL $LO2 0064 ** INT 3 0065 ** CALL $PR0A 006A ** MOV BX,OFFSET 006D ** CALL $PV2D 0072 ** CALL $PV4 0077 0846 LOCATE 2,10: PRINT "____________" 0077 ** INT 3 0078 ** MOV BX,0002H 007B ** CALL $LO0 0080 ** MOV BX,000AH 0083 ** CALL $LO2 0088 ** INT 3 0089 ** CALL $PR0A 008E ** MOV BX,OFFSET 0091 ** CALL $PV2D 0096 ** CALL $PV4 009B 0846 009B 0846 LOCATE 4,10: PRINT "Purpose: Calculate remaining free disk sp ace on target drive" 009B ** INT 3 009C ** MOV BX,0004H 009F ** CALL $LO0 00A4 ** MOV BX,000AH 00A7 ** CALL $LO2 00AC ** INT 3 00AD ** CALL $PR0A 00B2 ** MOV BX,OFFSET 00B5 ** CALL $PV2D 00BA ** CALL $PV4 00BF 0846 LOCATE 5,10: PRINT " and fill with one file of speci fied constant data." 00BF ** INT 3 PAGE 2 10-13-86 13:33:05 Offset Data Source Line IBM Personal Computer BASIC Compiler V2.00 00C0 ** MOV BX,0005H 00C3 ** CALL $LO0 00C8 ** MOV BX,000AH 00CB ** CALL $LO2 00D0 ** INT 3 00D1 ** CALL $PR0A 00D6 ** MOV BX,OFFSET 00D9 ** CALL $PV2D 00DE ** CALL $PV4 00E3 0846 00E3 0846 REPEAT: 00E3 ** INT 3 00E4 ** I00003: INT 3 00E5 ** CALL $LINA 00EA 0846 LOCATE 8,1: PRINT SPACE$(80) 00EA ** INT 3 00EB ** MOV BX,0008H 00EE ** CALL $LO0 00F3 ** MOV BX,0001H 00F6 ** CALL $LO2 00FB ** INT 3 00FC ** CALL $PR0A 0101 ** MOV BX,0050H 0104 ** CALL $SP$ 0109 ** CALL $PV2D 010E ** CALL $PV4 0113 0846 LOCATE 18,1: PRINT SPACE$(80) 0113 ** INT 3 0114 ** MOV BX,0012H 0117 ** CALL $LO0 011C ** MOV BX,0001H 011F ** CALL $LO2 0124 ** INT 3 0125 ** CALL $PR0A 012A ** MOV BX,0050H 012D ** CALL $SP$ 0132 ** CALL $PV2D 0137 ** CALL $PV4 013C 0846 LOCATE 21,1: PRINT SPACE$(80) 013C ** INT 3 013D ** MOV BX,0015H 0140 ** CALL $LO0 0145 ** MOV BX,0001H 0148 ** CALL $LO2 014D ** INT 3 014E ** CALL $PR0A 0153 ** MOV BX,0050H 0156 ** CALL $SP$ 015B ** CALL $PV2D 0160 ** CALL $PV4 0165 0846 LOCATE 22,1: PRINT SPACE$(80) 0165 ** INT 3 0166 ** MOV BX,0016H 0169 ** CALL $LO0 PAGE 3 10-13-86 13:33:05 Offset Data Source Line IBM Personal Computer BASIC Compiler V2.00 016E ** MOV BX,0001H 0171 ** CALL $LO2 0176 ** INT 3 0177 ** CALL $PR0A 017C ** MOV BX,0050H 017F ** CALL $SP$ 0184 ** CALL $PV2D 0189 ** CALL $PV4 018E 0846 LOCATE 8,10: INPUT "Enter drive you want to work on (A, B, C . ..): ",DRIVE$ 018E ** INT 3 018F ** MOV BX,0008H 0192 ** CALL $LO0 0197 ** MOV BX,000AH 019A ** CALL $LO2 019F ** INT 3 01A0 ** MOV BX,OFFSET 01A3 ** CALL $IN0A 01A8 ** DB 02H 01A9 ** CALL $IPUA 01AE ** DB 01H 01AF ** DB 04H 01B0 ** MOV BX,OFFSET DRIVE$ 01B3 ** CALL $IPUB 01B8 084A IF LEN(DRIVE$) > 1 THEN GOTO REPEAT 01B8 ** INT 3 01B9 ** MOV BX,OFFSET DRIVE$ 01BC ** CALL $LENA 01C1 ** CMP BX,01H 01C4 ** JG $+03H 01C6 ** JMP I00004 01C9 ** INT 3 01CA ** JMP I00003 01CD 084A IF DRIVE$ = "" THEN DRIVE$ = "A" 01CD ** I00004: INT 3 01CE ** MOV BX,OFFSET 01D1 ** MOV AX,OFFSET DRIVE$ 01D4 ** CALL $SCMA 01D9 ** JE $+03H 01DB ** JMP I00005 01DE ** INT 3 01DF ** MOV BX,OFFSET 01E2 ** MOV DX,OFFSET DRIVE$ 01E5 ** CALL $SASA 01EA 084A DRIVE% = ASC(DRIVE$) 01EA ** I00005: INT 3 01EB ** MOV BX,OFFSET DRIVE$ 01EE ** CALL $LENB 01F3 ** XCHG AX,BX 01F4 ** MOV DRIVE%,AX 01F7 084C IF DRIVE% > 96 THEN DRIVE% = DRIVE% - 96 ELSE DRIVE% = DRIVE% - 64 01F7 ** INT 3 01F8 ** CMP WORD PTR DRIVE%,60H PAGE 4 10-13-86 13:33:05 Offset Data Source Line IBM Personal Computer BASIC Compiler V2.00 01FD ** JG $+03H 01FF ** JMP I00006 0202 ** INT 3 0203 ** MOV AX,DRIVE% 0206 ** ADD AX,0FFA0H 0209 ** INTO 020A ** MOV DRIVE%,AX 020D ** JMP I00007 0210 ** I00006: INT 3 0211 ** MOV AX,DRIVE% 0214 ** ADD AX,0FFC0H 0217 ** INTO 0218 ** MOV DRIVE%,AX 021B 084C LOCATE 8,57: PRINT CHR$(DRIVE% + 64) 021B ** I00007: INT 3 021C ** MOV BX,0008H 021F ** CALL $LO0 0224 ** MOV BX,0039H 0227 ** CALL $LO2 022C ** INT 3 022D ** CALL $PR0A 0232 ** MOV BX,DRIVE% 0236 ** ADD BX,40H 0239 ** INTO 023A ** CALL $CHR 023F ** CALL $PV2D 0244 ** CALL $PV4 0249 084C 0249 084C NAMEAGAIN: 0249 ** INT 3 024A ** I00008: INT 3 024B ** CALL $LINA 0250 084C LOCATE 9,1: PRINT SPACE$(80) 0250 ** INT 3 0251 ** MOV BX,0009H 0254 ** CALL $LO0 0259 ** MOV BX,0001H 025C ** CALL $LO2 0261 ** INT 3 0262 ** CALL $PR0A 0267 ** MOV BX,0050H 026A ** CALL $SP$ 026F ** CALL $PV2D 0274 ** CALL $PV4 0279 084C LOCATE 9,10: PRINT "Enter file name, RETURN for default file n ame FILLER.TMP" 0279 ** INT 3 027A ** MOV BX,0009H 027D ** CALL $LO0 0282 ** MOV BX,000AH 0285 ** CALL $LO2 028A ** INT 3 028B ** CALL $PR0A 0290 ** MOV BX,OFFSET PAGE 5 10-13-86 13:33:05 Offset Data Source Line IBM Personal Computer BASIC Compiler V2.00 0293 ** CALL $PV2D 0298 ** CALL $PV4 029D 084C LOCATE 9,57: INPUT "",DFNAME$ 029D ** INT 3 029E ** MOV BX,0009H 02A1 ** CALL $LO0 02A6 ** MOV BX,0039H 02A9 ** CALL $LO2 02AE ** INT 3 02AF ** MOV BX,OFFSET 02B2 ** CALL $IN0A 02B7 ** DB 02H 02B8 ** CALL $IPUA 02BD ** DB 01H 02BE ** DB 04H 02BF ** MOV BX,OFFSET DFNAME$ 02C2 ** CALL $IPUB 02C7 0850 IF LEN(DFNAME$) > 12 THEN GOTO NAMEAGAIN 02C7 ** INT 3 02C8 ** MOV BX,OFFSET DFNAME$ 02CB ** CALL $LENA 02D0 ** CMP BX,0CH 02D3 ** JG $+03H 02D5 ** JMP I00009 02D8 ** INT 3 02D9 ** JMP I00008 02DC 0850 IF DFNAME$ = "" THEN DFNAME$ = "FILLER.TMP" 02DC ** I00009: INT 3 02DD ** MOV BX,OFFSET 02E0 ** MOV AX,OFFSET DFNAME$ 02E3 ** CALL $SCMA 02E8 ** JE $+03H 02EA ** JMP I00010 02ED ** INT 3 02EE ** MOV BX,OFFSET 02F1 ** MOV DX,OFFSET DFNAME$ 02F4 ** CALL $SASA 02F9 0850 LOCATE 9,57: PRINT SPACE$(12) 02F9 ** I00010: INT 3 02FA ** MOV BX,0009H 02FD ** CALL $LO0 0302 ** MOV BX,0039H 0305 ** CALL $LO2 030A ** INT 3 030B ** CALL $PR0A 0310 ** MOV BX,000CH 0313 ** CALL $SP$ 0318 ** CALL $PV2D 031D ** CALL $PV4 0322 0850 LOCATE 9,57: PRINT DFNAME$ 0322 ** INT 3 0323 ** MOV BX,0009H 0326 ** CALL $LO0 032B ** MOV BX,0039H PAGE 6 10-13-86 13:33:05 Offset Data Source Line IBM Personal Computer BASIC Compiler V2.00 032E ** CALL $LO2 0333 ** INT 3 0334 ** CALL $PR0A 0339 ** MOV BX,OFFSET DFNAME$ 033C ** CALL $PV2D 0341 ** CALL $PV4 0346 0850 LOCATE 10,10: PRINT "Fill character, RETURN for default: 00 (entry in hex)" 0346 ** INT 3 0347 ** MOV BX,000AH 034A ** CALL $LO0 034F ** CALL $LO2 0354 ** INT 3 0355 ** CALL $PR0A 035A ** MOV BX,OFFSET 035D ** CALL $PV2D 0362 ** CALL $PV4 0367 0850 LOCATE 11,10: PRINT "(Entries in decimal must be followed by D) " 0367 ** INT 3 0368 ** MOV BX,000BH 036B ** CALL $LO0 0370 ** MOV BX,000AH 0373 ** CALL $LO2 0378 ** INT 3 0379 ** CALL $PR0A 037E ** MOV BX,OFFSET 0381 ** CALL $PV2D 0386 ** CALL $PV4 038B 0850 GOTO ENTERVAL 038B ** INT 3 038C ** JMP I00011 038F 0850 038F 0850 VALAGAIN: 038F ** INT 3 0390 ** I00012: INT 3 0391 ** CALL $LINA 0396 0850 LOCATE 10,48: PRINT SPACE$(32) 0396 ** INT 3 0397 ** MOV BX,000AH 039A ** CALL $LO0 039F ** MOV BX,0030H 03A2 ** CALL $LO2 03A7 ** INT 3 03A8 ** CALL $PR0A 03AD ** MOV BX,0020H 03B0 ** CALL $SP$ 03B5 ** CALL $PV2D 03BA ** CALL $PV4 03BF 0850 LOCATE 11,1: PRINT SPACE$(80) 03BF ** INT 3 03C0 ** MOV BX,000BH 03C3 ** CALL $LO0 03C8 ** MOV BX,0001H PAGE 7 10-13-86 13:33:05 Offset Data Source Line IBM Personal Computer BASIC Compiler V2.00 03CB ** CALL $LO2 03D0 ** INT 3 03D1 ** CALL $PR0A 03D6 ** MOV BX,0050H 03D9 ** CALL $SP$ 03DE ** CALL $PV2D 03E3 ** CALL $PV4 03E8 0850 ENTERVAL: 03E8 ** INT 3 03E9 ** I00011: INT 3 03EA ** CALL $LINA 03EF 0850 LOCATE 10,48: INPUT "",DFILLER$ 03EF ** INT 3 03F0 ** MOV BX,000AH 03F3 ** CALL $LO0 03F8 ** MOV BX,0030H 03FB ** CALL $LO2 0400 ** INT 3 0401 ** MOV BX,OFFSET 0404 ** CALL $IN0A 0409 ** DB 02H 040A ** CALL $IPUA 040F ** DB 01H 0410 ** DB 04H 0411 ** MOV BX,OFFSET DFILLER$ 0414 ** CALL $IPUB 0419 0854 IF DFILLER$ = "" THEN DFILLER% = 0: GOTO GETSPACE 0419 ** INT 3 041A ** MOV BX,OFFSET 041D ** MOV AX,OFFSET DFILLER$ 0420 ** CALL $SCMA 0425 ** JE $+03H 0427 ** JMP I00013 042A ** INT 3 042B ** MOV DFILLER%,0000H 0431 ** INT 3 0432 ** JMP I00014 0435 0856 IF LEN(DFILLER$) < 3 THEN GOTO HEXVALUE 0435 ** I00013: INT 3 0436 ** MOV BX,OFFSET DFILLER$ 0439 ** CALL $LENA 043E ** CMP BX,03H 0441 ** JL $+03H 0443 ** JMP I00015 0446 ** INT 3 0447 ** JMP I00016 044A 0856 IF VAL(DFILLER$) > 255 THEN GOTO VALAGAIN 044A ** I00015: INT 3 044B ** MOV BX,OFFSET DFILLER$ 044E ** CALL $VAL 0453 ** MOV DI,OFFSET 0456 ** CALL $FCMD 045B ** JA $+03H 045D ** JMP I00017 PAGE 8 10-13-86 13:33:05 Offset Data Source Line IBM Personal Computer BASIC Compiler V2.00 0460 ** INT 3 0461 ** JMP I00012 0464 0856 IF RIGHT$(DFILLER$,1) = "D" OR RIGHT$(DFILLER$,1) = "d" THEN DF ILLER% = VAL(LEFT$(DFILLER$,3)):TYPE$ = "Decimal":GOTO GETSPACE 0464 ** I00017: INT 3 0465 ** MOV BX,OFFSET DFILLER$ 0468 ** MOV DX,0001H 046B ** MOV CX,BX 046D ** CALL $RIG 0472 ** XCHG AX,BX 0473 ** MOV BX,OFFSET 0476 ** CALL $SCMA 047B ** MOV 0FAH[BP],DX 047E ** MOV DX,0000H 0481 ** JNE $+01H 0483 ** DEC DX 0484 ** MOV BX,CX 0486 ** MOV AX,DX 0488 ** MOV DX,0FAH[BP] 048B ** CALL $RIG 0490 ** XCHG AX,BX 0491 ** MOV DX,BX 0493 ** MOV BX,OFFSET 0496 ** CALL $SCMA 049B ** MOV CX,0000H 049E ** JNE $+01H 04A0 ** DEC CX 04A1 ** OR CX,DX 04A3 ** AND CX,CX 04A5 ** JNE $+03H 04A7 ** JMP I00018 04AA ** INT 3 04AB ** MOV BX,OFFSET DFILLER$ 04AE ** MOV DX,0003H 04B1 ** CALL $LEF 04B6 ** CALL $VAL 04BB ** CALL $CIND 04C0 ** XCHG AX,BX 04C1 ** MOV DFILLER%,AX 04C4 ** INT 3 04C5 ** MOV BX,OFFSET 04C8 ** MOV DX,OFFSET TYPE$ 04CB ** CALL $SASA 04D0 ** INT 3 04D1 ** JMP I00014 04D4 085A 04D4 085A HEXVALUE: 04D4 ** I00018: INT 3 04D5 ** I00016: INT 3 04D6 ** CALL $LINA 04DB 085A H2 = VAL(LEFT$(DFILLER$,1)) 04DB ** INT 3 04DC ** MOV BX,OFFSET DFILLER$ 04DF ** MOV DX,0001H PAGE 9 10-13-86 13:33:05 Offset Data Source Line IBM Personal Computer BASIC Compiler V2.00 04E2 ** CALL $LEF 04E7 ** CALL $VAL 04EC ** CALL $CSPB 04F1 ** MOV DI,OFFSET H2! 04F4 ** CALL $FASC 04F9 085E H1 = VAL(MID$(DFILLER$,2,1)) 04F9 ** INT 3 04FA ** MOV BX,OFFSET DFILLER$ 04FD ** MOV DX,0002H 0500 ** MOV CX,0001H 0503 ** CALL $MID 0508 ** CALL $VAL 050D ** CALL $CSPB 0512 ** MOV DI,OFFSET H1! 0515 ** CALL $FASC 051A 0862 DFILLER% = H2 * 16 + H1 051A ** INT 3 051B ** MOV SI,OFFSET H2! 051E ** CALL $FSHA 0523 ** DB 04H 0524 ** MOV DI,OFFSET H1! 0527 ** CALL $FADC 052C ** CALL $CINC 0531 ** XCHG AX,BX 0532 ** MOV DFILLER%,AX 0535 0862 TYPE$ = "Hexadecimal" 0535 ** INT 3 0536 ** MOV BX,OFFSET 0539 ** MOV DX,OFFSET TYPE$ 053C ** CALL $SASA 0541 0862 0541 0862 GETSPACE: 0541 ** INT 3 0542 ** I00014: INT 3 0543 ** CALL $LINA 0548 0862 LOCATE 11,1: PRINT SPACE$(80) 0548 ** INT 3 0549 ** MOV BX,000BH 054C ** CALL $LO0 0551 ** MOV BX,0001H 0554 ** CALL $LO2 0559 ** INT 3 055A ** CALL $PR0A 055F ** MOV BX,0050H 0562 ** CALL $SP$ 0567 ** CALL $PV2D 056C ** CALL $PV4 0571 0862 LOCATE 10,52: PRINT SPACE$(20) 0571 ** INT 3 0572 ** MOV BX,000AH 0575 ** CALL $LO0 057A ** MOV BX,0034H 057D ** CALL $LO2 0582 ** INT 3 PAGE 10 10-13-86 13:33:05 Offset Data Source Line IBM Personal Computer BASIC Compiler V2.00 0583 ** CALL $PR0A 0588 ** MOV BX,0014H 058B ** CALL $SP$ 0590 ** CALL $PV2D 0595 ** CALL $PV4 059A 0862 LOCATE 10,52: PRINT TYPE$ 059A ** INT 3 059B ** MOV BX,000AH 059E ** CALL $LO0 05A3 ** MOV BX,0034H 05A6 ** CALL $LO2 05AB ** INT 3 05AC ** CALL $PR0A 05B1 ** MOV BX,OFFSET TYPE$ 05B4 ** CALL $PV2D 05B9 ** CALL $PV4 05BE 0862 LOCATE 12,10: PRINT "checking free disk space, please wait ... " 05BE ** INT 3 05BF ** MOV BX,000CH 05C2 ** CALL $LO0 05C7 ** MOV BX,000AH 05CA ** CALL $LO2 05CF ** INT 3 05D0 ** CALL $PR0A 05D5 ** MOV BX,OFFSET 05D8 ** CALL $PV2D 05DD ** CALL $PV4 05E2 0862 05E2 0862 BLOCK$ = STRING$(512,DFILLER%) 05E2 ** INT 3 05E3 ** MOV BX,0200H 05E6 ** MOV DX,DFILLER% 05EA ** CALL $ST$ 05EF ** MOV DX,OFFSET BLOCK$ 05F2 ** CALL $SASA 05F7 0866 05F7 0866 CALL DSPACE(DRIVE%,SECTORS%,BYTES%,CLUSTERS%) 05F7 ** INT 3 05F8 ** MOV AX,OFFSET DRIVE% 05FB ** PUSH AX 05FC ** MOV AX,OFFSET SECTORS% 05FF ** PUSH AX 0600 ** MOV AX,OFFSET BYTES% 0603 ** PUSH AX 0604 ** MOV AX,OFFSET CLUSTERS% 0607 ** PUSH AX 0608 ** CALL $ASP 060D ** CALL DSPACE 0612 ** PUSH DS 0613 ** POP ES 0614 ** CLD 0615 086C 0615 086C LOCATE 13,1: PRINT SPACE$(80) PAGE 11 10-13-86 13:33:05 Offset Data Source Line IBM Personal Computer BASIC Compiler V2.00 0615 ** INT 3 0616 ** MOV BX,000DH 0619 ** CALL $LO0 061E ** MOV BX,0001H 0621 ** CALL $LO2 0626 ** INT 3 0627 ** CALL $PR0A 062C ** MOV BX,0050H 062F ** CALL $SP$ 0634 ** CALL $PV2D 0639 ** CALL $PV4 063E 086C LOCATE 14,1: PRINT SPACE$(80) 063E ** INT 3 063F ** MOV BX,000EH 0642 ** CALL $LO0 0647 ** MOV BX,0001H 064A ** CALL $LO2 064F ** INT 3 0650 ** CALL $PR0A 0655 ** MOV BX,0050H 0658 ** CALL $SP$ 065D ** CALL $PV2D 0662 ** CALL $PV4 0667 086C LOCATE 15,1: PRINT SPACE$(80) 0667 ** INT 3 0668 ** MOV BX,000FH 066B ** CALL $LO0 0670 ** MOV BX,0001H 0673 ** CALL $LO2 0678 ** INT 3 0679 ** CALL $PR0A 067E ** MOV BX,0050H 0681 ** CALL $SP$ 0686 ** CALL $PV2D 068B ** CALL $PV4 0690 086C LOCATE 12,1: PRINT SPACE$(80) 0690 ** INT 3 0691 ** MOV BX,000CH 0694 ** CALL $LO0 0699 ** MOV BX,0001H 069C ** CALL $LO2 06A1 ** INT 3 06A2 ** CALL $PR0A 06A7 ** MOV BX,0050H 06AA ** CALL $SP$ 06AF ** CALL $PV2D 06B4 ** CALL $PV4 06B9 086C LOCATE 12,10: PRINT "Bytes per sector: ";BYTES% 06B9 ** INT 3 06BA ** MOV BX,000CH 06BD ** CALL $LO0 06C2 ** MOV BX,000AH 06C5 ** CALL $LO2 06CA ** INT 3 PAGE 12 10-13-86 13:33:05 Offset Data Source Line IBM Personal Computer BASIC Compiler V2.00 06CB ** CALL $PR0A 06D0 ** MOV BX,OFFSET 06D3 ** CALL $PV1D 06D8 ** MOV BX,BYTES% 06DC ** CALL $PV2C 06E1 ** CALL $PV4 06E6 086C LOCATE 13,10: PRINT "Sectors per cluster: ";SECTORS% 06E6 ** INT 3 06E7 ** MOV BX,000DH 06EA ** CALL $LO0 06EF ** MOV BX,000AH 06F2 ** CALL $LO2 06F7 ** INT 3 06F8 ** CALL $PR0A 06FD ** MOV BX,OFFSET 0700 ** CALL $PV1D 0705 ** MOV BX,SECTORS% 0709 ** CALL $PV2C 070E ** CALL $PV4 0713 086C LOCATE 14,10: PRINT "Available clusters: ";CLUSTERS%; 0713 ** INT 3 0714 ** MOV BX,000EH 0717 ** CALL $LO0 071C ** MOV BX,000AH 071F ** CALL $LO2 0724 ** INT 3 0725 ** CALL $PR0A 072A ** MOV BX,OFFSET 072D ** CALL $PV1D 0732 ** MOV BX,CLUSTERS% 0736 ** CALL $PV1C 073B ** CALL $PV4 0740 086C PRINT " Total sectors: ";SECTORS%*CLUSTERS% 0740 ** INT 3 0741 ** CALL $PR0A 0746 ** MOV BX,OFFSET 0749 ** CALL $PV1D 074E ** MOV AX,CLUSTERS% 0751 ** IMUL SECTORS% 0755 ** INTO 0756 ** XCHG AX,BX 0757 ** CALL $PV2C 075C ** CALL $PV4 0761 086C SECTORS = SECTORS%: BYTES = BYTES%: CLUSTERS = CLUSTERS% 0761 ** INT 3 0762 ** MOV BX,SECTORS% 0766 ** CALL $CISA 076B ** MOV DI,OFFSET SECTORS! 076E ** CALL $FASC 0773 ** INT 3 0774 ** MOV BX,BYTES% 0778 ** CALL $CISA 077D ** MOV DI,OFFSET BYTES! 0780 ** CALL $FASC PAGE 13 10-13-86 13:33:05 Offset Data Source Line IBM Personal Computer BASIC Compiler V2.00 0785 ** INT 3 0786 ** MOV BX,CLUSTERS% 078A ** CALL $CISA 078F ** MOV DI,OFFSET CLUSTERS! 0792 ** CALL $FASC 0797 0878 0797 0878 RES = SECTORS * BYTES * CLUSTERS / 1000 0797 ** INT 3 0798 ** MOV DI,OFFSET BYTES! 079B ** MOV SI,OFFSET SECTORS! 079E ** CALL $FMUA 07A3 ** MOV DI,OFFSET CLUSTERS! 07A6 ** CALL $FMUC 07AB ** MOV DI,OFFSET 07AE ** CALL $FDVC 07B3 ** MOV DI,OFFSET RES! 07B6 ** CALL $FASC 07BB 087C LOCATE 16,10: PRINT "There are "; 07BB ** INT 3 07BC ** MOV BX,0010H 07BF ** CALL $LO0 07C4 ** MOV BX,000AH 07C7 ** CALL $LO2 07CC ** INT 3 07CD ** CALL $PR0A 07D2 ** MOV BX,OFFSET 07D5 ** CALL $PV1D 07DA ** CALL $PV4 07DF 087C PRINT USING "####,.###"; RES; 07DF ** INT 3 07E0 ** MOV BX,OFFSET 07E3 ** CALL $PR0B 07E8 ** MOV BX,OFFSET RES! 07EB ** CALL $PV1A 07F0 ** CALL $PV4 07F5 087C PRINT " KBytes ready to be filled with ASCII "; 07F5 ** INT 3 07F6 ** CALL $PR0A 07FB ** MOV BX,OFFSET 07FE ** CALL $PV1D 0803 ** CALL $PV4 0808 087C IF DFILLER% < 32 THEN PRINT "CTRL ";CHR$(DFILLER%+64) ELSE PRIN T CHR$(DFILLER%) 0808 ** INT 3 0809 ** CMP WORD PTR DFILLER%,20H 080E ** JL $+03H 0810 ** JMP I00019 0813 ** INT 3 0814 ** CALL $PR0A 0819 ** MOV BX,OFFSET 081C ** CALL $PV1D 0821 ** MOV BX,DFILLER% 0825 ** ADD BX,40H 0828 ** INTO PAGE 14 10-13-86 13:33:05 Offset Data Source Line IBM Personal Computer BASIC Compiler V2.00 0829 ** CALL $CHR 082E ** CALL $PV2D 0833 ** CALL $PV4 0838 ** JMP I00020 083B ** I00019: INT 3 083C ** CALL $PR0A 0841 ** MOV BX,DFILLER% 0845 ** CALL $CHR 084A ** CALL $PV2D 084F ** CALL $PV4 0854 087C 0854 087C RECORDS% = INT(CLUSTERS * SECTORS) 0854 ** I00020: INT 3 0855 ** MOV DI,OFFSET SECTORS! 0858 ** MOV SI,OFFSET CLUSTERS! 085B ** CALL $FMUA 0860 ** MOV BX,OFFSET $AC! 0863 ** CALL $INT 0868 ** CALL $CINC 086D ** XCHG AX,BX 086E ** MOV RECORDS%,AX 0871 087E LOCATE 18,10: PRINT "How many sectors do you want to write, max . ";RECORDS% 0871 ** INT 3 0872 ** MOV BX,0012H 0875 ** CALL $LO0 087A ** MOV BX,000AH 087D ** CALL $LO2 0882 ** INT 3 0883 ** CALL $PR0A 0888 ** MOV BX,OFFSET 088B ** CALL $PV1D 0890 ** MOV BX,RECORDS% 0894 ** CALL $PV2C 0899 ** CALL $PV4 089E 087E LOCATE 19,10: PRINT "(RETURN for default, 0 to exit program)" 089E ** INT 3 089F ** MOV BX,0013H 08A2 ** CALL $LO0 08A7 ** MOV BX,000AH 08AA ** CALL $LO2 08AF ** INT 3 08B0 ** CALL $PR0A 08B5 ** MOV BX,OFFSET 08B8 ** CALL $PV2D 08BD ** CALL $PV4 08C2 087E LOCATE 18,55: INPUT "",RECMIN$ 08C2 ** INT 3 08C3 ** MOV BX,0012H 08C6 ** CALL $LO0 08CB ** MOV BX,0037H 08CE ** CALL $LO2 08D3 ** INT 3 08D4 ** MOV BX,OFFSET PAGE 15 10-13-86 13:33:05 Offset Data Source Line IBM Personal Computer BASIC Compiler V2.00 08D7 ** CALL $IN0A 08DC ** DB 02H 08DD ** CALL $IPUA 08E2 ** DB 01H 08E3 ** DB 04H 08E4 ** MOV BX,OFFSET RECMIN$ 08E7 ** CALL $IPUB 08EC 0882 LOCATE 18,55: PRINT SPACE$(6) 08EC ** INT 3 08ED ** MOV BX,0012H 08F0 ** CALL $LO0 08F5 ** MOV BX,0037H 08F8 ** CALL $LO2 08FD ** INT 3 08FE ** CALL $PR0A 0903 ** MOV BX,0006H 0906 ** CALL $SP$ 090B ** CALL $PV2D 0910 ** CALL $PV4 0915 0882 LOCATE 18,55: PRINT RECMIN$ 0915 ** INT 3 0916 ** MOV BX,0012H 0919 ** CALL $LO0 091E ** MOV BX,0037H 0921 ** CALL $LO2 0926 ** INT 3 0927 ** CALL $PR0A 092C ** MOV BX,OFFSET RECMIN$ 092F ** CALL $PV2D 0934 ** CALL $PV4 0939 0882 0939 0882 CHECKENTRY: 0939 ** INT 3 093A ** I00021: INT 3 093B ** CALL $LINA 0940 0882 RECMIN% = VAL(RECMIN$) 0940 ** INT 3 0941 ** MOV BX,OFFSET RECMIN$ 0944 ** CALL $VAL 0949 ** CALL $CIND 094E ** XCHG AX,BX 094F ** MOV RECMIN%,AX 0952 0884 IF RECMIN$ = "" THEN RECMIN% = RECORDS% 0952 ** INT 3 0953 ** MOV BX,OFFSET 0956 ** MOV AX,OFFSET RECMIN$ 0959 ** CALL $SCMA 095E ** JE $+03H 0960 ** JMP I00022 0963 ** INT 3 0964 ** MOV AX,RECORDS% 0967 ** MOV RECMIN%,AX 096A 0884 IF RECMIN% < 1 THEN GOTO PROGEXIT 096A ** I00022: INT 3 PAGE 16 10-13-86 13:33:05 Offset Data Source Line IBM Personal Computer BASIC Compiler V2.00 096B ** CMP WORD PTR RECMIN%,01H 0970 ** JL $+03H 0972 ** JMP I00023 0975 ** INT 3 0976 ** JMP I00024 0979 0884 IF RECMIN% > RECORDS% THEN GOTO REFUSE 0979 ** I00023: INT 3 097A ** MOV AX,RECORDS% 097D ** CMP AX,RECMIN% 0981 ** JL $+03H 0983 ** JMP I00025 0986 ** INT 3 0987 ** JMP I00026 098A 0884 GOTO ACCEPT 098A ** I00025: INT 3 098B ** JMP I00027 098E 0884 REFUSE: 098E ** INT 3 098F ** I00026: INT 3 0990 ** CALL $LINA 0995 0884 LOCATE 18,10: PRINT "You are only allowed to write a maximum of ";RECORDS%;" sectors" 0995 ** INT 3 0996 ** MOV BX,0012H 0999 ** CALL $LO0 099E ** MOV BX,000AH 09A1 ** CALL $LO2 09A6 ** INT 3 09A7 ** CALL $PR0A 09AC ** MOV BX,OFFSET 09AF ** CALL $PV1D 09B4 ** MOV BX,RECORDS% 09B8 ** CALL $PV1C 09BD ** MOV BX,OFFSET 09C0 ** CALL $PV2D 09C5 ** CALL $PV4 09CA 0884 LOCATE 19,10: PRINT "Please enter again, 0 to exit program " 09CA ** INT 3 09CB ** MOV BX,0013H 09CE ** CALL $LO0 09D3 ** MOV BX,000AH 09D6 ** CALL $LO2 09DB ** INT 3 09DC ** CALL $PR0A 09E1 ** MOV BX,OFFSET 09E4 ** CALL $PV2D 09E9 ** CALL $PV4 09EE 0884 LOCATE 18,55: INPUT "",RECMIN$ 09EE ** INT 3 09EF ** MOV BX,0012H 09F2 ** CALL $LO0 09F7 ** MOV BX,0037H 09FA ** CALL $LO2 09FF ** INT 3 PAGE 17 10-13-86 13:33:05 Offset Data Source Line IBM Personal Computer BASIC Compiler V2.00 0A00 ** MOV BX,OFFSET 0A03 ** CALL $IN0A 0A08 ** DB 02H 0A09 ** CALL $IPUA 0A0E ** DB 01H 0A0F ** DB 04H 0A10 ** MOV BX,OFFSET RECMIN$ 0A13 ** CALL $IPUB 0A18 0884 LOCATE 18,1: PRINT SPACE$(80) 0A18 ** INT 3 0A19 ** MOV BX,0012H 0A1C ** CALL $LO0 0A21 ** MOV BX,0001H 0A24 ** CALL $LO2 0A29 ** INT 3 0A2A ** CALL $PR0A 0A2F ** MOV BX,0050H 0A32 ** CALL $SP$ 0A37 ** CALL $PV2D 0A3C ** CALL $PV4 0A41 0884 LOCATE 19,1: PRINT SPACE$(80) 0A41 ** INT 3 0A42 ** MOV BX,0013H 0A45 ** CALL $LO0 0A4A ** MOV BX,0001H 0A4D ** CALL $LO2 0A52 ** INT 3 0A53 ** CALL $PR0A 0A58 ** MOV BX,0050H 0A5B ** CALL $SP$ 0A60 ** CALL $PV2D 0A65 ** CALL $PV4 0A6A 0884 GOTO CHECKENTRY: 0A6A ** INT 3 0A6B ** JMP I00021 0A6E 0884 ACCEPT: 0A6E ** INT 3 0A6F ** I00027: INT 3 0A70 ** CALL $LINA 0A75 0884 RECORDS% = RECMIN% 0A75 ** INT 3 0A76 ** MOV AX,RECMIN% 0A79 ** MOV RECORDS%,AX 0A7C 0884 LOCATE 18,1: PRINT SPACE$(80) 0A7C ** INT 3 0A7D ** MOV BX,0012H 0A80 ** CALL $LO0 0A85 ** MOV BX,0001H 0A88 ** CALL $LO2 0A8D ** INT 3 0A8E ** CALL $PR0A 0A93 ** MOV BX,0050H 0A96 ** CALL $SP$ 0A9B ** CALL $PV2D PAGE 18 10-13-86 13:33:05 Offset Data Source Line IBM Personal Computer BASIC Compiler V2.00 0AA0 ** CALL $PV4 0AA5 0884 LOCATE 19,1: PRINT SPACE$(80) 0AA5 ** INT 3 0AA6 ** MOV BX,0013H 0AA9 ** CALL $LO0 0AAE ** MOV BX,0001H 0AB1 ** CALL $LO2 0AB6 ** INT 3 0AB7 ** CALL $PR0A 0ABC ** MOV BX,0050H 0ABF ** CALL $SP$ 0AC4 ** CALL $PV2D 0AC9 ** CALL $PV4 0ACE 0884 LOCATE 18,10: PRINT "writing ";RECORDS%;" sectors, please wait ... " 0ACE ** INT 3 0ACF ** MOV BX,0012H 0AD2 ** CALL $LO0 0AD7 ** MOV BX,000AH 0ADA ** CALL $LO2 0ADF ** INT 3 0AE0 ** CALL $PR0A 0AE5 ** MOV BX,OFFSET 0AE8 ** CALL $PV1D 0AED ** MOV BX,RECORDS% 0AF1 ** CALL $PV1C 0AF6 ** MOV BX,OFFSET 0AF9 ** CALL $PV2D 0AFE ** CALL $PV4 0B03 0884 0B03 0884 LOCATE 20,10: PRINT "File named ";CHR$(DRIVE%+64)+":";DFNAME$ 0B03 ** INT 3 0B04 ** MOV BX,0014H 0B07 ** CALL $LO0 0B0C ** MOV BX,000AH 0B0F ** CALL $LO2 0B14 ** INT 3 0B15 ** CALL $PR0A 0B1A ** MOV BX,OFFSET 0B1D ** CALL $PV1D 0B22 ** MOV BX,DRIVE% 0B26 ** ADD BX,40H 0B29 ** INTO 0B2A ** CALL $CHR 0B2F ** XCHG AX,BX 0B30 ** MOV BX,OFFSET 0B33 ** CALL $AD$A 0B38 ** CALL $PV1D 0B3D ** MOV BX,OFFSET DFNAME$ 0B40 ** CALL $PV2D 0B45 ** CALL $PV4 0B4A 0884 DFNAME$ = CHR$(DRIVE%+64)+":"+DFNAME$+CHR$(0)+"$" 0B4A ** INT 3 0B4B ** MOV BX,DRIVE% PAGE 19 10-13-86 13:33:05 Offset Data Source Line IBM Personal Computer BASIC Compiler V2.00 0B4F ** ADD BX,40H 0B52 ** INTO 0B53 ** CALL $CHR 0B58 ** XCHG AX,BX 0B59 ** MOV BX,OFFSET 0B5C ** CALL $AD$A 0B61 ** XCHG AX,BX 0B62 ** MOV BX,OFFSET DFNAME$ 0B65 ** MOV DX,BX 0B67 ** CALL $AD$A 0B6C ** MOV CX,BX 0B6E ** XOR BX,BX 0B70 ** CALL $CHR 0B75 ** XCHG AX,CX 0B76 ** CALL $AD$A 0B7B ** XCHG AX,BX 0B7C ** MOV BX,OFFSET 0B7F ** CALL $AD$A 0B84 ** CALL $SASA 0B89 0884 0B89 0884 CALL DFILL(DFNAME$,BLOCK$,RECORDS%) 0B89 ** INT 3 0B8A ** MOV AX,OFFSET DFNAME$ 0B8D ** PUSH AX 0B8E ** MOV AX,OFFSET BLOCK$ 0B91 ** PUSH AX 0B92 ** MOV AX,OFFSET RECORDS% 0B95 ** PUSH AX 0B96 ** CALL $ASP 0B9B ** CALL DFILL 0BA0 ** PUSH DS 0BA1 ** POP ES 0BA2 ** CLD 0BA3 0884 0BA3 0884 PROGEXIT: 0BA3 ** INT 3 0BA4 ** I00024: INT 3 0BA5 ** CALL $LINA 0BAA 0884 IF RECMIN% < 1 THEN RESP$ = " PROGRAM ABORTED" ELSE RES P$ = "DONE" 0BAA ** INT 3 0BAB ** CMP WORD PTR RECMIN%,01H 0BB0 ** JL $+03H 0BB2 ** JMP I00028 0BB5 ** INT 3 0BB6 ** MOV BX,OFFSET 0BB9 ** MOV DX,OFFSET RESP$ 0BBC ** CALL $SASA 0BC1 ** JMP I00029 0BC4 ** I00028: INT 3 0BC5 ** MOV BX,OFFSET 0BC8 ** MOV DX,OFFSET RESP$ 0BCB ** CALL $SASA 0BD0 0888 LOCATE 21,1: PRINT SPACE$(80) PAGE 20 10-13-86 13:33:05 Offset Data Source Line IBM Personal Computer BASIC Compiler V2.00 0BD0 ** I00029: INT 3 0BD1 ** MOV BX,0015H 0BD4 ** CALL $LO0 0BD9 ** MOV BX,0001H 0BDC ** CALL $LO2 0BE1 ** INT 3 0BE2 ** CALL $PR0A 0BE7 ** MOV BX,0050H 0BEA ** CALL $SP$ 0BEF ** CALL $PV2D 0BF4 ** CALL $PV4 0BF9 0888 LOCATE 21,67: PRINT RESP$ 0BF9 ** INT 3 0BFA ** MOV BX,0015H 0BFD ** CALL $LO0 0C02 ** MOV BX,0043H 0C05 ** CALL $LO2 0C0A ** INT 3 0C0B ** CALL $PR0A 0C10 ** MOV BX,OFFSET RESP$ 0C13 ** CALL $PV2D 0C18 ** CALL $PV4 0C1D 0888 LOCATE 22,10: INPUT "Do again ? (Y/N): ",ANSWER$ 0C1D ** INT 3 0C1E ** MOV BX,0016H 0C21 ** CALL $LO0 0C26 ** MOV BX,000AH 0C29 ** CALL $LO2 0C2E ** INT 3 0C2F ** MOV BX,OFFSET 0C32 ** CALL $IN0A 0C37 ** DB 02H 0C38 ** CALL $IPUA 0C3D ** DB 01H 0C3E ** DB 04H 0C3F ** MOV BX,OFFSET ANSWER$ 0C42 ** CALL $IPUB 0C47 088C A$ = LEFT$(ANSWER$,1) 0C47 ** INT 3 0C48 ** MOV BX,OFFSET ANSWER$ 0C4B ** MOV DX,0001H 0C4E ** CALL $LEF 0C53 ** MOV DX,OFFSET A$ 0C56 ** CALL $SASA 0C5B 0890 IF A$ = "y" OR A$ = "Y" THEN LOCATE 16,16: PRINT "were": GOTO S TART 0C5B ** INT 3 0C5C ** MOV BX,OFFSET 0C5F ** MOV AX,OFFSET A$ 0C62 ** CALL $SCMA 0C67 ** MOV DX,0000H 0C6A ** JNE $+01H 0C6C ** DEC DX 0C6D ** MOV BX,OFFSET PAGE 21 10-13-86 13:33:05 Offset Data Source Line IBM Personal Computer BASIC Compiler V2.00 0C70 ** CALL $SCMA 0C75 ** MOV CX,0000H 0C78 ** JNE $+01H 0C7A ** DEC CX 0C7B ** OR CX,DX 0C7D ** AND CX,CX 0C7F ** JNE $+03H 0C81 ** JMP I00030 0C84 ** INT 3 0C85 ** MOV BX,0010H 0C88 ** CALL $LO0 0C8D ** CALL $LO2 0C92 ** INT 3 0C93 ** CALL $PR0A 0C98 ** MOV BX,OFFSET 0C9B ** CALL $PV2D 0CA0 ** CALL $PV4 0CA5 ** INT 3 0CA6 ** JMP I00002 0CA9 0890 0CA9 0890 SYSTEM 0CA9 ** I00030: INT 3 0CAA ** CALL $END 0CAF 0890 0CAF ** CALL $ENP 0CB6 0890 50424 Bytes Available 47950 Bytes Free 0 Warning Error(s) 0 Severe Error(s)