CompyShop Sector Copy Source Code #
SECTOR.ASM#
00010 .LI OFF 00020 .OR $2F00 00030 .OF "D1:SCOPY.COM" 00040 ------------------------------ 00050 ********************* 00060 ** SECTORCOPY MAIN ** 00070 ********************* 00080 ------------------------------ 00090 S SEI STARTROUTINE 00100 LDA #0 Schiebt Pro- 00110 TAY gramm unter 00120 STY $D40E das Betriebs 00130 STA $F0 System 00140 STA $F2 00150 LDA #$E0 00160 STA $F1 00170 LDA #$30 E000 -> 3000 00180 STA $F3 00190 .1 LDA ($F0),Y 00200 STA ($F2),Y 00210 INY 00220 BNE .1 Zeichensatz 00230 INC $F3 nach $3000 00240 INC $F1 00250 LDA $F1 00260 CMP #$E4 bis E400 00270 BNE .1 00280 LDA $D301 00290 AND #$FE OS aus 00300 ORA #2 Basic aus 00310 STA $D301 00320 LDY #0 00330 LDA #$F0 00340 STA $F1 00350 LDA #$30 3000 -> F000 00360 STA $F3 00370 .2 LDA ($F2),Y 00380 STA ($F0),Y 00390 INY 00400 BNE .2 00410 INC $F3 Programm 00420 INC $F1 unter OS 00430 LDA $F1 schieben 00440 BNE .2 00450 LDY #ENRES-RESET 00460 .3 LDA RESET,Y 00470 STA $100,Y 00480 DEY System-Reset 00490 BPL .3 Routine nach 00500 INY $100 kopieren 00510 STY $244 00520 STY $C 00530 INY 00540 STY $9 00550 STY $D 00560 JMP $100 Zum Programm 00570 ------------------------------ 00580 RESET SEI System-Reset 00590 STA $D40F 00600 LDA #0 00610 TAY 00620 .1 STA $D400,Y Hardware- 00630 STA $D000,Y Register 00640 STA $D200,Y loeschen 00650 INY 00660 BNE .1 00670 LDA $D301 00680 AND #$FE OS aus 00690 ORA #$FC 00700 STA $D301 00710 LDA #$22 Bildschirm 00720 STA $D400 normal 00730 LDA #$F0 $F000= 00740 STA $D409 CHRBASE 00750 LDA #2 00760 STA $D401 CHACTL 00770 LDA #3 00780 STA $D20F SIO-Status 00790 LDA #$40 00800 STA $D40E NMIEN 00810 JSR CLRTI Timeout- 00820 ; Vector loeschen 00830 JMP SCOPY START 00840 ENRES 00850 ------------------------------ 00860 .OR $F400 00870 .TA $3400 00880 * 00890 .IN "D:COPY1.ASM 00900 .IN "D:COPY2.ASM 00910 .IN "D:DSKSYS.ASM 00920 ------------------------------ 00930 DISPLY .BL $F0 00940 ; 00950 DSBUF .BL $50 00960 ------------------------------ 00970 END ; Ende des Sector-Copiers 00980 ------------------------------ 00990 .OR $FFFA 01000 .TA $3FFA 01010 * 01020 .DA PNMI NMI-Vector 01030 .HX 0000 Reset-Vector 01040 ; wird nicht benoetigt 01050 .DA RETIRQ IRQ-Vector 01060 ------------------------------ 01070 .OR $2E0 File Start 01080 .DA S 01090 ------------------------------
COPY1.ASM#
00010 ------------------------------ 00020 *********** 00030 ** COPY1 ** 00040 *********** 00050 ------------------------------ 00060 ; 00070 ; ZERO-PAGE VARIABLEN FESTLEGEN 00080 ; DA KEIN BETRIEBSSYSTEM MEHR 00090 ; VORHANDEN IST, KOENNEN FAST 00100 ; ALLE ADRESSEN BENUTZT WERDEN 00110 ; 00120 SOURC = $70 00130 SOUST = $72 00140 DESTN = $71 00150 DESST = $73 00160 FORMT = $74 00170 RETRY = $75 00180 RAMDSK = $76 00190 BYT1 = $7A / $7B 00200 EQUAL = $7C 00210 DENS = $7D 00220 CFIRST = $7E 00230 SPFLAG = $7F 00240 * 00250 SPTBL = $1C - $1F 00260 RSECA = $60 / $61 00270 RSECB = $62 / $63 00280 RSECC = $64 / $65 00290 * 00300 BANKS = $66 00310 BANKNR = $67 00320 MAXBANK = $68 00330 SPBYT = $69 00340 HIMEM = $6A 00350 * 00360 SLEFT = $37 00370 SROW = $38 00380 SSKIP = $39 00390 FBYT = $3A 00400 DLEFT = $3B 00410 DROW = $3C 00420 DSKIP = $3D 00430 FINC = $3E 00440 FFIRST = $3F 00450 * 00460 DUNIT = $21 00470 DCOMND = $22 00480 DSTATS = $23 00490 DBUFLO = $24 00500 DBUFHI = $25 00510 DTIM = $26 00520 DBYTLO = $28 00530 DBYTHI = $29 00540 DSECLO = $2A 00550 DSECHI = $2B 00560 ; 00570 PORTB = $D301 00580 TSTBYT = $4000 00590 ; 00600 ; AB LOMEM KOENNEN DATEN 00610 ; ABGELEGT WERDEN 00620 ; 00630 LOMEM = $400 00640 ------------------------------ 00650 ; 00660 ; DIE DISPLAY-LIST DES 00670 ; SECTOR-KOPIERERS 00680 ; 00690 DLIST .HX 70707046 00700 .DA LINE 00710 .HX 47 00720 .DA HTEX 00730 .HX 40061046 00740 .DA LINE 00750 .HX 7042 00760 .DA DISPLY 00770 .HX 30023070027050 00780 .HX 02702002702002702046 00790 .DA LINE 00800 .HX 46 00810 RWLINE .DA SETUP 00820 .HX 1046 00830 .DA LINE 00840 .HX 41 00850 .DA DLIST 00860 ------------------------------ 00870 ; 00880 ; TEXTE IM BILDSCHIRMFORMAT 00890 ; 00900 HTEX .AT " sectorcopy \^Q\^N\^T " 00910 .AT -" \^Hp \^P\^V\^O\^X\^W e\^Nreuss " 00920 LINE .AT "--------------------" 00930 SETUP .AT -" einstellen " 00940 FMATIN .AT -" formatieren " 00950 INSOUR .AT -" original diskette" 00960 INDEST .AT -" ziel diskette " 00970 INBOTH .AT -" disketten einlegen" 00980 DSKERR .AT -" disk fehler \^C " 00990 READIN .AT -" sector " 01000 ------------------------------ 01010 ; 01020 ; START DES SEKTOR-KOPIERERS 01030 ; 01040 SCOPY LDX #$FF 01050 TXS 01060 SEI 01070 LDA #DLIST DISPLAY- 01080 STA $D402 LIST SETZEN 01090 LDA /DLIST 01100 STA $D403 01110 LDY #4 01120 .1 LDA COLTB,Y FARBEN 01130 STA $D016,Y SETZEN 01140 DEY 01150 BPL .1 01160 STY RAMDSK 01170 LDA /SETUP 01180 STA RWLINE+1 01190 JSR CLRSCR BILDSCHIRM 01200 LDX #4 LOESCHEN 01210 STX RETRY 01220 LDA #$28 HIGH-SPEED 01230 .2 STA SPTBL-1,X TABELLE 01240 DEX AUF 01250 BNE .2 STANDARD 01260 STX FORMT 01270 ; 01280 ; TESTEN OB EINE RAMDISK VOR- 01290 ; HANDEN IST UND WIE GROSS 01300 ; DIESE IST 01310 ; 01320 LDX #$80 KLEINE 01330 .3 LDA $D40B VERZOEGERUNG 01340 BNE .3 01350 DEX 01360 BPL .3 01370 STX TSTBYT 01380 DEX 01390 STX PORTB 01400 LDY #$F 16 BANKS 01410 STY MAXBANK 01420 .4 LDY MAXBANK 01430 JSR SWITCH DATEN IN 01440 STY TSTBYT BANKS 01450 DEC MAXBANK SCHREIBEN 01460 BPL .4 01470 LDA #$FE 01480 STA PORTB 01490 * 01500 LDY #0 01510 STY BYT1 01520 STY MAXBANK 01530 * 01540 LDA TSTBYT RAMDISK 01550 CMP #$FF VORHANDEN? 01560 BNE MTEST 01570 * 01580 .5 LDY MAXBANK 01590 CPY #$10 01600 BCS .6 01610 JSR SWITCH DATEN AUS 01620 LDA TSTBYT RAMDISK 01630 CMP BYT1 AUSLESEN 01640 BMI .6 UND DABEI 01650 STA BYT1 MAXIMALE 01660 INC MAXBANK ANZAHL DER 01670 JMP .5 BANKS 01680 .6 LDA #$FE FESTSTELLEN 01690 STA PORTB 01700 BNE MTEST 01710 * 01720 SWITCH LDA PORTB BANK 01730 AND #$23 EINSCHALTEN 01740 ORA BANKTB,Y 01750 STA PORTB 01760 RTS 01770 ------------------------------ 01780 ; 01790 ; RAMDISK BANK-TABELLE 01800 ; FUER COMPY-SHOP RAMDISK UND 01810 ; 130 XE RAMDISK 01820 ; 01830 BANKTB .HX CCC8C4C08C888480 01840 .HX 4C4844400C080400 01850 ------------------------------ 01860 MTEST 01870 * 64K -> 00 01880 * 128K -> 04 01890 * 192K -> 08 01900 * 320K -> 10 01910 ------------------------------ 01920 ; 01930 ; TEST OB EINE CARTRIDGE IM 01940 ; RECHNER STECKT 01950 ; 01960 NO64K LDA #$80 01970 LDY $8000 01980 INC $8000 01990 CPY $8000 16K ? 02000 BEQ CHRAM 02010 LDA #$A0 02020 LDY $A000 02030 INC $A000 02040 CPY $A000 8K ? 02050 BEQ CHRAM 02060 LDA #$C0 02070 CHRAM STA HIMEM 02080 ------------------------------ 02090 ; 02100 ; TESTEN WIEVIELE LAUFWERKE 02110 ; ANGESCHLOSSEN SIND UND OB 02120 ; DIESE LAUFWERKE HIGH-SPEED 02130 ; FAEHIG SIND 02140 ; 02150 LDA #1 AB DRIVE 1 02160 JSR HSCHK TESTEN 02170 BCC .1 02180 JMP SCOPY KEINE DISK 02190 .1 STY SOUST STATUS 02200 LDA DUNIT 02210 STA SOURC ORIGINAL 02220 ORA #$10 IN ATASCII 02230 STA SDNR 02240 LDX #$40 KLEINE 02250 LDY #0 ZEIT- 02260 .2 DEY VEZOEGERUNG 02270 BNE .2 02280 DEX 02290 BNE .2 02300 LDX DUNIT DRIVE 02310 INX +1 02320 TXA 02330 JSR HSCHK TESTEN 02340 BCS .3 02350 LDA DUNIT 02360 BNE .4 02370 .3 LDA SOURC ORIG=ZIEL 02380 LDY SOUST 02390 .4 STA DESTN 02400 STY DESST 02410 ORA #$10 IN ATASCII 02420 STA DDNR 02430 ; 02440 ; MENU-BILDSCHIRM AUFBAUEN 02450 ; 02460 START JSR CLRSCR 02470 LDY #8 02480 JSR TXTOUT 02490 .AT "Original Laufwerk.... D" 02500 SDNR .AT "1" 02510 .HX EA 02520 LDY #48 02530 JSR TXTOUT 02540 .AT "Ziel Laufwerk........ D" 02550 DDNR .AT "1" 02560 .HX EA 02570 ; 02580 STA2 LDX #SETUP 02590 STX RWLINE 02600 LDY #120 02610 JSR CLRSC1 02620 ; 02630 LDY #94 02640 JSR TXTOUT 02650 .AT "Speicher: " 02660 .HX EA 02670 LDA HIMEM =C0/A0/80 02680 AND #$60 02690 LSR :8 02700 LSR 02710 LSR =18/14/10 02720 LDX MAXBANK 02730 CPX #4 4 BANKS 02740 BCC .1 02750 CLC 02760 ADC #12 02770 .1 CPX #8 8 BANKS 02780 BCC .2 02790 CLC 02800 ADC #12 02810 .2 CPX #$10 16 BANKS 02820 BCC .3 02830 CLC 02840 ADC #12 02850 .3 TAX 02860 LDA #4 SPEICHER- 02870 STA BYT1 GROESSE 02880 .4 LDA MEMTB,X ANZEIGEN 02890 STA DISPLY,Y 02900 INY 02910 INX 02920 DEC BYT1 02930 BNE .4 02940 * 02950 LDA RAMDSK DATEN IN 02960 BNE BEF0 RAMDISK ? 02970 LDY #125 02980 JSR TXTOUT 02990 .AT "\M^Yœ–‘…œŒ\^Y" 03000 .AT ".Von Ramdisk schreiben" 03010 .HX EA 03020 JMP BEF1 03030 BEF0 LDA SOURC ORIG=ZIEL? 03040 CMP DESTN 03050 BEQ BEF1 03060 LDY #125 03070 JSR TXTOUT 03080 .AT "\M^Yœ–‘…œŒ\^Y" 03090 .AT ".Laufwerke austauschen" 03100 .HX EA 03110 BEF1 LDY #165 03120 JSR TXTOUT 03130 .AT "\M^Y”≈Ã≈√‘\^Y" 03140 .AT ".....Formatieren: " 03150 .HX EA 03160 LDA FORMT FORMATFLAG 03170 BEQ BEF2 03180 JSR TXTOUT 03190 .AT "NEIN" 03200 .HX EA 03210 BEQ TXCOP 03220 BEF2 JSR TXTOUT 03230 .AT " JA " 03240 .HX EA 03250 TXCOP LDY #205 03260 JSR TXTOUT 03270 .AT "\M^Y”‘¡“‘\^Y" 03280 .AT "......Diskette kopieren" 03290 .HX EA 03300 ; 03310 GETBEF JSR GETKEY 03320 CMP #5 SELECT ? 03330 BEQ FORMAT 03340 CMP #6 START ? 03350 BEQ GOCOPY 03360 LDA RAMDSK DATEN IN 03370 BEQ WFRD RAMDISK ? 03380 ; 03390 EXCHAN LDY SOURC OPTION- 03400 LDX DESTN TASTE 03410 STY DESTN 03420 STX SOURC ORIGINAL 03430 TYA UND ZIEL 03440 ORA #$10 TAUSCHEN 03450 STA DDNR 03460 TXA 03470 ORA #$10 03480 STA SDNR 03490 LDY SOUST 03500 LDX DESST 03510 STY DESST 03520 STX SOUST 03530 JMP START 03540 ; 03550 WFRD LDY #203 VON RAMDISK 03560 STY DLEFT SCHREIBEN 03570 LDX #$FF 03580 STX CFIRST 03590 INX 03600 STX DROW 03610 STX DSKIP 03620 STX EQUAL 03630 STX FFIRST 03640 LDY #120 03650 JSR CLRSC1 03660 LDY #120 ALTE ANZEIGE 03670 WFR1 LDA DSBUF,X SETZEN 03680 STA DISPLY,Y 03690 INX 03700 INY 03710 CPY #200 03720 BNE WFR1 03730 LDA #$37 03740 STA DISPLY+201 03750 JMP WRITER ZUR 03760 ; SCHREIBROUTINE 03770 ; 03780 FORMAT LDA FORMT FORMATFLAG 03790 EOR #$FF INVERTIEREN 03800 STA FORMT 03810 JMP STA2 03820 ; 03830 GOCOPY LDA SOURC START COPY 03840 EOR DESTN 03850 STA EQUAL ORG=ZIEL 03860 * 03870 LDY #6 03880 LDA #0 03890 STA SPFLAG POINTER 03900 STA FFIRST LOESCHEN 03910 .1 STA SLEFT,Y 03920 DEY 03930 BPL .1 03940 STY CFIRST 03950 LDA #163 SCREEN- 03960 STA SLEFT POSITIONEN 03970 LDA #203 DER BALKEN 03980 STA DLEFT SETZEN 03990 LDY #120 04000 JSR CLRSC1 04010 LDA #$32 04020 STA DISPLY+161 04030 LDA #$37 04040 STA DISPLY+201 04050 STA RETRY 04060 LDX #1 SEKTOR 1 04070 STX RSECA 04080 DEX 04090 STX RSECA+1 04100 ; 04110 BEGIN LDA EQUAL ORG=ZIEL? 04120 BEQ .2 04130 LDX #INBOTH "BEIDE DSK 04140 LDA #$20 EINLEGEN" 04150 .1 STX RWLINE 04160 LDA #$20 AUF TASTE 04170 JSR HITRET WARTEN 04180 CMP #6 START ? 04190 BEQ .3 04200 JMP STA2 ZUM MENU 04210 .2 LDX #INSOUR "ORIGINAL 04220 BNE .1 EINLEGEN" 04230 .3 LDA CFIRST 1.DURCH- 04240 BMI .4 GANG ? 04250 JMP COP3 04260 .4 LDA #$53 STATUS... 04270 STA DCOMND 04280 LDA #4 4 BYTES 04290 STA DBYTLO 04300 LDA #$40 READ 04310 STA DSTATS 04320 JSR SETBUF 04330 LDY SOURC 04340 JSR MOVSLO SIO.... 04350 LDY #133 SCRPOS 04360 JSR TXTOUT 04370 .AT "Density: " 04380 .HX EA 04390 LDA LOMEM STATUSBYTE 04400 AND #$A0 04410 STA DENS MERKEN 04420 AND #$80 MEDIUM ? 04430 BNE MEDIUM 04440 LDA #5 INCREMENT 04450 STA FINC FUER BALKEN 04460 LDA LOMEM 04470 AND #$20 DOUBLE ? 04480 BNE DOUBLE 04490 STA DENS 04500 JSR TXTOUT 04510 .AT "SINGLE" 04520 .HX EA 04530 JMP COPZD 04540 ; 04550 MEDIUM LDX #8 04560 STX FINC 04570 JSR TXTOUT 04580 .AT "MEDIUM" 04590 .HX EA 04600 BEQ COPZD 04610 ; 04620 DOUBLE JSR TXTOUT 04630 .AT "DOUBLE" 04640 .HX EA 04650 ; 04660 ; BEI SPEEDY 1050 KANN MIT 04670 ; 2 LAUFWERKEN DIE ZIELDISK 04680 ; FORMATIERT WERDEN, WENN DAS 04690 ; ORIGINAL EINGELESEN WIRD 04700 ; 04710 COPZD LDA EQUAL 04720 BEQ COP3 ORG=ZIEL 04730 LDA FORMT 04740 BNE COP3 NO FORMAT 04750 BIT DESST 04760 BPL COP3 NO SPEEDY 04770 JSR SETDEN DENSITY 04780 SEC SETZEN 04790 JSR SETVER VERIFY AUS 04800 TYA 04810 BMI COP3 04820 JCOP LDA #$20 COMMAND 20 04830 STA DCOMND AUTO-FORMAT 04840 LDA #0 04850 STA DSTATS 04860 LDY DESTN 00518 JSR MOVSLO SIO... 04880 TYA 04890 BPL FFOK 04900 JSR ERROR FEHLER 04910 BCC JCOP VERSUCH? 04920 JMP STA2 NEUSTART 04930 ; 04940 FFOK INC FFIRST 1.DURCHG. 04950 COP3 LDA RSECA START- 04960 STA RSECC SEKTOR 04970 LDA RSECA+1 MERKEN 04980 STA RSECC+1 04990 LDY SOURC ORG-DRIVE 05000 STY DUNIT 05010 BIT SPFLAG HI-SPEED 05020 BPL .1 05030 LDA #$28 SLOW 05040 STA SPTBL-1,Y 05050 .1 JSR SETBUF BUFFER 05060 .2 LDX SLEFT SETZEN 05070 LDY SROW 05080 LDA SSKIP 05090 JSR DFUEL BALKEN 05100 STA SSKIP AKTUALI- 05110 STY SROW SIEREN 05120 STX SLEFT 05130 .3 LDX #READIN "LESE -" 05140 STX RWLINE 05150 LDA #$40 GETBYTES 05160 STA DSTATS 05170 LDA RSECA SEKTOR # 05180 STA DSECLO 05190 LDA RSECA+1 05200 STA DSECHI 05210 LDA #$52 READ 05220 STA DCOMND 05230 JSR SETLEN LAENGE 05240 JSR MASTER SIO... 05250 BCC .5 05260 BIT SPFLAG ERROR? 05270 BPL .4 05280 JSR ERROR 05290 CMP #6 START ? 05300 BEQ .3 05310 CMP #5 SELECT ? 05320 BEQ .5 05330 JMP STA2 NEUSTART 05340 ; 05350 .4 LDY DUNIT 05360 LDA SPTBL-1,Y 05370 STA SPBYT 05380 LDA #$28 05390 STA SPTBL-1,Y 05400 DEC SPFLAG 05410 BNE .3 05420 .5 JSR ENDCHK ENDE ? 05430 BCC .2 05440 ; 05450 ; DATEN SCHREIBEN 05460 ; 05470 WRITER LDA RSECA START- 05480 STA RSECB SEKTOR 05490 LDA RSECA+1 05500 STA RSECB+1 05510 LDA EQUAL ORG=ZIEL? 05520 BNE COPW1 05530 LDX #INDEST "ZIEL 05540 STX RWLINE EINLEGEN" 05550 LDA #$20 05560 JSR HITRET TASTE... 05570 CMP #5 OPTION ? 05580 BCC .1 VERIFY: 05590 LSR SELECT=EIN 05600 JSR SETVER START=AUS 05610 JMP COPW1 05620 .1 JMP STA2 NEUSTART 05630 ; 05640 COPW1 LDA RSECC START- 05650 STA RSECA SEKTOR 05660 LDA RSECC+1 05670 STA RSECA+1 05680 LDA DESTN ZIELDRIVE 05690 STA DUNIT 05700 BIT SPFLAG SLOW ? 05710 BPL .1 05720 LDY SOURC 05730 LDA SPBYT 05740 STA SPTBL-1,Y 05750 .1 LDA CFIRST 1.DURCHG.? 05760 BPL NOFORM 05770 LDA FFIRST FORMAT OK? 05780 BNE NOFORM 05790 LDA FORMT NO FORMAT 05800 BNE NOFORM 05810 .2 LDX #FMATIN "FORMAT.." 05820 STX RWLINE 05830 LDA DESST 05840 BPL .3 05850 JSR SETDEN DENSITY 05860 .3 LDA #$80 SETZEN 05870 STA DBYTLO $80 BYTES 05880 LDA #$22 COMMAND 22 05890 BIT DENS MEDIUM ? 05900 BMI .5 05910 LDA DENS DOUBLE ? 05920 BEQ .4 05930 ASL DBYTLO $100 BYTES 05940 .4 LDA #$21 COMMAND 21 05950 .5 STA DCOMND 05960 LDA #$D5 $D500 05970 STA DBUFHI BUFFER 05980 LDA #$40 05990 STA DSTATS STATUS 06000 LDY DESTN 06010 JSR MOVSLO SIO... 06020 TYA 06030 BPL NOFORM FORMAT OK 06040 JSR ERROR 06050 BCC .2 WEITER 06060 JMP STA2 NEUSTART 06070 ; 06080 NOFORM LDA #$50 PUTBYTE 06090 STA DCOMND 06100 INC CFIRST 1.DURCHG. 06110 JSR SETBUF BUFFER 06120 .1 LDX #READIN "LESE-" 06130 STX RWLINE 06140 LDA #$80 06150 STA DSTATS STATUS 06160 LDA RSECA 06170 STA DSECLO 06180 LDA RSECA+1 06190 STA DSECHI SEKTOR # 06200 JSR SETLEN LAENGE 06210 JSR EMPTY SEKTOR 06220 BCS .2 LEER ? 06230 JSR MASTER SIO... 06240 BCC .2 ERROR ? 06250 JSR ERROR 06260 BCC .1 WEITER 06270 JMP STA2 NEUSTART 06280 ; 06290 .2 LDX DLEFT 06300 LDY DROW 06310 LDA DSKIP 06320 JSR DFUEL BALKEN 06330 STA DSKIP AKTUALI- 06340 STY DROW SIEREN 06350 STX DLEFT 06360 JSR ENDCHK ENDE ? 06370 BCC .1 06380 PHP 06390 LDA DESST 06400 BPL .3 06410 LDA #$51 COMMAND 51 06420 STA DCOMND MOTOR STOP 06430 LDA #0 06440 STA DSTATS 06450 LDY DESTN 06460 JSR MOVSLO SIO... 06470 .3 PLP 06480 BEQ DONE DISK ENDE 06490 LDA RSECB 06500 STA RSECA ENDSEKTOR 06510 LDA RSECB+1 MERKEN 06520 STA RSECA+1 06530 LDA EQUAL ORG=ZIEL? 06540 BNE .4 06550 JMP BEGIN 06560 .4 JMP COP3 WEITER... 06570 ------------------------------
COPY2.ASM#
The data "
00010 ------------------------------
00020 ** COPY2 **
00030 ------------------------------
00040 ;
00050 ; LAUFWERKS-DENSITY EINSTELLEN
00060 ; MEDIUM MUSS BEI AUTO-FORMAT
00070 ; GESETZT WERDEN.
00080 ;
00090 SETDEN LDA DENS
00100 BEQ .2
00110 BPL .1
00120 LDX #SETMD MEDIUM
00130 LDY /SETMD
00140 BNE .3
00150 .1 LDX #SETDD DOUBLE
00160 LDY /SETDD
00170 BNE .3
00180 .2 LDX #SETSD SINGLE
00190 LDY /SETSD
00200 .3 STX DBUFLO
00210 STY DBUFHI
00220 LDA #$4F COMMAND 4F
00230 STA DCOMND
00240 LDA #$C 12 BYTES
00250 STA DBYTLO
00260 LDA #$80 SENDEN
00270 STA DSTATS
00280 LDY DESTN DRIVE
00290 JMP MOVSLO SIO...
00300 ------------------------------
00310 ;
00320 ; FORMAT-VERIFY EIN- ODER
00330 ; AUSSCHALTEN
00340 ;
00350 SETVER LDA #$10
00360 BCS .1
00370 ORA #$20 SEKTOR LOW
00380 .1 STA DSECLO
00390 LDA #0
00400 STA DSTATS STATUS
00410 LDA #$44 COMMAND 44
00420 STA DCOMND
00430 LDY DESTN DRIVE
00440 JMP MOVSLO SIO...
00450 ------------------------------
00460 ;
00470 ; KOPIEREN BEENDET
00480 ;
00490 DONE LDY #120
00500 LDX #0 DISPLAY
00510 .1 LDA DISPLY,Y RETTEN
00520 STA DSBUF,X
00530 INX
00540 INY
00550 CPY #200
00560 BNE .1
00570 LDA CFIRST ANZ.
00580 STA RAMDSK DURCHG.
00590 ;
00600 ; ENDE-SOUND
00610 ;
00620 LDA #0
00630 STA $D208 AUDCTL
00640 LDY #$EF
00650 .2 STY $D201 AUDC1
00660 STY BYT1
00670 JSR LLL
00680 LDY BYT1
00690 DEY
00700 CPY #$DF
00710 BNE .2
00720 JMP STA2 NEUSTART
00730 ;
00740 LLL LDX #$8
00750 .1 STX $D200 AUDF1
00760 LDY #$0
00770 .2 DEY
00780 BNE .2
00790 INX
00800 CPX #$50
00810 BNE .1
00820 RTS
00830 ------------------------------
00840 ;
00850 ; DATENLAENGE SETZEN
00860 ; SEKTORNUMMER AUSGEBEN
00870 ;
00880 SETLEN LDA #$80
00890 STA DBYTLO $80 BYTES
00900 LDA #0
00910 STA DBYTHI
00920 LDY #30
00930 LDA DSECHI
00940 JSR HXOUT SEKTOR HI
00950 LDA DSECLO
00960 JSR HEXOUT SEKTOR LO
00970 LDA DENS
00980 CMP #$20 DOUBLE ?
00990 BNE .2
01000 LDA DSECHI
01010 BNE .1
01020 LDA DSECLO
01030 CMP #4 SEKTOR <4
01040 BCC .2
01050 .1 ASL DBYTLO $100 BYTES
01060 ROL DBYTHI
01070 .2 RTS
01080 ------------------------------
01090 ;
01100 ; SIO-AUFRUFEN / 2 VERSUCHE
01110 ;
01120 MASTER LDA #2 2 VERSUCHE
01130 STA BYT1
01140 LDA DSTATS STATUS
01150 STA BYT1+1 MERKEN
01160 .1 JSR US
01170 BPL .2 KEIN ERROR
01180 LDA BYT1+1 STATUS
01190 STA DSTATS ZURUECK
01200 DEC BYT1 LETZTER
01210 BNE .1 VERSUCH?
01220 STY DSTATS
01230 SEC
01240 RTS FEHLER
01250 .2 CLC
01260 RTS KEIN FEHLER
01270 ------------------------------
01280 ;
01290 ; KOMMANDO IN NORMALER UEBER-
01300 ; TRAGUNGSRATE SENDEN
01310 ;
01320 MOVSLO STY DUNIT
01330 LDA SPTBL-1,Y
01340 PHA
01350 LDA #$28
01360 STA SPTBL-1,Y
01370 JSR MASTER
01380 LDX DUNIT
01390 PLA
01400 STA SPTBL-1,X
01410 RTS
01420 ------------------------------
01430 ENDCHK BIT DENS MEDIUM?
01440 BPL .1
01450 LDA RSECA
01460 CMP #$10
01470 BNE .2 SEKTOR
01480 LDA RSECA+1 $410
01490 CMP #4 ERREICHT?
01500 BNE .2
01510 SEC
01520 RTS
01530 .1 LDA RSECA SEKTOR
01540 CMP #$D0 $2D0
01550 BNE .2 ERREICHT?
01560 LDA RSECA+1
01570 CMP #2
01580 BNE .2
01590 SEC
01600 RTS
01610 .2 INC RSECA SEKTOR+1
01620 BNE .3
01630 INC RSECA+1
01640 .3 LDA DBUFLO BUFFER
01650 CLC +LAENGE=
01660 ADC DBYTLO BUFFER
01670 STA DBUFLO
01680 LDA DBUFHI
01690 ADC DBYTHI
01700 STA DBUFHI
01710 BIT BANKS DATEN IN
01720 BMI SAVBNK RAMDISK?
01730 TAY
01740 INY $F000?
01750 CPY #$F1
01760 BEQ .6
01770 CPY #$D1 $D000?
01780 BEQ .5
01790 CPY HIMEM MEMTOP?
01800 BNE .4
01810 LDA #$C0 BUFFER=
01820 STA DBUFHI $C000
01830 LDA #0
01840 STA DBUFLO
01850 .4 CLC
01860 BCC ENDC3
01870 .5 LDA #0 BUFFER=
01880 STA DBUFLO $D800
01890 LDA #$D8
01900 STA DBUFHI
01910 CLC
01920 BCC ENDC3
01930 ;
01940 .6 LDA MAXBANK ENDE
01950 BNE SWBANK RAMDISK?
01960 ENDRAM SEC
01970 ENDC3 LDA #$FF
01980 RTS
01990 ------------------------------
02000 ;
02010 ; BANK EINSCHALTEN/BUFFER=$4000
02020 ;
02030 SWBANK LDY #$FF
02040 STY BANKS
02050 INY
02060 STY BANKNR
02070 SWB0 LDA PORTB
02080 AND #$23
02090 ORA BANKTB,Y
02100 STA PORTB
02110 LDA #0 BUFFER=
02120 STA DBUFLO $4000
02130 LDA #$40
02140 STA DBUFHI
02150 CLC
02160 BCC ENDC3
02170 ------------------------------
02180 SAVBNK CMP #$80 ENDE
02190 BCC ENDC3 RAMBANK?
02200 INC BANKNR BANK+1
02210 LDY BANKNR
02220 CPY MAXBANK ENDE
02230 BEQ ENDRAM RAMDISK?
02240 BNE SWB0
02250 ------------------------------
02260 ;
02270 ; DISKBUFFER AUF LOMEM SETZEN
02280 ; RAMBANKS ABSCHALTEN
02290 ;
02300 SETBUF LDA #LOMEM
02310 STA DBUFLO
02320 LDA /LOMEM
02330 STA DBUFHI
02340 LDA #0
02350 STA BANKS
02360 LDA PORTB CPU
02370 ORA #$10 ZUGRIFF
02380 STA PORTB AUS
02390 RTS
02400 ------------------------------
02410 ;
02420 ; FEHLERMELDUNG UND FEHLERNUM-
02430 ; MER AUSGEBEN/AUF TASTE WARTEN
02440 ;
02450 ERROR LDX #DSKERR "FEHLER.."
02460 STX RWLINE
02470 LDY #15 POS.15
02480 LDA DSTATS NUMMER
02490 JSR HEXOUT
02500 LDA #$80
02510 JSR HITRET TASTE ?
02520 BEQ .1
02530 SEC
02540 RTS
02550 .1 CLC
02560 RTS
02570 ------------------------------
02580 ;
02590 ; HEXZAHL IM ACCU UMWANDELN
02600 ; UND IN TEXTZEILE EINSETZEN
02610 ;
02620 HEXOUT PHA HIGH
02630 LSR NIBBLE
02640 LSR
02650 LSR
02660 LSR
02670 JSR HXOUT
02680 PLA LOW
02690 AND #$F NIBBLE
02700 HXOUT CMP #$A
02710 BCC .1
02720 ADC #6
02730 .1 ADC #$D0
02740 STA DSKERR,Y
02750 INY
02760 RTS
02770 ------------------------------
02780 ;
02790 ; BALKENPOSITION AKTUALISIEREN
02800 ;
02810 DFUEL STY FBYT
02820 TAY
02830 INY EIN SCHRITT
02840 CPY FINC WEITER?
02850 BCC .2
02860 LDY FBYT
02870 INY
02880 CPY #4
02890 BCC .1
02900 INX
02910 LDY #0
02920 .1 LDA FTAB,Y ZEICHEN
02930 STA DISPLY,X SETZEN
02940 LDA #0
02950 RTS
02960 .2 TYA
02970 LDY FBYT
02980 RTS
02990 ------------------------------
03000 ;
03010 ; BALKEN SETZT SICH AUS GRAFIK-
03020 ; ZEICHEN ZUSAMMEN " 0x16 0x19 Ç † "
03030 ;
03040 FTAB .HX 5659C280
03050 ;
03060 ;
03070 ;
03080 COLTB .HX FA8A10CA10
03090 ;
03100 ; TEXTE DER SPEICHERGROESSE
03110 ; 16K / 8K / OHNE CARTRIDGE
03120 ;
03130 MEMTB .AT "40k 48k 56k " 64K
03140 .AT "104k112k120k" 128K
03150 .AT "168k176k184k" 192K
03160 .AT "296k304k312k" 320K
03170 ------------------------------
03180 ;
03190 ; LAUFWERK KONFIGURATIONSDATEN
03200 ; SINGLE/DOUBLE/MEDIUM-DENSITY
03210 ;
03220 SETSD .HX 2800001200000080
03230 .HX FF000000
03240 SETDD .HX 2800001200040100
03250 .HX FF000000
03260 SETMD .HX 2800001A00040080
03270 .HX FF000000
03280 ------------------------------
03290 ;
03300 ; TESTEN OB ALLE BYTES IM
03310 ; BUFFER NULL SIND
03320 ;
03330 EMPTY LDA FORMT FORMATFLG
03340 BNE EMP2
03350 LDA DBUFLO ADRESSE
03360 STA EMPVEC+1
03370 LDA DBUFHI
03380 STA EMPVEC+2
03390 LDY #0
03400 EMPVEC LDA $AAAA,Y
03410 BNE EMP2
03420 INY
03430 CPY DBYTLO ALLE BYTES
03440 BNE EMPVEC GETESTET?
03450 SEC
03460 RTS
03470 EMP2 CLC
03480 RTS
03490 ------------------------------
03500 ;
03510 ; TEXT AN POSITION IM Y-REG.
03520 ; AUSGEBEN / ENDKENNUNG = $EA
03530 ;
03540 TXTOUT PLA TEXTADRESSE
03550 STA $43 VOM STACK
03560 PLA
03570 STA $44
03580 .1 INC $43 ADRESSE+1
03590 BNE .2
03600 INC $44
03610 .2 LDX #0
03620 LDA ($43,X)
03630 CMP #$EA TEXT ENDE?
03640 BEQ .3
03650 STA DISPLY,Y
03660 INY
03670 BNE .1
03680 .3 JMP ($43) ZURUECK
03690 ------------------------------
03700 ;
03710 ; BILSCHIRM LOESCHEN
03720 ;
03730 CLRSCR LDY #0
03740 CLRSC1 LDA #0
03750 .1 STA DISPLY,Y
03760 INY
03770 CPY #$F0 LAENGE $F0
03780 BNE .1
03790 RTS
03800 ------------------------------
03810 ;
03820 ; TON AUSGEBEN UND AUF TASTE
03830 ; WARTEN
03840 ;
03850 HITRET STA $D200 AUDF1
03860 LDY #$EF
03870 .1 LDX #$FF
03880 .2 STX $D40A
03890 DEX
03900 BNE .2
03910 DEY
03920 STY $D201 AUDC1
03930 CPY #$E0
03940 BNE .1
03950 JSR GETKEY TASTE?
03960 RTS
03970 ------------------------------
03980 ;
03990 ; AUF EINE FUNKTIONSTASTE
04000 ; WARTEN
04010 ;
04020 GETKEY LDA $D01F
04030 CMP #7 KEINE
04040 BNE GETKEY TASTE?
04050 LDX #0
04060 .1 DEX ZEITVERZ.
04070 STX $D40A
04080 BNE .1
04090 .2 LDA $D01F TASTE
04100 CMP #7 ENTPRELLEN
04110 BEQ .2
04120 LDY #$40
04130 .3 STA $D40A
04140 STY $D01F
04150 DEY
04160 BNE .3
04170 STY $4D
04180 RTS ACCU=TASTE
04190 ------------------------------
" is not legal for a JDOM character content: 0x0016 is not a legal XML character.