icon 1 0 1 o 1 020 1 030 1040 1 050 1 060 1 070 1 080 1 090 1 3. 00 1 1 1 0 1 1 20 1 130 1 1 40 1 1 50 1 1 6 I.) 1 1 70 1 1 80 1 1 90 1200 1 2 1 0 1 220 1 230 1240 1 250 1 260 1 270 1 280 1 290 *“$0480 PUTL I N~$F385 DSKINV==$E453 SI0V=$E459 D0SVEC=$0A DOS INI =$0C C 0 L D S T = $ O 2 4 4 GETCH=$F593 0 U T C H - $ F 5 B 7 CHAR=$02FA AT ACHR=$02FB INBUF=$B9 : TEMP WORK AREA K G E T C 2 = $ F 6 D D SDRIVE=$CD : SOURCE DRIVE DDRI VE=$CC : DEBT DRIVE NUMBER~$CE : NUMBER OF COPIES FFLAG-$BO : FORMAT FLAG SECTL0=$B1 SECTH I ==$B2 TNIJM=$B3 TEMP1==$B4 TEMF'2~$B5 NEWT0P~$B6 BUSCMD=$B7 DENFL.G=$E<8 TBUFLQ=$00 TEUJFH I ==$07 DDE V I C=$0300 : BUS I.D. # DUN I T=$030 1 : DEV ICE # D CO M ND= $ 0 3 0 2 : BUS COMMAND 1300 DST ATS=$030 1310 1 320 1330 D T I M L 0 = $ O 3 0 6 1340 D B Y T L. 0 = $0308 1350 D B Y T H I = $ 0 3 0 9 1360 DAIJX 1 =$030A 1 370 D AU X 2 = $ 0 3 0 B 1380 RAMT0P~$6A 1390 ; SET UP TITLE 1400 START J SR IN IT ; IN IT&PROTEECT ION 1410 NCOPY SEC : STATUS DBUFL0=$0304 : BUFFER POINTER LO DBUFHI=$0305 ; BUFFER POINTER HI ; D I SK TIME OUT ; # OF BYTES LO :# OF BYTES HI ! SECTOR # LO ! SECTOR # HI 1 420 LDA RAMTOP 1 430 SBC #5 1 440 STA NEWT OP : TOP FOR BUFFER 1450 LDA #1 1 460 STA SECTL.0 ; POINT TO FIRST 1470 LDX #MESS2&255 1 480 LDY #MESS2/256 1490 JSR PUTL IN ; NUM OF COPIES? 1 500 LDX #0 1 5 1 0 STX SECTH I 1 520 STX $CF 1530 STX DENFLG 1 540 KGET JSR KGETC2 : GET CHARACTER 1 550 LDX $CF 1 560 LDA ATACHR 1 570 CMP #$44 : "D" FOR DOUBLE DENSITY 1 580 BNE CKDIG 1 590 STA DENFLG : SHOW DD 1595 JSR DUTCH SPRINT "D" 1 600 JMP KGET 1 6 1 0 CKDIG CMP #$30 sLESS THAN 0? • • •••> 1 , 1 630 CMP #*3A ; MORE THAN 9 1 640 BCC NEXTCH 1 650 CMP #*9B s RETURN? 1 660 BNE KGET 1 670 NEXTCH ST A INBUF.X 1680 JSR DUTCH 1 690 INC *CF 1700 CMP #*9B ; RETURN? 1 7 1 0 BNE KGET 1 720 LDA *CF 1 730 CMP #4 1740 BCS NCOPY 1 750 CMP #2 1 760 BNE TWODIG 1 770 LDA INBIJF 1780 SEC 1 790 SBC #$30 1 800 JMP STNLJM 1 8 1 0 TWODIG LDA INBUF : ASC HI TO 1820 SEC 1 830 SBC #*30 1840 A SI.. A 1 850 STA NUMBER 1 860 ASL A 1 870 ASL A 1880 CLC 1 890 ADC NUMBER 1 900 STA NUMBER 1 9 1 0 LDA INBUF+i 1 920 SEC 1 930 SBC #*30 1940 CLC 1 950 ADC NUMBER 1 960 STNUM STA NUMBER 1 970 STA TNUM 1 980 SRC DRV LDX #MESS3&255 1 990 LDY #MESS3/256 2000 JSR PUTLIN ; SOURCE DRIVE? 2010 K2 JSR KGETC2 2020 LDA A TAG HR 2030 CMP #*31 : LESS THAN 1 ? 2040 BCC K2 2050 CMP #*35 : MORE THAN 4? 2060 BCS K2 2070 QCP 2080 SBC #*30 2090 STA SDR I VE 2 1 00 JSR MY OUT 2 1 1 0 DESDRV LDX #MESS4&255 2 1 20 LDY #MESS4/256 2 1 30 JSR PUTLIN : DEBT I N DRIVE? 2 1 40 K3 JSR KGETC2 2 1 50 LDA ATACHR 2 1 60 CMP #*31 : LESS THAN 1? 2 1 70 BCC K3 2 1 80 CMP #*35 ; MORE THAN 4? 2 1 90 BCS K3 2200 SEC 2210 SBC #*30 2220 STA DDR I VE fz f", rr {■■■, jZ. -2' LY JSR MYGUT 2240 FORMAT LDX #MESS5&255 2250 LDY #MESS5/256 2260 JSR PUTLIN : FORMAT DISK? 2270 JSR KGETC2 2290 MAIN JMP SRCMSG s GO WAIT FOR START 2300 RSRC LDA #$40 2310 ST A BUSCMD 2320 J SR READ 2330 JMP DSTMSG 2340 WLOOP JSR FMTDSK 2350 '~y ■*? * WRT LDA #$80 60 STA BUSCMD 2370 JSR WRITE DEC TNUM ; NUMBER OF COPIES LDA TNUM ; I N PASS CMP #0 2380 2390 2400 2410 2420 2430 2440 2450 BNE DSTMSG STA FFLAG : TURN OFF FORMAT FLAG LDA NUMBER ; GET READY FOR NEXT STA TNUM ; PASS JSR TDQNE : SEE IF FINISHED 2460 SRCMSG JSR MSG6 2470 JSR BEGIN 2480 JMP RSRC ; GO READ MORE SECTORS 2490 DSTMSG JSR MSG 8 2500 JSR BEG I N 25 1 0 JMP WLOOP ; GO WRITE NEXT DISK 2520 BEGIN LDA $D01F 2530 CMP #6 : IS START PUSHED 2540 BNE BEGIN ; NO. GOTO BEGIN 2550 RTS 2560 FMTDSK LDA FFLAG 5 FORMAT FLAG 2570 CMP #$59 ;"Y" 2580 BNE CONT ; NO. GOTO CONT 2590 STA DT I MLO 2600 LDA DDR I VE 261 0 STA DUN I T 2620 LDA #$21 : FORMAT 2630 STA DCOMND 2640 JSR GETRDY 2650 LDA #$40 2660 STA D ST ATS 2670 STA DBUFLO 2680 SEC 2690 LDA RAMTOP 2700 SBC #3 27 1 0 STA DBUFH I 2720 JSR SIOV ; GO FORMAT DISK 2730 BM I FMTDSK : TRY AGAIN IF BAD 2740 CONT RTS 2750 READ LDA SDRIVE s SOURCE DRIVE 2760 STA DUN I T 2770 LDA #$52 ; READ COMMAND 2780 STA DCOMND 2790 LDA SECTLO ; STORE IN TEMP SO WE 2800 STA TEMPI : KNOW WHERE TO WRITE 2810 STA DAUX1 sAND GET READY 2820 LDA SECTHI ; FOR I/O CALL 2830 STA TEMP 2 2840 STA DAUX2 ; SECTOR TO READ 2850 JSR GETRDY 2860 LDA # TBUFLO 2870 STA DBUFLO 2880 LDA #TBUFH I 2890 STA DBUFH I s BUFFER POINTERS 2900 CD NT 2 JSR SIOV 2910 JSR INCSD 2920 BCC CONT 2 2930 RTS 2950 LDA SECTLO ; AND BUFFER P I ON TER 2960 ADC #1 2970 ST A SECTLO 2980 ST A DAUX1 2990 LDA SECTH I 3000 ADC #0 30 1 0 ST A SECTH I 3020 ST A DAUX2 3030 CMP #$02 3040 BNE CONTI 3050 LDA SECTLO 3060 CMP #$D 1 3070 BNE CONT 1 3080 SEC ! SET CARRY WHEN DONE 3090 RTS 3 1 00 CONTI J SR GETRDY 3 1 1 0 RTS 3 1 20 WRITE LDA DDR I VE : GET READY 3 1 30 ST A DUN IT ; TO WRITE 3 1 40 LDA #$50 WRITE COMMAND 3150 ST A DCOMND 2; 1 60 LDA # 1 0 3 1 70 STA $4D ; A TRACT FLAG 3 1 80 STA DT I MLO 3 1 90 LDA TEMP 1 3200 STA SECTLO 3210 STA DAUX 1 3220 LDA TEMP2 3230 STA SECTH l 3240 STA DAUX 2 3250 JSR GETRDY 3260 LDA #TBIJFLQ 3270 STA DBUFl.0 3280 LDA #TBUFH 1 3290 STA DBUFHI 3300 CQNT2 > JSR SIOV 3310 JSR INCSD 3320 BCC C0NT3 •:>o3U RTS j-j-40 GETRDY LDA #$31 *._J o' ST A DDEVIC 3360 LDA BUSCMD 3370 STA DSTAT'B 3380 LDA DE NF LG 3390 BED SINGLE 3400 LDA DCOMND 3410 CMP #$21 3420 BEQ B256 3430 LDA SECTLO 3440 CMP #4 3450 BCS B256 3460 LDA SECTH I 3470 BNE B256 3480 SINGLE LDA #0 3490 STA D BYT HI 3500 LDA #$80 35 1 0 STA DBYTLO T iZT r~. :«520 CLC 3530 LDA DBUFL.0 3540 ADC #$80 STA DBUFL.0 3560 LDA DBUFH I 3570 ADC #0 3580 STA DBUFH 1 3590 CMP NEWTOP •3610 B256 LDA #0 3620 ST A DBYTLO 3630 LDA #1 3640 ST A DBYTHI 3650 CL.C 3660 LDA DBUFHI 3670 ADC #1 3680 ST A DBUFHI 3690 CMP NEWTOP 3700 RTS 3710 MESS2 , BYTE "COPIES?" , $9B 3720 MESS3 . BYTE "SOURCE?" „ $9B 3730 MESS4 .BYTE " ,7 « DEBT I N?" . $9B 3740 MESS5 .BYTE 'VmFORMAT?" , $9B 3750 MESS6 .BYTE " Da'”* INSERT UllNort.w PUSH 3760 MESS8 .BYTE "7 INSERT a.uiJbf , $9B UP START”*" 4270 4280 4290 4300 43 1 0 4320 4330 4340 4350 4360 4370 4380 4390 4400 4410 ADC #3 STA DOS V EC D0SINH-.1. DOSVEC+l #0 COLD ST #:l 0 DTIMLO LDA STA LDA STA LDA STA L.DX #MESS1&255 LDY #MESS 1/256 J SR PUTLIN : PUT COPYRIGHT UP RTS MESS 1 .BYTE "> COPYRIGHT (C) 1983 NEWELL .BYTE " THIS PROGRAM ILLEGALLY *9B . END . INDUSTRIES DO NOT USE