home *** CD-ROM | disk | FTP | other *** search
/ Antic Magazine 1985 September / Antic_Magazine_1985_09_Antic.atr / copy130.m65 < prev    next >
Text File  |  2023-02-26  |  11KB  |  1 lines

  1. 02 ; COPY130¢04 ; BY ERNIE NEGUS¢06 ; (c) 1985, ANTIC PUBLISHING¢10       *=  $2600   ;ROOM FOR DOS XL¢20       JMP START¢30 DBUFHI =  $0305   ;O.S. EQUATES¢40 DBUFLO =  $0304   ;FOR OS I/O AND¢50 DAUX2 =   $030B   ;DIRECT DISK I/O¢60 DAUX1 =   $030A¢70 DCOMND =  $0302¢80 DUNIT =   $0301¢90 ICCOM =   $0342¢0100 ICBADR = $0344¢0110 ICBLEN = $0348¢0120 ICAUX1 = $034A¢0130 ICAUX2 = $034B¢0140 CARTR = $A000   ;MESSAGE AREA¢0150 DES .BYTE "Destination #"¢0160 FMT .BYTE "Format Destination ?"¢0170 VER .BYTE "Verify Writes ?"¢0180 STE .BYTE "Continue on Errors ?"¢0190 RDG .BYTE $9B,"Reading..."¢0200 WRT .BYTE $9B,"Writing..."¢0210 IND .BYTE $9B,"Insert DESTINATION disk-Press פσ⌠⌡≥∈"¢0220 INS .BYTE "Insert SOURCE in Drive 1-Type פσ⌠⌡≥∈"¢0230 ANC .BYTE $9B,$FD,"Another copy ?"¢0240 FRM .BYTE $9B,"Formatting..."¢0250 REM .BYTE "Remove Cartridges First!",$9B¢0260 O130 .BYTE "Program only runs on a 130 XE!!",$9B¢0270 TIT1 .BYTE $1D,"     áááצדבקנפáבנסחדפáõøãáןדááá",$1D,$9B¢0280 TIT2 .BYTE "           By Ernie Negus",$1D,$1D,$1D,$9B¢0290 KEY .BYTE "K:"¢0300 SCR .BYTE "S:"¢0310 SECNT .BYTE 0   ;VARIABLES¢0320 DEST .BYTE 0    ;USED BY PROGRAM¢0330 FRMT .BYTE 0¢0340 SOUR .BYTE 0¢0350 DCOM .BYTE 0¢0360 DTEM .BYTE 0¢0370 SAVA .BYTE 0¢0380 VERI .BYTE 0¢0390 SPEC .BYTE 0¢0400 SAVSPE .BYTE 0¢0410 CERR .BYTE 0¢0420 DRIVE .BYTE 0¢0430 BPUT LDA #$26   ;OUTPUT TEXT¢0440 BPUU STA ICBADR+1 ;SUBROUTINE¢0450     LDA #0¢0460     STA ICBLEN+1¢0470     STX ICBLEN¢0480     STY ICBADR¢0490     LDX #0¢0500     LDA #$0B¢0510     STA ICCOM¢0520     JSR $E456¢0530     RTS ¢0540 BGET LDX #$10   ;INPUT BYTE FROM¢0550     LDA #7      ;KEYBOARD SUB.¢0560     STA ICCOM,X¢0570     LDA #0¢0580     STA ICBLEN,X¢0590     STA ICBLEN+1,X¢0600     JSR $E456¢0610     STA $0600¢0620     CMP #$1B    ;ESCAPE RERUNS¢0630     BNE RET2    ;THE PROGRAM.¢0640     PLA ¢0650     PLA ¢0660     JMP START¢0670 RET2 RTS ¢0680 OPEN LDX #16    ;OPEN CHANNELS¢0690     LDA #3      ;1 FOR KEYBOARD¢0700     STA ICCOM,X ;6 FOR SCREEN.¢0710     LDA # <KEY¢0720     STA ICBADR,X¢0730     LDA # >KEY¢0740     STA ICBADR+1,X¢0750     LDA #4¢0760     STA ICAUX1,X¢0770     JSR $E456¢0780     LDX #$60¢0790     LDA #3¢0800     STA ICCOM,X¢0810     LDA # <SCR¢0820     STA ICBADR,X¢0830     LDA # >SCR¢0840     STA ICBADR+1,X¢0850     LDA #12¢0860     STA ICAUX1,X¢0870     LDA #0¢0880     STA ICAUX2,X¢0890     JSR $E456¢0900     RTS ¢0910 CLOSE LDX #$10  ;INSURES THOSE¢0920     LDA #12     ;FILES CLOSED.¢0930     STA ICCOM,X¢0940     JSR $E456¢0950     LDX #$60¢0960     LDA #12¢0970     STA ICCOM,X¢0980     JSR $E456¢0990     RTS ¢1000 START LDA CARTR ;THIS IS A¢1010     INC CARTR   ;CARTRIDGE TEST¢1020     CMP CARTR¢1030     BNE NOCARTS¢1040     LDX #25¢1050     LDY # <REM¢1060     JSR BPUT¢1070     RTS ¢1080 NOCARTS LDA #$E3 ;TEST FOR 130XE¢1090     STA 54017   ;BY SEEING IF¢1100     STA $4000   ;THE BANK SWITCH¢1110     LDA #255    ;WORKS.¢1120     STA 54017¢1130     LDA $4000¢1140     CMP #$E3¢1150     BNE ITSA130¢1160     LDA #255¢1170     STA 54017¢1180     LDX #32¢1190     LDY # <O130¢1200     JSR BPUT¢1210     RTS         ;RETURN TO DOS¢1220 ITSA130 LDA #48¢1230     STA 106     ;FORCE SCREEN¢1240     JSR CLOSE   ;RAM BELOW $4000¢1250     JSR OPEN¢1260     JMP BEGIN¢1270 PUTO LDA #$10   ;DRAWS THE¢1280     STA 11546   ;DISPLAY WINDOW¢1290     STA 11547   ;ON THE SCREEN.¢1300     STA 11548¢1310     LDA #128¢1320     STA 11543¢1330     STA 11545¢1340     STA 11549¢1350     STA 11551¢1360     LDX #0¢1370     STX 11550¢1380 LOOX LDA #$55   ;DRAW BORDER.¢1390     STA 11503,X¢1400     LDA #$D5¢1410     STA 11583,X¢1420     INX ¢1430     CPX #9¢1440     BNE LOOX¢1450     RTS ¢1460 ECHO STA $0600  ;ECHO KEY TO¢1470     LDA #$9B    ;SCREEN. DOES¢1480     STA $0601   ;A LINE FEED.¢1490     LDX #2¢1500     LDY #0¢1510     LDA #6¢1520     JSR BPUU¢1530     RTS ¢1540 BEGIN LDX #63   ;HERE IF 130 XE¢1550     LDY # <TIT1¢1560     LDA # >TIT1¢1570     JSR BPUU    ;PRINT TITLE¢1580     LDA #0¢1590     STA SPEC¢1600     LDA #148¢1610     STA 710¢1620     STA 712¢1630     LDA #12¢1640     STA 709¢1650     LDX #13¢1660     LDY # <DES¢1670     JSR BPUT¢1680 LAB2 JSR BGET   ;GET DEST. #¢1690     CMP #'1     ;INSURE PROPER¢1700     BCC LAB2    ;RANGE...¢1710     CMP #'D     ;DUAL DRIVE¢1720     BEQ DUAL¢1730     CMP #'T     ;TRIPLE DRIVE¢1740     BEQ TRIP¢1750     CMP #'Q¢1760     BEQ QUAD    ;QUAD DRIVE¢1770     CMP #'9     ;UPPER RANGE.¢1780     BCS LAB2¢1790     JMP SING¢1800 QUAD LDA #4     ;USED FOR¢1810     BNE MULT    ;LOOPING WHEN¢1820 TRIP LDA #3     ;MULTI-DEST.¢1830     BNE MULT    ;ENABLED.¢1840 DUAL LDA #2¢1850 MULT STA SPEC¢1860     STA SAVSPE  ;SAVE FOR¢1870     LDA #'1     ;ANOTHER COPY.¢1880 SING STA DEST   ;USE DRIVE 1¢1890     STA DRIVE   ;IF MULTI-DEST.¢1900     JSR ECHO¢1910     LDA DEST¢1920     SEC ¢1930     SBC #'0¢1940     STA DEST¢1950     LDX #20¢1960     LDY # <FMT¢1970     JSR BPUT¢1980     JSR BGET    ;FORMAT OR NOT?¢1990     JSR ECHO¢2000     LDA $0600¢2010     STA FRMT    ;SAVE ANSWER.¢2020     LDX #15¢2030     LDY # <VER¢2040     JSR BPUT¢2050     JSR BGET    ;VERIFY OR NOT?¢2060     JSR ECHO¢2070     LDA $0600¢2080     STA VERI    ;SAVE ANSWER.¢2090     LDA #255¢2100     STA 54017¢2110     LDX #20¢2120     LDY # <STE  ;STOP ON¢2130     JSR BPUT    ;ERROR?¢2140     JSR BGET¢2150     JSR ECHO¢2160     LDA $0600¢2170     STA CERR    ;SAVE ANSWER¢2180     LDX #36¢2190     LDY # <INS¢2200     JSR BPUT¢2210     JSR BGET¢2220     LDA $0600   ;IF 'N' INSTEAD¢2230     CMP #'N     ;OF RETURN, SKIP¢2240     BEQ BLOOP   ;THE READ.¢2250     LDX #11¢2260     LDY # <RDG¢2270     JSR BPUT¢2280     JSR PUTO    ;PUT DISPLAY¢2290     LDA #1      ;WINDOW UP AND¢2300     STA DTEM    ;READ DATA OFF¢2310     LDA #0      ;OF SOURCE.¢2320     STA DAUX1¢2330     STA DAUX2¢2340     LDA #'R     ;'R' FOR READ¢2350     STA DCOM¢2360     LDA #255¢2370     STA SECNT   ;READ IN 255¢2380     JSR AVOID   ;SECTORS.¢2390     LDA #$E3    ;ENABLE BANK 1¢2400     STA 54017¢2410     JSR DODISK¢2420     LDA #$E7    ;ENABLE BANK 2¢2430     STA 54017¢2440     JSR DODISK¢2450     LDA #$EB    ;ENABLE BANK 3¢2460     STA 54017¢2470     JSR DODISK¢2480     LDA #$EF    ;ENABLE BANK 4¢2490     STA 54017¢2500     LDA #84     ;THIS TIME DO¢2510     STA SECNT   ;NOT USE DEFAULT¢2520     JSR AVOID   ;SECTOR COUNT.¢2530 BLOOP LDA #255  ;THIS IS THE¢2540     STA 54017   ;WRITE LOOP.¢2550     LDA DEST¢2560     CMP #1¢2570     BNE AUTO¢2580     LDX #37     ;INSERT PROMPT.¢2590     LDY # <IND¢2600     JSR BPUT¢2610     JSR BGET¢2620 AUTO LDA FRMT¢2630     CMP #'Y     ;DID THEY WANT¢2640     BNE SKYP    ;TO FORMAT?¢2650     LDX #14¢2660     LDY # <FRM¢2670     JSR BPUT¢2680     LDA #'!¢2690     STA DCOMND  ;SET UP FORMAT¢2700     LDA DEST¢2710     STA DUNIT¢2720     JSR PUTO¢2730     JSR GONE    ;DISPLAY DRIVE #¢2740     LDA #0¢2750     STA DBUFLO¢2760     LDA #4¢2770     STA DBUFHI¢2780     JSR $E453¢2790     LDY #173¢2800     LDA $0308¢2810     BEQ SKYP¢2820     LDX #'N¢2830     STX CERR¢2840     JSR ERRO    ;REPORT ERRORS¢2850 SKYP LDX #11¢2860     LDY # <WRT¢2870     JSR BPUT¢2880     JSR PUTO    ;DRAW WINDOW.¢2890     LDA DEST    ;BEGIN WRITING.¢2900     STA DTEM¢2910     LDA #0¢2920     STA DAUX2¢2930     STA DAUX1¢2940     LDA #'W     ;WRITE VERIFY?¢2950     STA DCOM¢2960     LDA VERI    ;<THE ANSWER.¢2970     CMP #'Y¢2980     BEQ SKIZZ¢2990     LDA #'P     ;OR JUST PUT?¢3000     STA DCOM¢3010 SKIZZ LDA #255¢3020     STA SECNT   ;WRITE OWN RAM.¢3030     JSR AVOID   ;255 SECTORS.¢3040     LDA #$E3    ;WRITE BANK 1.¢3050     STA 54017¢3060     JSR DODISK¢3070     LDA #$E7    ;WRITE BANK 2¢3080     STA 54017¢3090     JSR DODISK¢3100     LDA #$EB    ;WRITE BANK 3¢3110     STA 54017¢3120     JSR DODISK¢3130     LDA #$EF    ;WRITE BANK 4¢3140     STA 54017¢3150     LDA #84     ;BUT DON'T USE¢3160     STA SECNT   ;DEFAULT THIS¢3170     JSR AVOID   ;TIME!¢3180     LDA #255¢3190     STA 54017   ;DISABLES BANKS¢3200     LDA SPEC¢3210     BEQ OVER    ;MULTI-DEST?¢3220     CMP #1¢3230     BEQ OVER    ;IF SO, DONE?¢3240     STA DEST¢3250     CLC ¢3260     ADC #'0     ;DO NEXT DRIVE¢3270     STA DRIVE¢3280     DEC SPEC¢3290     JMP BLOOP   ;UNTIL FINISHED.¢3300 OVER LDX #16¢3310     LDY # <ANC¢3320     JSR BPUT¢3330     JSR BGET    ;ANOTHER COPY?¢3340     JSR ECHO¢3350     LDA $0600¢3360     CMP #'Y¢3370     BNE QUIT¢3380     LDA SPEC    ;YES- RESTORE¢3390     BEQ JUMP    ;VALUES IF MULTI¢3400     LDA SAVSPE  ;DESTINATION¢3410     STA SPEC    ;DRIVES.¢3420     LDA #1¢3430     STA DEST¢3440     LDA #'1¢3450     STA DRIVE   ;(FOR FORMAT).¢3460 JUMP JMP BLOOP¢3470 QUIT JMP START  ;RE-RUN PROGRAM¢3480 DODISK LDA #127¢3490     STA SECNT   ;THIS SUBROUTINE¢3500 AVOID LDA #$3F  ;DOES THE DISK¢3510     STA DBUFHI  ;I/O AND KEEPS¢3520     LDA #$80    ;TRACK OF THE¢3530     STA DBUFLO  ;MEMORY POINTERS¢3540 DOSUP LDA DTEM¢3550     STA DUNIT¢3560     LDA DCOM¢3570     STA DCOMND¢3580 LOOP CLC ¢3590     LDA DAUX1¢3600     ADC #1¢3610     STA DAUX1¢3620     LDA DAUX2¢3630     ADC #0¢3640     STA DAUX2¢3650     CLC ¢3660     JSR INCO    ;IT ALSO KEEPS¢3670     LDA DBUFLO  ;TRACK OF THE¢3680     ADC #$80    ;SECTOR COUNTER.¢3690     STA DBUFLO¢3700     LDA DBUFHI¢3710     ADC #0¢3720     STA DBUFHI¢3730     JSR $E453   ;THE O.S. CALL.¢3740     CPY #1¢3750     BEQ GDIO    ;IF ERROR FOUND¢3760 ERRO JSR RER    ;DECODE IT AND¢3770     STX 11550   ;DISPLAY IT IN¢3780     LDA CERR¢3790     CMP #'Y     ;STOP ON ERROR¢3800     BEQ GDIO    ;UNLESS TOLD NOT¢3810     PLA         ;TO.¢3820     PLA ¢3830     JMP OVER¢3840 GDIO DEC SECNT  ;THE RIGHT PART¢3850     BNE LOOP    ;OF THE DISPLAY¢3860     RTS         ;WINDOW.¢3870 INCO LDX #3¢3880 LOCO INC 11545,X¢3890     LDA 11545,X ;INCREMENTS THE¢3900     CMP #$1A    ;SECTOR COUNTER¢3910     BNE GONE    ;IN THE WINDOW.¢3920     LDA #$10¢3930     STA 11545,X¢3940     DEX ¢3950     BNE LOCO¢3960 GONE LDA DUNIT  ;ALSO DISPLAYS¢3970     CLC         ;THE DRIVE¢3980     ADC #$10    ;CURRENTLY IN¢3990     STA 11544   ;USE.¢4000     RTS ¢4010 RER LDX #$10    ;DECODE ERRORS¢4020     CPY #127    ;NON-IO ERROR¢4030     BCC RETURN¢4040     INX ¢4050     CPY #128    ;BREAK KEY ABORT¢4060     BEQ RETURN¢4070     INX ¢4080     CPY #138    ;DEVICE TIMEOUT¢4090     BEQ RETURN¢4100     INX ¢4110     CPY #139    ;NO ACKNOWLEDGE¢4120     BEQ RETURN¢4130     INX ¢4140     CPY #140    ;SERIAL BUS DATA¢4150     BEQ RETURN¢4160     CPY #142    ;ERRORS.¢4170     BEQ RETURN¢4180     CPY #143    ;DITTO¢4190     BEQ RETURN¢4200     INX ¢4210     CPY #144    ;BAD SECTOR/¢4220     BEQ RETURN  ;OPEN DOOR.¢4230     INX ¢4240     CPY #145    ;BAD READ VERIFY¢4250     BEQ RETURN¢4260     INX ¢4270     CPY #163    ;DAMAGED DOS¢4280     BEQ RETURN¢4290     INX ¢4300     CPY #164    ;BAD FILE NUMBER¢4310     BEQ RETURN¢4320     INX ¢4330     CPY #173    ;BAD SECTOR¢4340     BEQ RETURN  ;DURING FORMAT.¢4350     LDX #$10    ;NON-HANDLED ERROR¢4360 RETURN RTS ¢4365 ;¢4370     *=  $02E0   ;  FOR DOS 2¢4380     .WORD START¢4390     .END ¢