diff --git a/loaderFN.asm b/loaderFN.asm index 79803ca..b9bb497 100644 --- a/loaderFN.asm +++ b/loaderFN.asm @@ -1250,7 +1250,7 @@ NoZpage JMP loader.LoadStart ; po przepisaniu FileToOpen - .BYTE "H:SCORCH.XEX",155,0 + .BYTE 'H:SCORCH.XEX',0 ; Sprawdzenie odpowiednich flag i przepisanie za loaderem procedury obslugi odpowiedniego Turba ; na koniec odpowiednie zmodyfikowanie MEMLO ADDspeedProc diff --git a/loaderFN.lab b/loaderFN.lab index 588312d..a10e568 100644 --- a/loaderFN.lab +++ b/loaderFN.lab @@ -261,115 +261,115 @@ Label table: 00 2711 CLEARLOOP1 00 2723 NOZPAGE 00 274A FILETOOPEN -00 2758 ADDSPEEDPROC -00 2772 HAPPYRELOCATE -00 2792 LABEL72X -00 2796 TURBORELOCADDR -00 27A1 LABEL73 -00 27BC NOHAPPYLOADER -00 27BD HAPPYUSMOVEDPROC -00 27D4 COMMANDLOOP -00 27D5 HAPPYSPEED -00 27E0 DELAYLOOPCMD -00 27EA XJSR1 -00 27FE XJSR2 -00 2804 XJSR3 -00 280A XJSR4 -00 280F XJSR5 -00 2812 WAITFORENDOFTRANSMISSION -00 281B XJSR6 -00 2825 DOUBLEACK -00 2825 XJSR7 -00 2831 READSECTORLOOP -00 2831 XJSR8 -00 2836 XJSR9 -00 283E XJSRA -00 2845 ERRORHERE -00 2850 ENDOFTRANSMISSION -00 285E SECTRANSREG -00 2874 PUTSIOBYTE -00 2875 WAITFORSERIAL -00 2888 ADDCHECKSUM -00 2890 GETSIOBYTE -00 2892 EXTERNALLOOP -00 2896 INTERNALLOOP -00 28A6 ACKRECEIVE -00 28BC ENDHAPPYUSPROC -00 28BC BLOKDANYCHIO_GETUSSPEED -00 28C8 DIRMAPEND -00 28CB LABEL39 -00 28DF DISCNOTCHANGED2 -00 2907 LABEL80 -00 2915 NONEXTMAPSECTOR -00 2937 NOINCH -00 2967 LABEL79 -00 2994 LABEL75 -00 29A5 LABEL81 -00 29B3 LABEL82 -00 29C1 READPERCOM -00 29C6 READPERCOMRETRY -00 29DA PERCOMERROR -00 29DF SET1SECT128 -00 29EA BLOKDANYCHIO_PERCOM -00 29F6 READFIRSTSECT -00 2A0C READSECTOR -00 2A15 READSECTOR1 -00 2A23 DISKREADRETRY -00 2A30 LABEL85 -00 2A3A BLOKDANYCHIO -00 2A46 DISKRETRYCOUNT -00 2A47 PRINTXY -00 2A73 LABEL92 -00 2A90 LABEL90 -00 2A97 LABEL91 -00 2A9F LABEL89 -00 2AB1 LABEL93 -00 2AC2 LABEL88 -00 2AC9 LABEL87 -00 2ACF LABEL94 -00 2AD4 GOERRORDISP -00 2AD7 GOSIO -00 2ADF STANDARDSPEED -00 2AE2 TABLE2DCB -00 2AEA IOTABLEADDR -00 2AF4 CLOSE1 -00 2AF6 CLOSEX -00 2AFE GETKEY -00 2B42 GKEYERROR -00 2B45 KDRIVER -00 2B48 DISCCHANGECHECK -00 2B51 LABEL98 -00 2B5E CHANGEDD -00 2B5F ASTERIKS -00 2B7D GETHEXNUMBER -00 2B8D GETHEX4BITS -00 2B98 ISNUMBER -00 2B99 SETDRIVENR -00 2BAC SETDRIVELETTER -00 2BBB SETBLOKDANYCHDRIVE -00 2BC8 MEMLOPRINT -00 2BFF MEMLOVALUE -00 2C05 XJSRTABLEL -00 2C0F XJSRTABLEH -00 2C19 HAPPYOFFSET -00 2C1B DENSITYCODES -00 2C1E ONTEXT -00 2C21 OFFTEXT -00 2C24 PDVMASKTEMP -00 2C25 PERCOMDATA -00 2C31 FIRSTSECTORSTABLE +00 2757 ADDSPEEDPROC +00 2771 HAPPYRELOCATE +00 2791 LABEL72X +00 2795 TURBORELOCADDR +00 27A0 LABEL73 +00 27BB NOHAPPYLOADER +00 27BC HAPPYUSMOVEDPROC +00 27D3 COMMANDLOOP +00 27D4 HAPPYSPEED +00 27DF DELAYLOOPCMD +00 27E9 XJSR1 +00 27FD XJSR2 +00 2803 XJSR3 +00 2809 XJSR4 +00 280E XJSR5 +00 2811 WAITFORENDOFTRANSMISSION +00 281A XJSR6 +00 2824 DOUBLEACK +00 2824 XJSR7 +00 2830 READSECTORLOOP +00 2830 XJSR8 +00 2835 XJSR9 +00 283D XJSRA +00 2844 ERRORHERE +00 284F ENDOFTRANSMISSION +00 285D SECTRANSREG +00 2873 PUTSIOBYTE +00 2874 WAITFORSERIAL +00 2887 ADDCHECKSUM +00 288F GETSIOBYTE +00 2891 EXTERNALLOOP +00 2895 INTERNALLOOP +00 28A5 ACKRECEIVE +00 28BB ENDHAPPYUSPROC +00 28BB BLOKDANYCHIO_GETUSSPEED +00 28C7 DIRMAPEND +00 28CA LABEL39 +00 28DE DISCNOTCHANGED2 +00 2906 LABEL80 +00 2914 NONEXTMAPSECTOR +00 2936 NOINCH +00 2966 LABEL79 +00 2993 LABEL75 +00 29A4 LABEL81 +00 29B2 LABEL82 +00 29C0 READPERCOM +00 29C5 READPERCOMRETRY +00 29D9 PERCOMERROR +00 29DE SET1SECT128 +00 29E9 BLOKDANYCHIO_PERCOM +00 29F5 READFIRSTSECT +00 2A0B READSECTOR +00 2A14 READSECTOR1 +00 2A22 DISKREADRETRY +00 2A2F LABEL85 +00 2A39 BLOKDANYCHIO +00 2A45 DISKRETRYCOUNT +00 2A46 PRINTXY +00 2A72 LABEL92 +00 2A8F LABEL90 +00 2A96 LABEL91 +00 2A9E LABEL89 +00 2AB0 LABEL93 +00 2AC1 LABEL88 +00 2AC8 LABEL87 +00 2ACE LABEL94 +00 2AD3 GOERRORDISP +00 2AD6 GOSIO +00 2ADE STANDARDSPEED +00 2AE1 TABLE2DCB +00 2AE9 IOTABLEADDR +00 2AF3 CLOSE1 +00 2AF5 CLOSEX +00 2AFD GETKEY +00 2B41 GKEYERROR +00 2B44 KDRIVER +00 2B47 DISCCHANGECHECK +00 2B50 LABEL98 +00 2B5D CHANGEDD +00 2B5E ASTERIKS +00 2B7C GETHEXNUMBER +00 2B8C GETHEX4BITS +00 2B97 ISNUMBER +00 2B98 SETDRIVENR +00 2BAB SETDRIVELETTER +00 2BBA SETBLOKDANYCHDRIVE +00 2BC7 MEMLOPRINT +00 2BFE MEMLOVALUE +00 2C04 XJSRTABLEL +00 2C0E XJSRTABLEH +00 2C18 HAPPYOFFSET +00 2C1A DENSITYCODES +00 2C1D ONTEXT +00 2C20 OFFTEXT +00 2C23 PDVMASKTEMP +00 2C24 PERCOMDATA +00 2C30 FIRSTSECTORSTABLE 00 2D00 FIRSTSECTORBUFF 00 2D00 PROGRAMEND 00 2D80 DIRMAPSECTORBUFF 00 2F80 DIRSECTORBUFF -00 2C25 FIRSTRUN -00 2C2F NOSHIFTBOOT -00 2C38 BASSTATPRINT -00 2C41 BRAKBASICA -00 2C43 TESTQMEGLOOP -00 2C55 QSTATPRINT -00 2C5E BRAKQMEGA -00 2C76 QMEGSTRING +00 2C24 FIRSTRUN +00 2C2E NOSHIFTBOOT +00 2C37 BASSTATPRINT +00 2C40 BRAKBASICA +00 2C42 TESTQMEGLOOP +00 2C54 QSTATPRINT +00 2C5D BRAKQMEGA +00 2C75 QMEGSTRING 00 0080 MAPCOUNTER 00 0082 COMPRESSEDMAPCOUNTER 00 0084 MAPCOUNTERMEM diff --git a/loaderFN.lst b/loaderFN.lst index 62be225..414dcb6 100644 --- a/loaderFN.lst +++ b/loaderFN.lst @@ -281,7 +281,7 @@ Source: SYSEQU.ASM 184 = 07D7 TempMEMLO = loader.FirstMapSectorNr ; Koniec procedury loader (poczatek bufora) 185 186 START - 187 FFFF> 1FFD-2CE6> 4C 25 + JMP FirstRun ;1FFD 4C 70 21 + 187 FFFF> 1FFD-2CE5> 4C 24 + JMP FirstRun ;1FFD 4C 70 21 188 189 190 ; procedura ladujaca, ktora zostanie przepisana pod adres $0700 po wybraniu programu @@ -487,7 +487,7 @@ Source: SYSEQU.ASM 390 2137 EditorOpen 391 ; otwarcie ekranu !!! 392 2137 A2 00 LDX #$00 ; kanal nr 0 - 393 2139 20 F6 2A JSR CloseX ; najpierw Zamkniecie Ekranu + 393 2139 20 F5 2A JSR CloseX ; najpierw Zamkniecie Ekranu 394 213C 30 55 BMI ErrorDisplay 395 213E A2 00 LDX #$00 ; kanal nr 0 396 2140 A9 03 LDA #$03 @@ -512,9 +512,9 @@ Source: SYSEQU.ASM 415 216B 8D 22 21 STA USmode 416 216E F0 1E BEQ NoUSSpeed 417 ; Pytanie stacji o predkosc transmisji Happy/US-Doubler - 418 2170 A0 BC ldy #blokDanychIO_GetUSSpeed - 420 2174 20 E2 2A jsr Table2DCB + 420 2174 20 E1 2A jsr Table2DCB 421 2177 20 59 E4 jsr JSIOINT ; wysylamy "?" 422 217A 10 07 bpl USSpeed 423 217C A9 00 lda #0 ; blad odczytu wiec nie ma USspeed - zerujemy wiec flage @@ -523,7 +523,7 @@ Source: SYSEQU.ASM 426 2183 USSpeed 427 2183 A0 02 LDY #$2 428 2185 USstatprint - 429 2185 B9 1E 2C LDA ONtext,y + 429 2185 B9 1D 2C LDA ONtext,y 430 2188 99 F7 22 STA USstatus,y 431 218B 88 DEY 432 218C 10 F7 bpl USstatprint @@ -536,7 +536,7 @@ Source: SYSEQU.ASM 439 2193 ErrorDisplay 440 2193 98 TYA 441 2194 48 PHA - 442 2195 20 F4 2A JSR Close1 + 442 2195 20 F3 2A JSR Close1 443 2198 68 PLA 444 2199 48 PHA 445 219A 4A LSR @@ -548,7 +548,7 @@ Source: SYSEQU.ASM 451 21A4 68 PLA 452 21A5 20 28 21 JSR bin2AsciiHex ; 4 mlodsze bity na HEX 453 21A8 8D BB 21 STA ErrorNumHex+1 - 454 21AB 20 47 2A JSR PrintXY + 454 21AB 20 46 2A JSR PrintXY 455 21AE 00 00 .BY $00,$00 456 21B0 7D .BY $7d ; kod czyszczenia ekranu 457 21B1 45 52 52 4F 52 20 + .BY "ERROR - $" @@ -567,14 +567,14 @@ Source: SYSEQU.ASM 470 ; po bledzie przechodzimy na te z ktorej sie ladowalismy 471 21CB AD 24 21 LDA BootDrive 472 ;LDA #1 - 473 21CE 20 99 2B JSR SeTDriveNR + 473 21CE 20 98 2B JSR SeTDriveNR 474 ; ----------------- 475 21D1 4C 65 21 JMP mainprog ; i odpalamy program od nowa 476 21D4 ReadMainDir - 477 21D4 20 C1 29 JSR ReadPERCOM + 477 21D4 20 C0 29 JSR ReadPERCOM 478 21D7 A2 2D LDX #>FirstSectorBuff 479 21D9 A0 00 LDY #" @@ -984,7 +984,7 @@ Source: SYSEQU.ASM 887 ; sprawdzenie ctrl+A do ctrl+O (kody od $01 do $0f) 888 2503 C9 10 CMP #$10 889 2505 B0 06 BCS noCtrlLetter ; jesli kod mniejszy od 16 to naped (0 wykluczylismy na poczatku) - 890 2507 20 AC 2B JSR SeTDriveLetter + 890 2507 20 AB 2B JSR SeTDriveLetter 891 250A 4C 65 21 JMP mainprog 892 250D noCtrlLetter 893 ; sprawdzenie klawiszy 1-8 @@ -994,7 +994,7 @@ Source: SYSEQU.ASM 897 2513 B0 09 BCS NoNumber 898 2515 38 SEC 899 2516 E9 30 SBC #'0' - 900 2518 20 99 2B JSR SeTDriveNR + 900 2518 20 98 2B JSR SeTDriveNR 901 251B 4C 65 21 JMP mainprog 902 ; ----------------- 903 251E NoNumber @@ -1008,9 +1008,9 @@ Source: SYSEQU.ASM 911 2529 B0 AB BCS KeyboardProc ; jesli spoza zakresu wracamy do czekania na klawisz 912 252B 0A ASL 913 252C AA TAX - 914 252D BD 31 2C LDA FirstSectorsTable,X + 914 252D BD 30 2C LDA FirstSectorsTable,X 915 2530 85 D4 STA $D4 - 916 2532 BD 32 2C LDA FirstSectorsTable+1,X + 916 2532 BD 31 2C LDA FirstSectorsTable+1,X 917 2535 85 D5 STA $D5 918 2537 A0 00 LDY #$00 919 2539 B1 D4 LDA ($D4),Y @@ -1027,7 +1027,7 @@ Source: SYSEQU.ASM 930 254B SubDirText 931 254B 3C 53 55 42 2D 44 + .BY "" 932 2554 GOtoLoader - 933 2554 20 48 2B JSR DiscChangeCheck ; Sprawdzenie czy w miedzyczasie nie zostala zmieniona dyskietka + 933 2554 20 47 2B JSR DiscChangeCheck ; Sprawdzenie czy w miedzyczasie nie zostala zmieniona dyskietka 934 2557 F0 03 BEQ DiskNotChanged1 935 2559 4C D4 21 JMP ReadMainDir ; jesli zmieniono to skok na poczatek programu i ponowny odczyt katalogu glownego 936 255C DiskNotChanged1 @@ -1042,11 +1042,11 @@ Source: SYSEQU.ASM 945 256B A0 01 LDY #$01 946 256D B1 D4 LDA ($D4),Y 947 256F 8D D7 20 STA .adr loader.FirstMapSectorNr ; przed przepisaniem - 948 2572 8D 44 2A sta blokDanychIO+$A ; od razu do bloku IOCB + 948 2572 8D 43 2A sta blokDanychIO+$A ; od razu do bloku IOCB 949 2575 C8 INY 950 2576 B1 D4 LDA ($D4),Y 951 2578 8D D8 20 STA .adr loader.FirstMapSectorNr+1 ; przed przepisaniem - 952 257B 8D 45 2A sta blokDanychIO+$B ; od razu do bloku IOCB + 952 257B 8D 44 2A sta blokDanychIO+$B ; od razu do bloku IOCB 953 257E C8 INY 954 257F B1 D4 LDA ($D4),Y 955 2581 49 FF EOR #$FF @@ -1070,7 +1070,7 @@ Source: SYSEQU.ASM 973 ; czytamy pierwszy sektor mapy 974 2596 A0 80 LDY #DirMapSectorBuff - 976 259A 20 0C 2A Jsr ReadSector + 976 259A 20 0B 2A Jsr ReadSector 977 ; pobieramy numer pierwszego sektora pliku i od razu robimy wpis w mapie !!! 978 259D A9 00 LDA #00 979 259F 85 82 STA CompressedMapCounter @@ -1173,12 +1173,12 @@ Source: SYSEQU.ASM 1076 264C 0D 81 2D ORA DirMapSectorBuff+1 1077 264F F0 45 BEQ EndMakingMap 1078 2651 AD 80 2D LDA DirMapSectorBuff - 1079 2654 8D 44 2A sta blokDanychIO+$A + 1079 2654 8D 43 2A sta blokDanychIO+$A 1080 2657 AD 81 2D LDA DirMapSectorBuff+1 - 1081 265A 8D 45 2A sta blokDanychIO+$B + 1081 265A 8D 44 2A sta blokDanychIO+$B 1082 265D A0 80 LDY #DirMapSectorBuff - 1084 2661 20 0C 2A Jsr ReadSector + 1084 2661 20 0B 2A Jsr ReadSector 1085 ; zerujemy licznik mapy 1086 2664 A9 00 LDA #$00 1087 2666 85 81 STA MapCounter+1 @@ -1236,13 +1236,13 @@ Source: SYSEQU.ASM 1139 ; STA DOSVEC 1140 ; zapamietanie stanu urzadzen PBI 1141 26B4 AD 47 02 LDA PDVMASK - 1142 26B7 8D 24 2C STA PDVMASKtemp + 1142 26B7 8D 23 2C STA PDVMASKtemp 1143 26BA 4C 74 E4 JMP JRESETWM ; wymuszenie cieplego resetu - z ustawionymi odpowiednimi prametrami powrotu 1144 26BD AfterWormStart 1145 ; wyznaczamy MEMlo, najpierw dodajemy dlugosc bufora na sektor 1146 ; do koncowego adresu naszej procedury 1147 ; odtworzenie stanu PBI - 1148 26BD AD 24 2C LDA PDVMASKtemp + 1148 26BD AD 23 2C LDA PDVMASKtemp 1149 26C0 8D 47 02 STA PDVMASK 1150 ; JSR EditorOpen ; zamiast cieplego startu czyszczenie ekranu 1151 26C3 18 CLC @@ -1268,11 +1268,11 @@ Source: SYSEQU.ASM 1171 26E1 AD E7 02 LDA MEMLO 1172 ; ADC CompressedMapCounter 1173 ; STA MEMLO - 1174 26E4 8D 96 27 STA TurboRelocADDR + 1174 26E4 8D 95 27 STA TurboRelocADDR 1175 26E7 AD E8 02 LDA MEMLO+1 1176 ; ADC CompressedMapCounter+1 1177 ; STA MEMLO+1 - 1178 26EA 8D 97 27 STA TurboRelocADDR+1 + 1178 26EA 8D 96 27 STA TurboRelocADDR+1 1179 26ED A9 71 LDA #JTESTROM @@ -1311,8 +1311,8 @@ Source: SYSEQU.ASM 1214 SectorMapReady 1215 */ 1215 - 1216 2708 20 58 27 JSR ADDspeedProc ; procedura relokujaca procedury turbo (jesli potrzebne) i podnaszaca odpowiednio MEMLO - 1217 270B 20 C8 2B JSR MEMLOprint ; wyswietlenie wartosci MEMLO (moze wyswietlac i inne rzeczy) + 1216 2708 20 57 27 JSR ADDspeedProc ; procedura relokujaca procedury turbo (jesli potrzebne) i podnaszaca odpowiednio MEMLO + 1217 270B 20 C7 2B JSR MEMLOprint ; wyswietlenie wartosci MEMLO (moze wyswietlac i inne rzeczy) 1218 1219 270E A2 00 LDX #$00 1220 2710 8A TXA @@ -1348,66 +1348,66 @@ Source: SYSEQU.ASM 1250 1251 2747 4C D9 07 JMP loader.LoadStart ; po przepisaniu 1252 274A FileToOpen - 1253 274A 28 1A 33 23 2F 32 + .BYTE "H:SCORCH.XEX",155,0 + 1253 274A 48 3A 53 43 4F 52 + .BYTE 'H:SCORCH.XEX',0 1254 ; Sprawdzenie odpowiednich flag i przepisanie za loaderem procedury obslugi odpowiedniego Turba 1255 ; na koniec odpowiednie zmodyfikowanie MEMLO - 1256 2758 ADDspeedProc - 1257 2758 AD 22 21 LDA USmode - 1258 275B F0 5F beq NoHappyLoader + 1256 2757 ADDspeedProc + 1257 2757 AD 22 21 LDA USmode + 1258 275A F0 5F beq NoHappyLoader 1259 ; wyznaczamy offset procedury - 1260 275D 38 SEC - 1261 275E A9 BD LDA #HappyUSMovedProc - 1265 2768 ED E8 02 SBC MEMLO+1 - 1266 276B 8D 1A 2C STA HappyOffset+1 + 1260 275C 38 SEC + 1261 275D A9 BC LDA #HappyUSMovedProc + 1265 2767 ED E8 02 SBC MEMLO+1 + 1266 276A 8D 19 2C STA HappyOffset+1 1267 - 1268 276E A0 00 LDY #0 - 1269 2770 A2 09 LDX #[$A-1] ;xjsrA - the last + 1268 276D A0 00 LDY #0 + 1269 276F A2 09 LDX #[$A-1] ;xjsrA - the last 1270 ; relokujemy skoki pod offset z MEMLO - 1271 2772 HappyRelocate - 1272 2772 38 SEC - 1273 2773 BD 05 2C LDA xjsrTableL,x - 1274 2776 85 32 STA SecBuffer - 1275 2778 BD 0F 2C LDA xjsrTableH,x - 1276 277B 85 33 STA SecBuffer+1 - 1277 277D B1 32 LDA (SecBuffer),y - 1278 277F ED 19 2C SBC HappyOffset - 1279 2782 91 32 STA (SecBuffer),y - 1280 2784 C8 INY - 1281 2785 B1 32 LDA (SecBuffer),y - 1282 2787 ED 1A 2C SBC HappyOffset+1 - 1283 278A 91 32 STA (SecBuffer),y - 1284 278C 88 DEY - 1285 278D CA DEX - 1286 278E 10 E2 BPL HappyRelocate + 1271 2771 HappyRelocate + 1272 2771 38 SEC + 1273 2772 BD 04 2C LDA xjsrTableL,x + 1274 2775 85 32 STA SecBuffer + 1275 2777 BD 0E 2C LDA xjsrTableH,x + 1276 277A 85 33 STA SecBuffer+1 + 1277 277C B1 32 LDA (SecBuffer),y + 1278 277E ED 18 2C SBC HappyOffset + 1279 2781 91 32 STA (SecBuffer),y + 1280 2783 C8 INY + 1281 2784 B1 32 LDA (SecBuffer),y + 1282 2786 ED 19 2C SBC HappyOffset+1 + 1283 2789 91 32 STA (SecBuffer),y + 1284 278B 88 DEY + 1285 278C CA DEX + 1286 278D 10 E2 BPL HappyRelocate 1287 - 1288 2790 A2 FE LDX #[EndHappyUSProc-HappyUSMovedProc-1] - 1289 2792 label72x - 1290 2792 BD BD 27 LDA HappyUSMovedProc,X - 1291 = 2796 TurboRelocADDR=*+1 - 1292 2795 9D 00 0A STA $0A00,X - 1293 2798 CA DEX - 1294 2799 E0 FF CPX #$FF - 1295 279B D0 F5 BNE label72x - 1296 279D A0 FF LDY #[EndHappyUSProc-HappyUSMovedProc] - 1297 279F A2 00 LDX #$00 + 1288 278F A2 FE LDX #[EndHappyUSProc-HappyUSMovedProc-1] + 1289 2791 label72x + 1290 2791 BD BC 27 LDA HappyUSMovedProc,X + 1291 = 2795 TurboRelocADDR=*+1 + 1292 2794 9D 00 0A STA $0A00,X + 1293 2797 CA DEX + 1294 2798 E0 FF CPX #$FF + 1295 279A D0 F5 BNE label72x + 1296 279C A0 FF LDY #[EndHappyUSProc-HappyUSMovedProc] + 1297 279E A2 00 LDX #$00 1298 ; Zwiekszenie Memlo o dlugosc procedury i przelaczenie skoku do niej. - 1299 27A1 label73 - 1300 27A1 98 TYA - 1301 27A2 18 CLC - 1302 27A3 6D E7 02 ADC MEMLO - 1303 27A6 8D E7 02 STA MEMLO - 1304 27A9 8A TXA - 1305 27AA 6D E8 02 ADC MEMLO+1 - 1306 27AD 8D E8 02 STA MEMLO+1 - 1307 27B0 AD 96 27 LDA TurboRelocADDR - 1308 27B3 8D 97 07 STA loader.SioJMP+1 ; po przepisaniu - 1309 27B6 AD 97 27 LDA TurboRelocADDR+1 - 1310 27B9 8D 98 07 STA loader.SioJMP+2 ; po przepisaniu - 1311 27BC NoHappyLoader - 1312 27BC 60 RTS + 1299 27A0 label73 + 1300 27A0 98 TYA + 1301 27A1 18 CLC + 1302 27A2 6D E7 02 ADC MEMLO + 1303 27A5 8D E7 02 STA MEMLO + 1304 27A8 8A TXA + 1305 27A9 6D E8 02 ADC MEMLO+1 + 1306 27AC 8D E8 02 STA MEMLO+1 + 1307 27AF AD 95 27 LDA TurboRelocADDR + 1308 27B2 8D 97 07 STA loader.SioJMP+1 ; po przepisaniu + 1309 27B5 AD 96 27 LDA TurboRelocADDR+1 + 1310 27B8 8D 98 07 STA loader.SioJMP+2 ; po przepisaniu + 1311 27BB NoHappyLoader + 1312 27BB 60 RTS 1313 1314 1315 @@ -1415,726 +1415,726 @@ Source: SYSEQU.ASM 1317 ; Ta procedura ma maksymalna dlugosc jaka moze miec!!!!! 1318 ; powiekszenie jej O BAJT spowoduje ze przekroczy strone 1319 ; i nie przepisze sie prawidlowo na swoje miejsce !!!!! - 1320 27BD HappyUSMovedProc ; + 1320 27BC HappyUSMovedProc ; 1321 - 1322 27BD AD 04 03 LDA DBUFA - 1323 27C0 85 32 STA SecBuffer - 1324 27C2 AD 05 03 LDA DBUFA+1 - 1325 27C5 85 33 STA SecBuffer+1 + 1322 27BC AD 04 03 LDA DBUFA + 1323 27BF 85 32 STA SecBuffer + 1324 27C1 AD 05 03 LDA DBUFA+1 + 1325 27C4 85 33 STA SecBuffer+1 1326 - 1327 27C7 AD 08 03 LDA DBYT - 1328 27CA 85 31 STA SecLenUS + 1327 27C6 AD 08 03 LDA DBYT + 1328 27C9 85 31 STA SecLenUS 1329 - 1330 27CC 78 SEI - 1331 27CD BA TSX - 1332 27CE 86 37 STX StackCopy - 1333 27D0 A9 0D LDA #$0D - 1334 27D2 85 34 STA CRETRYZ + 1330 27CB 78 SEI + 1331 27CC BA TSX + 1332 27CD 86 37 STX StackCopy + 1333 27CF A9 0D LDA #$0D + 1334 27D1 85 34 STA CRETRYZ 1335 ;command retry on zero page - 1336 27D4 CommandLoop - 1337 = 27D5 HappySpeed = *+1 - 1338 27D4 A9 28 LDA #$28 ;here goes speed from "?" - 1339 27D6 8D 04 D2 STA AUDF3 - 1340 27D9 A9 34 LDA #$34 - 1341 27DB 8D 03 D3 STA PBCTL ;ustawienie linii command - 1342 27DE A2 80 LDX #$80 - 1343 27E0 DelayLoopCmd - 1344 27E0 CA DEX - 1345 27E1 D0 FD BNE DelayLoopCmd - 1346 27E3 8E 06 D2 STX AUDF4 ; zero - 1347 27E6 86 35 STX TransmitError + 1336 27D3 CommandLoop + 1337 = 27D4 HappySpeed = *+1 + 1338 27D3 A9 28 LDA #$28 ;here goes speed from "?" + 1339 27D5 8D 04 D2 STA AUDF3 + 1340 27D8 A9 34 LDA #$34 + 1341 27DA 8D 03 D3 STA PBCTL ;ustawienie linii command + 1342 27DD A2 80 LDX #$80 + 1343 27DF DelayLoopCmd + 1344 27DF CA DEX + 1345 27E0 D0 FD BNE DelayLoopCmd + 1346 27E2 8E 06 D2 STX AUDF4 ; zero + 1347 27E5 86 35 STX TransmitError 1348 ; pokey init - 1349 27E8 A9 23 LDA #$23 - 1350 27EA 20 5E 28 xjsr1 JSR SecTransReg + 1349 27E7 A9 23 LDA #$23 + 1350 27E9 20 5D 28 xjsr1 JSR SecTransReg 1351 ; 1352 - 1353 27ED 18 CLC - 1354 27EE AD 00 03 LDA DDEVIC ; tu zawsze jest $31 (przynajmniej powinno) - 1355 27F1 6D 01 03 ADC DUNIT ; dodajemy numer stacji - 1356 27F4 69 FF ADC #$FF ; i odejmujemy jeden (jak w systemie Atari) - 1357 27F6 85 30 STA CheckSum - 1358 27F8 8D 0D D2 STA SEROUT - 1359 27FB AD 02 03 LDA DCOMND - 1360 27FE 20 74 28 xjsr2 JSR PutSIOByte - 1361 2801 AD 0A 03 LDA DAUX1 - 1362 2804 20 74 28 xjsr3 JSR PutSIOByte - 1363 2807 AD 0B 03 LDA DAUX2 - 1364 280A 20 74 28 xjsr4 JSR PutSIOByte - 1365 280D A5 30 LDA CheckSum - 1366 280F 20 74 28 xjsr5 JSR PutSIOByte + 1353 27EC 18 CLC + 1354 27ED AD 00 03 LDA DDEVIC ; tu zawsze jest $31 (przynajmniej powinno) + 1355 27F0 6D 01 03 ADC DUNIT ; dodajemy numer stacji + 1356 27F3 69 FF ADC #$FF ; i odejmujemy jeden (jak w systemie Atari) + 1357 27F5 85 30 STA CheckSum + 1358 27F7 8D 0D D2 STA SEROUT + 1359 27FA AD 02 03 LDA DCOMND + 1360 27FD 20 73 28 xjsr2 JSR PutSIOByte + 1361 2800 AD 0A 03 LDA DAUX1 + 1362 2803 20 73 28 xjsr3 JSR PutSIOByte + 1363 2806 AD 0B 03 LDA DAUX2 + 1364 2809 20 73 28 xjsr4 JSR PutSIOByte + 1365 280C A5 30 LDA CheckSum + 1366 280E 20 73 28 xjsr5 JSR PutSIOByte 1367 - 1368 2812 waitforEndOftransmission - 1369 2812 AD 0E D2 LDA IRQST - 1370 2815 29 08 AND #$08 - 1371 2817 D0 F9 BNE waitforEndOftransmission + 1368 2811 waitforEndOftransmission + 1369 2811 AD 0E D2 LDA IRQST + 1370 2814 29 08 AND #$08 + 1371 2816 D0 F9 BNE waitforEndOftransmission 1372 - 1373 2819 A9 13 LDA #$13 - 1374 281B 20 5E 28 xjsr6 JSR SecTransReg + 1373 2818 A9 13 LDA #$13 + 1374 281A 20 5D 28 xjsr6 JSR SecTransReg 1375 - 1376 281E A9 3C LDA #$3c - 1377 2820 8D 03 D3 STA PBCTL ;command line off + 1376 281D A9 3C LDA #$3c + 1377 281F 8D 03 D3 STA PBCTL ;command line off 1378 ; two ACK's - 1379 2823 A0 02 LDY #2 - 1380 2825 DoubleACK - 1381 2825 20 90 28 xjsr7 JSR GetSIOByte - 1382 2828 C9 44 CMP #$44 - 1383 282A B0 19 BCS ErrorHere - 1384 282C 88 DEY - 1385 282D D0 F6 BNE DoubleACK + 1379 2822 A0 02 LDY #2 + 1380 2824 DoubleACK + 1381 2824 20 8F 28 xjsr7 JSR GetSIOByte + 1382 2827 C9 44 CMP #$44 + 1383 2829 B0 19 BCS ErrorHere + 1384 282B 88 DEY + 1385 282C D0 F6 BNE DoubleACK 1386 1387 ;ldy #0 - 1388 282F 84 30 STY CheckSum - 1389 2831 ReadSectorLoop - 1390 2831 20 90 28 xjsr8 JSR GetSIOByte - 1391 2834 91 32 STA (SecBuffer),y - 1392 2836 20 88 28 xjsr9 JSR AddCheckSum - 1393 2839 C8 INY - 1394 283A C4 31 CPY SecLenUS - 1395 283C D0 F3 BNE ReadSectorLoop + 1388 282E 84 30 STY CheckSum + 1389 2830 ReadSectorLoop + 1390 2830 20 8F 28 xjsr8 JSR GetSIOByte + 1391 2833 91 32 STA (SecBuffer),y + 1392 2835 20 87 28 xjsr9 JSR AddCheckSum + 1393 2838 C8 INY + 1394 2839 C4 31 CPY SecLenUS + 1395 283B D0 F3 BNE ReadSectorLoop 1396 - 1397 283E 20 90 28 xjsrA JSR GetSIOByte - 1398 2841 C5 30 CMP CheckSum - 1399 2843 F0 0B BEQ EndOfTransmission + 1397 283D 20 8F 28 xjsrA JSR GetSIOByte + 1398 2840 C5 30 CMP CheckSum + 1399 2842 F0 0B BEQ EndOfTransmission 1400 ;error!!! - 1401 2845 ErrorHere - 1402 2845 A0 90 LDY #$90 - 1403 2847 84 35 STY TransmitError - 1404 2849 A6 37 LDX StackCopy - 1405 284B 9A TXS - 1406 284C C6 34 DEC CRETRYZ - 1407 284E D0 84 BNE CommandLoop + 1401 2844 ErrorHere + 1402 2844 A0 90 LDY #$90 + 1403 2846 84 35 STY TransmitError + 1404 2848 A6 37 LDX StackCopy + 1405 284A 9A TXS + 1406 284B C6 34 DEC CRETRYZ + 1407 284D D0 84 BNE CommandLoop 1408 - 1409 2850 EndOfTransmission - 1410 2850 A9 00 LDA #0 - 1411 2852 8D 07 D2 STA AUDC4 - 1412 2855 A5 10 LDA IRQENS - 1413 2857 8D 0E D2 STA IRQEN - 1414 285A 58 CLI - 1415 285B A4 35 LDY TransmitError - 1416 285D 60 RTS + 1409 284F EndOfTransmission + 1410 284F A9 00 LDA #0 + 1411 2851 8D 07 D2 STA AUDC4 + 1412 2854 A5 10 LDA IRQENS + 1413 2856 8D 0E D2 STA IRQEN + 1414 2859 58 CLI + 1415 285A A4 35 LDY TransmitError + 1416 285C 60 RTS 1417 - 1418 285E SecTransReg - 1419 285E 8D 0F D2 STA SKCTL - 1420 2861 8D 0A D2 STA SKSTRES - 1421 2864 A9 38 LDA #$38 - 1422 2866 8D 0E D2 STA IRQEN - 1423 2869 A9 28 LDA #$28 - 1424 286B 8D 08 D2 STA AUDCTL - 1425 286E A9 A8 LDA #$A8 - 1426 2870 8D 07 D2 STA AUDC4 - 1427 2873 60 RTS + 1418 285D SecTransReg + 1419 285D 8D 0F D2 STA SKCTL + 1420 2860 8D 0A D2 STA SKSTRES + 1421 2863 A9 38 LDA #$38 + 1422 2865 8D 0E D2 STA IRQEN + 1423 2868 A9 28 LDA #$28 + 1424 286A 8D 08 D2 STA AUDCTL + 1425 286D A9 A8 LDA #$A8 + 1426 286F 8D 07 D2 STA AUDC4 + 1427 2872 60 RTS 1428 - 1429 2874 PutSIOByte - 1430 2874 AA TAX - 1431 2875 waitforSerial - 1432 2875 AD 0E D2 LDA IRQST - 1433 2878 29 10 AND #$10 - 1434 287A D0 F9 BNE waitforSerial + 1429 2873 PutSIOByte + 1430 2873 AA TAX + 1431 2874 waitforSerial + 1432 2874 AD 0E D2 LDA IRQST + 1433 2877 29 10 AND #$10 + 1434 2879 D0 F9 BNE waitforSerial 1435 - 1436 287C 8D 0E D2 STA IRQEN - 1437 287F A9 10 LDA #$10 - 1438 2881 8D 0E D2 STA IRQEN + 1436 287B 8D 0E D2 STA IRQEN + 1437 287E A9 10 LDA #$10 + 1438 2880 8D 0E D2 STA IRQEN 1439 - 1440 2884 8A TXA - 1441 2885 8D 0D D2 STA SEROUT + 1440 2883 8A TXA + 1441 2884 8D 0D D2 STA SEROUT 1442 - 1443 2888 AddCheckSum - 1444 2888 18 CLC - 1445 2889 65 30 ADC CheckSum - 1446 288B 69 00 ADC #0 - 1447 288D 85 30 STA CheckSum - 1448 288F 60 RTS + 1443 2887 AddCheckSum + 1444 2887 18 CLC + 1445 2888 65 30 ADC CheckSum + 1446 288A 69 00 ADC #0 + 1447 288C 85 30 STA CheckSum + 1448 288E 60 RTS 1449 - 1450 2890 GetSIOByte - 1451 2890 A2 0A LDX #10 ;acktimeout - 1452 2892 ExternalLoop - 1453 2892 A9 00 LDA #0 - 1454 2894 85 36 STA looperka - 1455 2896 InternalLoop - 1456 2896 AD 0E D2 LDA IRQST - 1457 2899 29 20 AND #$20 - 1458 289B F0 09 BEQ ACKReceive - 1459 289D C6 36 DEC looperka - 1460 289F D0 F5 BNE InternalLoop - 1461 28A1 CA DEX - 1462 28A2 D0 EE BNE ExternalLoop - 1463 28A4 F0 9F BEQ ErrorHere - 1464 28A6 ACKReceive + 1450 288F GetSIOByte + 1451 288F A2 0A LDX #10 ;acktimeout + 1452 2891 ExternalLoop + 1453 2891 A9 00 LDA #0 + 1454 2893 85 36 STA looperka + 1455 2895 InternalLoop + 1456 2895 AD 0E D2 LDA IRQST + 1457 2898 29 20 AND #$20 + 1458 289A F0 09 BEQ ACKReceive + 1459 289C C6 36 DEC looperka + 1460 289E D0 F5 BNE InternalLoop + 1461 28A0 CA DEX + 1462 28A1 D0 EE BNE ExternalLoop + 1463 28A3 F0 9F BEQ ErrorHere + 1464 28A5 ACKReceive 1465 ; zero we have now - 1466 28A6 8D 0E D2 STA IRQST - 1467 28A9 A9 20 LDA #$20 - 1468 28AB 8D 0E D2 STA IRQST - 1469 28AE AD 0F D2 LDA SKSTAT - 1470 28B1 8D 0A D2 STA SKSTRES - 1471 28B4 29 20 AND #$20 - 1472 28B6 F0 8D BEQ ErrorHere + 1466 28A5 8D 0E D2 STA IRQST + 1467 28A8 A9 20 LDA #$20 + 1468 28AA 8D 0E D2 STA IRQST + 1469 28AD AD 0F D2 LDA SKSTAT + 1470 28B0 8D 0A D2 STA SKSTRES + 1471 28B3 29 20 AND #$20 + 1472 28B5 F0 8D BEQ ErrorHere 1473 ; - 1474 28B8 AD 0D D2 LDA SERIN - 1475 28BB 60 RTS - 1476 28BC EndHappyUSProc + 1474 28B7 AD 0D D2 LDA SERIN + 1475 28BA 60 RTS + 1476 28BB EndHappyUSProc 1477 1478 1479 ; Rozkaz DCB "?" pobierrajacy predkosc dla Happy i US-Doubler - 1480 28BC blokDanychIO_GetUSSpeed - 1481 28BC 31 01 3F 40 .BY $31,$01,"?",$40 - 1482 28C0 D5 27 .WO HappySpeed - 1483 28C2 07 00 01 00 00 0A .BY $07,$00,$01,$00,$00,$0A - 1484 28C8 DirMapEnd - 1485 28C8 4C 94 29 JMP label75 - 1486 28CB label39 - 1487 28CB 85 DA STA $DA - 1488 28CD A5 D0 LDA CurrentFileInfoBuff - 1489 28CF 85 DB STA $DB - 1490 28D1 A5 D1 LDA CurrentFileInfoBuff+1 - 1491 28D3 85 DC STA $DC - 1492 28D5 20 48 2B JSR DiscChangeCheck ; Sprawdzenie czy w miedzyczasie nie zostala zmieniona dyskietka - 1493 28D8 F0 05 BEQ DiscNotChanged2 - 1494 28DA 68 PLA - 1495 28DB 68 PLA - 1496 28DC 4C D4 21 JMP ReadMainDir - 1497 28DF DiscNotChanged2 + 1480 28BB blokDanychIO_GetUSSpeed + 1481 28BB 31 01 3F 40 .BY $31,$01,"?",$40 + 1482 28BF D4 27 .WO HappySpeed + 1483 28C1 07 00 01 00 00 0A .BY $07,$00,$01,$00,$00,$0A + 1484 28C7 DirMapEnd + 1485 28C7 4C 93 29 JMP label75 + 1486 28CA label39 + 1487 28CA 85 DA STA $DA + 1488 28CC A5 D0 LDA CurrentFileInfoBuff + 1489 28CE 85 DB STA $DB + 1490 28D0 A5 D1 LDA CurrentFileInfoBuff+1 + 1491 28D2 85 DC STA $DC + 1492 28D4 20 47 2B JSR DiscChangeCheck ; Sprawdzenie czy w miedzyczasie nie zostala zmieniona dyskietka + 1493 28D7 F0 05 BEQ DiscNotChanged2 + 1494 28D9 68 PLA + 1495 28DA 68 PLA + 1496 28DB 4C D4 21 JMP ReadMainDir + 1497 28DE DiscNotChanged2 1498 ; odczyt sektora mapy wskazywanego przez DirMapSec - 1499 28DF A5 D2 LDA DirMapSect - 1500 28E1 8D 44 2A STA blokDanychIO+10 - 1501 28E4 A5 D3 LDA DirMapSect+1 - 1502 28E6 8D 45 2A STA blokDanychIO+11 - 1503 28E9 0D 44 2A ORA blokDanychIO+10 - 1504 28EC F0 DA BEQ DirMapEnd - 1505 28EE A2 2D LDX #>DirMapSectorBuff - 1506 28F0 A0 80 LDY #DirMapSectorBuff + 1506 28EF A0 80 LDY #DirMapSectorBuff ; -- - 1532 291C 65 E3 ADC InMapPointer+1 ; -- - 1533 291E 85 E5 STA TempZP+1 ; -- - 1534 2920 B1 E4 LDA (TempZP),Y - 1535 2922 8D 44 2A STA blokDanychIO+10 - 1536 2925 C8 INY - 1537 2926 B1 E4 LDA (TempZP),Y - 1538 2928 8D 45 2A STA blokDanychIO+11 - 1539 292B 0D 44 2A ORA blokDanychIO+10 - 1540 292E F0 64 BEQ label75 + 1528 2914 A9 80 LDA #DirMapSectorBuff ; -- + 1532 291B 65 E3 ADC InMapPointer+1 ; -- + 1533 291D 85 E5 STA TempZP+1 ; -- + 1534 291F B1 E4 LDA (TempZP),Y + 1535 2921 8D 43 2A STA blokDanychIO+10 + 1536 2924 C8 INY + 1537 2925 B1 E4 LDA (TempZP),Y + 1538 2927 8D 44 2A STA blokDanychIO+11 + 1539 292A 0D 43 2A ORA blokDanychIO+10 + 1540 292D F0 64 BEQ label75 1541 ; i zwiekszenie wskaznika mapy o 2 - 1542 2930 C8 INY - 1543 2931 84 E2 STY InMapPointer - 1544 2933 D0 02 BNE NoIncH ; -- - 1545 2935 E6 E3 INC InMapPointer+1 ; -- - 1546 2937 NoIncH - 1547 2937 AD E5 02 LDA MEMTOP - 1548 293A 38 SEC - 1549 293B E5 D0 SBC CurrentFileInfoBuff - 1550 293D AD E6 02 LDA MEMTOP+1 - 1551 2940 E5 D1 SBC CurrentFileInfoBuff+1 - 1552 2942 F0 50 BEQ label75 - 1553 2944 A4 D0 LDY CurrentFileInfoBuff - 1554 2946 A6 D1 LDX CurrentFileInfoBuff+1 - 1555 2948 20 0C 2A JSR ReadSector - 1556 294B A5 D4 LDA $D4 - 1557 294D 05 D5 ORA $D5 - 1558 294F D0 16 BNE label79 - 1559 2951 A0 03 LDY #$03 - 1560 2953 B1 D0 LDA (CurrentFileInfoBuff),Y - 1561 2955 85 D4 STA $D4 - 1562 2957 C8 INY - 1563 2958 B1 D0 LDA (CurrentFileInfoBuff),Y - 1564 295A 85 D5 STA $D5 - 1565 295C C8 INY - 1566 295D B1 D0 LDA (CurrentFileInfoBuff),Y - 1567 295F F0 06 BEQ label79 - 1568 2961 A9 FF LDA #$FF - 1569 2963 85 D4 STA $D4 - 1570 2965 85 D5 STA $D5 - 1571 2967 label79 - 1572 2967 A5 D0 LDA CurrentFileInfoBuff - 1573 2969 18 CLC - 1574 296A 6D A2 20 ADC .adr loader.SecLen ; przed przepisaniem - 1575 296D 85 D0 STA CurrentFileInfoBuff - 1576 296F A5 D1 LDA CurrentFileInfoBuff+1 - 1577 2971 6D A3 20 ADC .adr loader.SecLen+1 ; przed przepisaniem - 1578 2974 85 D1 STA CurrentFileInfoBuff+1 - 1579 2976 A5 D4 LDA $D4 - 1580 2978 38 SEC - 1581 2979 ED A2 20 SBC .adr loader.SecLen ; przed przepisaniem - 1582 297C 85 D4 STA $D4 - 1583 297E A5 D5 LDA $D5 - 1584 2980 ED A3 20 SBC .adr loader.SecLen+1 ; przed przepisaniem - 1585 2983 85 D5 STA $D5 - 1586 2985 B0 80 BCS label80 - 1587 2987 A5 D0 LDA CurrentFileInfoBuff - 1588 2989 18 CLC - 1589 298A 65 D4 ADC $D4 - 1590 298C 85 D0 STA CurrentFileInfoBuff - 1591 298E A5 D1 LDA CurrentFileInfoBuff+1 - 1592 2990 65 D5 ADC $D5 - 1593 2992 85 D1 STA CurrentFileInfoBuff+1 - 1594 2994 label75 - 1595 2994 A5 DC LDA $DC - 1596 2996 C5 D1 CMP CurrentFileInfoBuff+1 - 1597 2998 90 0B BCC label81 - 1598 299A D0 17 BNE label82 - 1599 299C A5 DB LDA $DB - 1600 299E C5 D0 CMP CurrentFileInfoBuff - 1601 29A0 90 03 BCC label81 - 1602 29A2 D0 0F BNE label82 - 1603 29A4 60 RTS - 1604 29A5 label81 - 1605 29A5 A5 DB LDA $DB - 1606 29A7 18 CLC - 1607 29A8 65 DA ADC $DA - 1608 29AA 85 DB STA $DB - 1609 29AC 90 E6 BCC label75 - 1610 29AE E6 DC INC $DC - 1611 29B0 4C 94 29 JMP label75 - 1612 29B3 label82 - 1613 29B3 A5 DB LDA $DB - 1614 29B5 38 SEC - 1615 29B6 E5 DA SBC $DA - 1616 29B8 85 D0 STA CurrentFileInfoBuff - 1617 29BA A5 DC LDA $DC - 1618 29BC E9 00 SBC #$00 - 1619 29BE 85 D1 STA CurrentFileInfoBuff+1 - 1620 29C0 60 RTS + 1542 292F C8 INY + 1543 2930 84 E2 STY InMapPointer + 1544 2932 D0 02 BNE NoIncH ; -- + 1545 2934 E6 E3 INC InMapPointer+1 ; -- + 1546 2936 NoIncH + 1547 2936 AD E5 02 LDA MEMTOP + 1548 2939 38 SEC + 1549 293A E5 D0 SBC CurrentFileInfoBuff + 1550 293C AD E6 02 LDA MEMTOP+1 + 1551 293F E5 D1 SBC CurrentFileInfoBuff+1 + 1552 2941 F0 50 BEQ label75 + 1553 2943 A4 D0 LDY CurrentFileInfoBuff + 1554 2945 A6 D1 LDX CurrentFileInfoBuff+1 + 1555 2947 20 0B 2A JSR ReadSector + 1556 294A A5 D4 LDA $D4 + 1557 294C 05 D5 ORA $D5 + 1558 294E D0 16 BNE label79 + 1559 2950 A0 03 LDY #$03 + 1560 2952 B1 D0 LDA (CurrentFileInfoBuff),Y + 1561 2954 85 D4 STA $D4 + 1562 2956 C8 INY + 1563 2957 B1 D0 LDA (CurrentFileInfoBuff),Y + 1564 2959 85 D5 STA $D5 + 1565 295B C8 INY + 1566 295C B1 D0 LDA (CurrentFileInfoBuff),Y + 1567 295E F0 06 BEQ label79 + 1568 2960 A9 FF LDA #$FF + 1569 2962 85 D4 STA $D4 + 1570 2964 85 D5 STA $D5 + 1571 2966 label79 + 1572 2966 A5 D0 LDA CurrentFileInfoBuff + 1573 2968 18 CLC + 1574 2969 6D A2 20 ADC .adr loader.SecLen ; przed przepisaniem + 1575 296C 85 D0 STA CurrentFileInfoBuff + 1576 296E A5 D1 LDA CurrentFileInfoBuff+1 + 1577 2970 6D A3 20 ADC .adr loader.SecLen+1 ; przed przepisaniem + 1578 2973 85 D1 STA CurrentFileInfoBuff+1 + 1579 2975 A5 D4 LDA $D4 + 1580 2977 38 SEC + 1581 2978 ED A2 20 SBC .adr loader.SecLen ; przed przepisaniem + 1582 297B 85 D4 STA $D4 + 1583 297D A5 D5 LDA $D5 + 1584 297F ED A3 20 SBC .adr loader.SecLen+1 ; przed przepisaniem + 1585 2982 85 D5 STA $D5 + 1586 2984 B0 80 BCS label80 + 1587 2986 A5 D0 LDA CurrentFileInfoBuff + 1588 2988 18 CLC + 1589 2989 65 D4 ADC $D4 + 1590 298B 85 D0 STA CurrentFileInfoBuff + 1591 298D A5 D1 LDA CurrentFileInfoBuff+1 + 1592 298F 65 D5 ADC $D5 + 1593 2991 85 D1 STA CurrentFileInfoBuff+1 + 1594 2993 label75 + 1595 2993 A5 DC LDA $DC + 1596 2995 C5 D1 CMP CurrentFileInfoBuff+1 + 1597 2997 90 0B BCC label81 + 1598 2999 D0 17 BNE label82 + 1599 299B A5 DB LDA $DB + 1600 299D C5 D0 CMP CurrentFileInfoBuff + 1601 299F 90 03 BCC label81 + 1602 29A1 D0 0F BNE label82 + 1603 29A3 60 RTS + 1604 29A4 label81 + 1605 29A4 A5 DB LDA $DB + 1606 29A6 18 CLC + 1607 29A7 65 DA ADC $DA + 1608 29A9 85 DB STA $DB + 1609 29AB 90 E6 BCC label75 + 1610 29AD E6 DC INC $DC + 1611 29AF 4C 93 29 JMP label75 + 1612 29B2 label82 + 1613 29B2 A5 DB LDA $DB + 1614 29B4 38 SEC + 1615 29B5 E5 DA SBC $DA + 1616 29B7 85 D0 STA CurrentFileInfoBuff + 1617 29B9 A5 DC LDA $DC + 1618 29BB E9 00 SBC #$00 + 1619 29BD 85 D1 STA CurrentFileInfoBuff+1 + 1620 29BF 60 RTS 1621 ; odczyt bloku PERCOM i ustalenie rozmiaru pierwszego sektora - 1622 29C1 ReadPERCOM - 1623 29C1 A9 04 LDA #$04 - 1624 29C3 8D 46 2A STA DiskRetryCount - 1625 29C6 ReadPERCOMretry - 1626 29C6 A0 EA LDY #blokDanychIO_PERCOM - 1628 29CA 20 E2 2A JSR Table2DCB - 1629 29CD 20 D7 2A JSR GoSIO - 1630 29D0 30 08 BMI PercomError + 1622 29C0 ReadPERCOM + 1623 29C0 A9 04 LDA #$04 + 1624 29C2 8D 45 2A STA DiskRetryCount + 1625 29C5 ReadPERCOMretry + 1626 29C5 A0 E9 LDY #blokDanychIO_PERCOM + 1628 29C9 20 E1 2A JSR Table2DCB + 1629 29CC 20 D6 2A JSR GoSIO + 1630 29CF 30 08 BMI PercomError 1631 ; blok odczytany - ustawmy dlugosc 1 sektora - 1632 29D2 AD 2B 2C LDA PERCOMdata+6 - 1633 29D5 C9 01 CMP #$01 ; jesli dlugosc sektora to 256b - pierwszy sektor ustawiamy na 128 - 1634 29D7 F0 06 BEQ Set1Sect128 ; w pozostalych wypadkach zostawiamy jak jest - 1635 29D9 60 RTS - 1636 29DA PercomError - 1637 29DA CE 46 2A DEC DiskRetryCount - 1638 29DD D0 E7 BNE ReadPERCOMretry + 1632 29D1 AD 2A 2C LDA PERCOMdata+6 + 1633 29D4 C9 01 CMP #$01 ; jesli dlugosc sektora to 256b - pierwszy sektor ustawiamy na 128 + 1634 29D6 F0 06 BEQ Set1Sect128 ; w pozostalych wypadkach zostawiamy jak jest + 1635 29D8 60 RTS + 1636 29D9 PercomError + 1637 29D9 CE 45 2A DEC DiskRetryCount + 1638 29DC D0 E7 BNE ReadPERCOMretry 1639 ; blok nieodczytany - dlugosc 1 sektora na $80 - 1640 29DF Set1Sect128 - 1641 29DF A9 00 LDA #$00 - 1642 29E1 8D 2B 2C STA PERCOMdata+6 - 1643 29E4 A9 80 LDA #$80 - 1644 29E6 8D 2C 2C STA PERCOMdata+7 - 1645 29E9 60 RTS - 1646 29EA blokDanychIO_PERCOM - 1647 29EA 31 01 4E 40 .BY $31,$01,$4E,$40 - 1648 29EE 25 2C .WO PERCOMdata - 1649 29F0 0A 00 0C 00 01 00 .BY $0A,$00,12,$00,$01,$00 + 1640 29DE Set1Sect128 + 1641 29DE A9 00 LDA #$00 + 1642 29E0 8D 2A 2C STA PERCOMdata+6 + 1643 29E3 A9 80 LDA #$80 + 1644 29E5 8D 2B 2C STA PERCOMdata+7 + 1645 29E8 60 RTS + 1646 29E9 blokDanychIO_PERCOM + 1647 29E9 31 01 4E 40 .BY $31,$01,$4E,$40 + 1648 29ED 24 2C .WO PERCOMdata + 1649 29EF 0A 00 0C 00 01 00 .BY $0A,$00,12,$00,$01,$00 1650 ; wczytuje pierwszy sektor dysku pod adres zawarty w X(starszy) i Y(mlodszy) - 1651 29F6 ReadFirstSect - 1652 29F6 A9 01 LDA #$01 - 1653 29F8 8D 44 2A STA blokDanychIO+10 - 1654 29FB A9 00 LDA #$00 - 1655 29FD 8D 45 2A STA blokDanychIO+11 - 1656 2A00 AD 2B 2C LDA PERCOMdata+6 - 1657 2A03 8D 43 2A STA blokDanychIO+9 ; --- obsluga sektorow ponad 256b - 1658 2A06 AD 2C 2C LDA PERCOMdata+7 - 1659 2A09 4C 15 2A JMP ReadSector1 + 1651 29F5 ReadFirstSect + 1652 29F5 A9 01 LDA #$01 + 1653 29F7 8D 43 2A STA blokDanychIO+10 + 1654 29FA A9 00 LDA #$00 + 1655 29FC 8D 44 2A STA blokDanychIO+11 + 1656 29FF AD 2A 2C LDA PERCOMdata+6 + 1657 2A02 8D 42 2A STA blokDanychIO+9 ; --- obsluga sektorow ponad 256b + 1658 2A05 AD 2B 2C LDA PERCOMdata+7 + 1659 2A08 4C 14 2A JMP ReadSector1 1660 ; Wczytuje sektror ustalajac jego dlugosc na podstawie blokDanychIO_Loader (SecLen) 1661 ; reszta danych jak nizej (A nie wazne) - 1662 2A0C ReadSector - 1663 2A0C AD A3 20 LDA .adr loader.SecLen+1 ; --- obsluga sektorow ponad 256b - 1664 2A0F 8D 43 2A STA blokDanychIO+9 ; --- obsluga sektorow ponad 256b - 1665 2A12 AD A2 20 LDA .adr loader.SecLen ; przed przepisaniem - 1666 2A15 ReadSector1 - 1667 2A15 8D 42 2A STA blokDanychIO+8 - 1668 2A18 8E 3F 2A STX blokDanychIO+5 - 1669 2A1B 8C 3E 2A STY blokDanychIO+4 - 1670 2A1E A9 04 LDA #$04 - 1671 2A20 8D 46 2A STA DiskRetryCount - 1672 2A23 DiskReadRetry - 1673 2A23 A0 3A LDY #blokDanychIO - 1675 2A27 20 E2 2A JSR Table2DCB - 1676 2A2A 20 D7 2A JSR GoSIO - 1677 2A2D 30 01 BMI label85 - 1678 2A2F 60 RTS - 1679 2A30 label85 - 1680 2A30 CE 46 2A DEC DiskRetryCount - 1681 2A33 D0 EE BNE DiskReadRetry - 1682 2A35 68 PLA - 1683 2A36 68 PLA - 1684 2A37 4C 93 21 JMP ErrorDisplay - 1685 2A3A blokDanychIO - 1686 2A3A 31 01 52 40 .BY $31,$01,$52,$40 - 1687 2A3E 80 2D .WO DirMapSectorBuff - 1688 2A40 0A 00 80 00 01 00 .BY $0A,$00,$80,$00,$01,$00 - 1689 2A46 DiskRetryCount - 1690 2A46 00 .BY $00 - 1691 2A47 PrintXY - 1692 2A47 68 PLA - 1693 2A48 85 C8 STA $C8 - 1694 2A4A 68 PLA - 1695 2A4B 85 C9 STA $C9 - 1696 2A4D A9 00 LDA #$00 - 1697 2A4F 85 DF STA $DF - 1698 2A51 20 C9 2A JSR label87 - 1699 2A54 48 PHA - 1700 2A55 20 C9 2A JSR label87 - 1701 2A58 85 DE STA $DE - 1702 2A5A 0A ASL - 1703 2A5B 0A ASL - 1704 2A5C 18 CLC - 1705 2A5D 65 DE ADC $DE - 1706 2A5F 0A ASL - 1707 2A60 0A ASL - 1708 2A61 26 DF ROL $DF - 1709 2A63 0A ASL - 1710 2A64 26 DF ROL $DF - 1711 2A66 18 CLC - 1712 2A67 65 58 ADC SAVMSC - 1713 2A69 85 DE STA $DE - 1714 2A6B A5 DF LDA $DF - 1715 2A6D 65 59 ADC SAVMSC+1 - 1716 2A6F 85 DF STA $DF - 1717 2A71 68 PLA - 1718 2A72 A8 TAY - 1719 2A73 label92 - 1720 2A73 20 C9 2A JSR label87 - 1721 2A76 C9 00 CMP #$00 - 1722 2A78 F0 48 BEQ label88 - 1723 2A7A C9 7D CMP #$7D - 1724 2A7C F0 21 BEQ label89 - 1725 2A7E A2 00 LDX #$00 - 1726 2A80 86 E0 STX $E0 - 1727 2A82 C9 80 CMP #$80 - 1728 2A84 66 E0 ROR $E0 - 1729 2A86 29 7F AND #$7F - 1730 2A88 C9 20 CMP #$20 - 1731 2A8A B0 04 BCS label90 - 1732 2A8C 09 40 ORA #$40 - 1733 2A8E D0 07 BNE label91 - 1734 2A90 label90 - 1735 2A90 C9 60 CMP #$60 - 1736 2A92 B0 03 BCS label91 - 1737 2A94 38 SEC - 1738 2A95 E9 20 SBC #$20 - 1739 2A97 label91 - 1740 2A97 05 E0 ORA $E0 - 1741 2A99 91 DE STA ($DE),Y - 1742 2A9B C8 INY - 1743 2A9C 4C 73 2A JMP label92 - 1744 2A9F label89 - 1745 2A9F 98 TYA - 1746 2AA0 48 PHA - 1747 2AA1 A5 58 LDA SAVMSC - 1748 2AA3 85 E0 STA $E0 - 1749 2AA5 A9 03 LDA #$03 - 1750 2AA7 AA TAX - 1751 2AA8 18 CLC - 1752 2AA9 65 59 ADC SAVMSC+1 - 1753 2AAB 85 E1 STA $E1 - 1754 2AAD A0 BF LDY #$BF - 1755 2AAF A9 00 LDA #$00 - 1756 2AB1 label93 - 1757 2AB1 91 E0 STA ($E0),Y - 1758 2AB3 88 DEY - 1759 2AB4 C0 FF CPY #$FF - 1760 2AB6 D0 F9 BNE label93 - 1761 2AB8 C6 E1 DEC $E1 - 1762 2ABA CA DEX - 1763 2ABB 10 F4 BPL label93 - 1764 2ABD 68 PLA - 1765 2ABE A8 TAY - 1766 2ABF 4C 73 2A JMP label92 - 1767 2AC2 label88 - 1768 2AC2 A5 C9 LDA $C9 - 1769 2AC4 48 PHA - 1770 2AC5 A5 C8 LDA $C8 - 1771 2AC7 48 PHA - 1772 2AC8 60 RTS - 1773 2AC9 label87 - 1774 2AC9 E6 C8 INC $C8 - 1775 2ACB D0 02 BNE label94 - 1776 2ACD E6 C9 INC $C9 - 1777 2ACF label94 - 1778 2ACF A2 00 LDX #$00 - 1779 2AD1 A1 C8 LDA ($C8,X) - 1780 2AD3 60 RTS - 1781 2AD4 GoErrorDisp - 1782 2AD4 4C 93 21 JMP ErrorDisplay + 1662 2A0B ReadSector + 1663 2A0B AD A3 20 LDA .adr loader.SecLen+1 ; --- obsluga sektorow ponad 256b + 1664 2A0E 8D 42 2A STA blokDanychIO+9 ; --- obsluga sektorow ponad 256b + 1665 2A11 AD A2 20 LDA .adr loader.SecLen ; przed przepisaniem + 1666 2A14 ReadSector1 + 1667 2A14 8D 41 2A STA blokDanychIO+8 + 1668 2A17 8E 3E 2A STX blokDanychIO+5 + 1669 2A1A 8C 3D 2A STY blokDanychIO+4 + 1670 2A1D A9 04 LDA #$04 + 1671 2A1F 8D 45 2A STA DiskRetryCount + 1672 2A22 DiskReadRetry + 1673 2A22 A0 39 LDY #blokDanychIO + 1675 2A26 20 E1 2A JSR Table2DCB + 1676 2A29 20 D6 2A JSR GoSIO + 1677 2A2C 30 01 BMI label85 + 1678 2A2E 60 RTS + 1679 2A2F label85 + 1680 2A2F CE 45 2A DEC DiskRetryCount + 1681 2A32 D0 EE BNE DiskReadRetry + 1682 2A34 68 PLA + 1683 2A35 68 PLA + 1684 2A36 4C 93 21 JMP ErrorDisplay + 1685 2A39 blokDanychIO + 1686 2A39 31 01 52 40 .BY $31,$01,$52,$40 + 1687 2A3D 80 2D .WO DirMapSectorBuff + 1688 2A3F 0A 00 80 00 01 00 .BY $0A,$00,$80,$00,$01,$00 + 1689 2A45 DiskRetryCount + 1690 2A45 00 .BY $00 + 1691 2A46 PrintXY + 1692 2A46 68 PLA + 1693 2A47 85 C8 STA $C8 + 1694 2A49 68 PLA + 1695 2A4A 85 C9 STA $C9 + 1696 2A4C A9 00 LDA #$00 + 1697 2A4E 85 DF STA $DF + 1698 2A50 20 C8 2A JSR label87 + 1699 2A53 48 PHA + 1700 2A54 20 C8 2A JSR label87 + 1701 2A57 85 DE STA $DE + 1702 2A59 0A ASL + 1703 2A5A 0A ASL + 1704 2A5B 18 CLC + 1705 2A5C 65 DE ADC $DE + 1706 2A5E 0A ASL + 1707 2A5F 0A ASL + 1708 2A60 26 DF ROL $DF + 1709 2A62 0A ASL + 1710 2A63 26 DF ROL $DF + 1711 2A65 18 CLC + 1712 2A66 65 58 ADC SAVMSC + 1713 2A68 85 DE STA $DE + 1714 2A6A A5 DF LDA $DF + 1715 2A6C 65 59 ADC SAVMSC+1 + 1716 2A6E 85 DF STA $DF + 1717 2A70 68 PLA + 1718 2A71 A8 TAY + 1719 2A72 label92 + 1720 2A72 20 C8 2A JSR label87 + 1721 2A75 C9 00 CMP #$00 + 1722 2A77 F0 48 BEQ label88 + 1723 2A79 C9 7D CMP #$7D + 1724 2A7B F0 21 BEQ label89 + 1725 2A7D A2 00 LDX #$00 + 1726 2A7F 86 E0 STX $E0 + 1727 2A81 C9 80 CMP #$80 + 1728 2A83 66 E0 ROR $E0 + 1729 2A85 29 7F AND #$7F + 1730 2A87 C9 20 CMP #$20 + 1731 2A89 B0 04 BCS label90 + 1732 2A8B 09 40 ORA #$40 + 1733 2A8D D0 07 BNE label91 + 1734 2A8F label90 + 1735 2A8F C9 60 CMP #$60 + 1736 2A91 B0 03 BCS label91 + 1737 2A93 38 SEC + 1738 2A94 E9 20 SBC #$20 + 1739 2A96 label91 + 1740 2A96 05 E0 ORA $E0 + 1741 2A98 91 DE STA ($DE),Y + 1742 2A9A C8 INY + 1743 2A9B 4C 72 2A JMP label92 + 1744 2A9E label89 + 1745 2A9E 98 TYA + 1746 2A9F 48 PHA + 1747 2AA0 A5 58 LDA SAVMSC + 1748 2AA2 85 E0 STA $E0 + 1749 2AA4 A9 03 LDA #$03 + 1750 2AA6 AA TAX + 1751 2AA7 18 CLC + 1752 2AA8 65 59 ADC SAVMSC+1 + 1753 2AAA 85 E1 STA $E1 + 1754 2AAC A0 BF LDY #$BF + 1755 2AAE A9 00 LDA #$00 + 1756 2AB0 label93 + 1757 2AB0 91 E0 STA ($E0),Y + 1758 2AB2 88 DEY + 1759 2AB3 C0 FF CPY #$FF + 1760 2AB5 D0 F9 BNE label93 + 1761 2AB7 C6 E1 DEC $E1 + 1762 2AB9 CA DEX + 1763 2ABA 10 F4 BPL label93 + 1764 2ABC 68 PLA + 1765 2ABD A8 TAY + 1766 2ABE 4C 72 2A JMP label92 + 1767 2AC1 label88 + 1768 2AC1 A5 C9 LDA $C9 + 1769 2AC3 48 PHA + 1770 2AC4 A5 C8 LDA $C8 + 1771 2AC6 48 PHA + 1772 2AC7 60 RTS + 1773 2AC8 label87 + 1774 2AC8 E6 C8 INC $C8 + 1775 2ACA D0 02 BNE label94 + 1776 2ACC E6 C9 INC $C9 + 1777 2ACE label94 + 1778 2ACE A2 00 LDX #$00 + 1779 2AD0 A1 C8 LDA ($C8,X) + 1780 2AD2 60 RTS + 1781 2AD3 GoErrorDisp + 1782 2AD3 4C 93 21 JMP ErrorDisplay 1783 ; Skok do Sio lub procedury Turbo - 1784 2AD7 GoSIO - 1785 2AD7 AC 22 21 LDY USmode - 1786 2ADA F0 03 BEQ StandardSpeed - 1787 2ADC 4C BD 27 JMP HappyUSMovedProc ; mozna skakac do tej procki - 1788 2ADF StandardSpeed - 1789 2ADF 4C 59 E4 JMP JSIOINT + 1784 2AD6 GoSIO + 1785 2AD6 AC 22 21 LDY USmode + 1786 2AD9 F0 03 BEQ StandardSpeed + 1787 2ADB 4C BC 27 JMP HappyUSMovedProc ; mozna skakac do tej procki + 1788 2ADE StandardSpeed + 1789 2ADE 4C 59 E4 JMP JSIOINT 1790 ; Przepisuje 12 bajtow z adresy podanego w X(starszy) i Y(mlodszy) 1791 ; do bloku kontroli transmisji szeregowej DCB - 1792 2AE2 Table2DCB - 1793 2AE2 8C EB 2A STY IOtableAddr+1 - 1794 2AE5 8E EC 2A STX IOtableAddr+2 - 1795 2AE8 A2 0B LDX #$0B - 1796 2AEA IOtableAddr - 1797 2AEA BD FF FF LDA $FFFF,X - 1798 2AED 9D 00 03 STA DDEVIC,X - 1799 2AF0 CA DEX - 1800 2AF1 10 F7 BPL IOtableAddr - 1801 2AF3 60 RTS - 1802 2AF4 Close1 - 1803 2AF4 A2 10 LDX #$10 - 1804 2AF6 CloseX - 1805 2AF6 A9 0C LDA #$0C - 1806 2AF8 9D 42 03 STA ICCMD,X - 1807 2AFB 4C 56 E4 JMP JCIOMAIN - 1808 2AFE GetKey - 1809 2AFE A2 10 LDX #$10 - 1810 2B00 A9 03 LDA #$03 - 1811 2B02 9D 42 03 STA ICCMD,X - 1812 2B05 A9 04 LDA #$04 - 1813 2B07 9D 4A 03 STA ICAX1,X - 1814 2B0A A9 00 LDA #$00 - 1815 2B0C 9D 4B 03 STA ICAX2,X - 1816 2B0F 9D 49 03 STA ICBUFL+1,X - 1817 2B12 A9 FF LDA #$FF - 1818 2B14 9D 48 03 STA ICBUFL,X - 1819 2B17 A9 45 LDA #Kdriver - 1822 2B1E 9D 45 03 STA ICBUFA+1,X - 1823 2B21 20 56 E4 JSR JCIOMAIN - 1824 2B24 30 1C BMI GKeyError - 1825 2B26 A2 10 LDX #$10 - 1826 2B28 A9 00 LDA #$00 - 1827 2B2A 9D 48 03 STA ICBUFL,X - 1828 2B2D 9D 49 03 STA ICBUFL+1,X - 1829 2B30 A9 07 LDA #$07 - 1830 2B32 9D 42 03 STA ICCMD,X - 1831 2B35 20 56 E4 JSR JCIOMAIN - 1832 2B38 30 08 BMI GKeyError - 1833 2B3A 48 PHA - 1834 2B3B 20 F4 2A JSR Close1 - 1835 2B3E 30 02 BMI GKeyError - 1836 2B40 68 PLA - 1837 2B41 60 RTS - 1838 2B42 GKeyError - 1839 2B42 4C D4 2A JMP GoErrorDisp - 1840 2B45 Kdriver - 1841 2B45 4B 3A 9B .BY "K:",$9B - 1842 2B48 DiscChangeCheck - 1843 2B48 A0 80 LDY #DirMapSectorBuff - 1845 2B4C 20 F6 29 JSR ReadFirstSect - 1846 2B4F A2 7F LDX #$7F - 1847 2B51 label98 - 1848 2B51 BD 00 2D LDA FirstSectorBuff,X - 1849 2B54 DD 80 2D CMP DirMapSectorBuff,X - 1850 2B57 D0 05 BNE ChangedD - 1851 2B59 CA DEX - 1852 2B5A 10 F5 BPL label98 - 1853 2B5C A9 00 LDA #$00 - 1854 2B5E ChangedD - 1855 2B5E 60 RTS + 1792 2AE1 Table2DCB + 1793 2AE1 8C EA 2A STY IOtableAddr+1 + 1794 2AE4 8E EB 2A STX IOtableAddr+2 + 1795 2AE7 A2 0B LDX #$0B + 1796 2AE9 IOtableAddr + 1797 2AE9 BD FF FF LDA $FFFF,X + 1798 2AEC 9D 00 03 STA DDEVIC,X + 1799 2AEF CA DEX + 1800 2AF0 10 F7 BPL IOtableAddr + 1801 2AF2 60 RTS + 1802 2AF3 Close1 + 1803 2AF3 A2 10 LDX #$10 + 1804 2AF5 CloseX + 1805 2AF5 A9 0C LDA #$0C + 1806 2AF7 9D 42 03 STA ICCMD,X + 1807 2AFA 4C 56 E4 JMP JCIOMAIN + 1808 2AFD GetKey + 1809 2AFD A2 10 LDX #$10 + 1810 2AFF A9 03 LDA #$03 + 1811 2B01 9D 42 03 STA ICCMD,X + 1812 2B04 A9 04 LDA #$04 + 1813 2B06 9D 4A 03 STA ICAX1,X + 1814 2B09 A9 00 LDA #$00 + 1815 2B0B 9D 4B 03 STA ICAX2,X + 1816 2B0E 9D 49 03 STA ICBUFL+1,X + 1817 2B11 A9 FF LDA #$FF + 1818 2B13 9D 48 03 STA ICBUFL,X + 1819 2B16 A9 44 LDA #Kdriver + 1822 2B1D 9D 45 03 STA ICBUFA+1,X + 1823 2B20 20 56 E4 JSR JCIOMAIN + 1824 2B23 30 1C BMI GKeyError + 1825 2B25 A2 10 LDX #$10 + 1826 2B27 A9 00 LDA #$00 + 1827 2B29 9D 48 03 STA ICBUFL,X + 1828 2B2C 9D 49 03 STA ICBUFL+1,X + 1829 2B2F A9 07 LDA #$07 + 1830 2B31 9D 42 03 STA ICCMD,X + 1831 2B34 20 56 E4 JSR JCIOMAIN + 1832 2B37 30 08 BMI GKeyError + 1833 2B39 48 PHA + 1834 2B3A 20 F3 2A JSR Close1 + 1835 2B3D 30 02 BMI GKeyError + 1836 2B3F 68 PLA + 1837 2B40 60 RTS + 1838 2B41 GKeyError + 1839 2B41 4C D3 2A JMP GoErrorDisp + 1840 2B44 Kdriver + 1841 2B44 4B 3A 9B .BY "K:",$9B + 1842 2B47 DiscChangeCheck + 1843 2B47 A0 80 LDY #DirMapSectorBuff + 1845 2B4B 20 F5 29 JSR ReadFirstSect + 1846 2B4E A2 7F LDX #$7F + 1847 2B50 label98 + 1848 2B50 BD 00 2D LDA FirstSectorBuff,X + 1849 2B53 DD 80 2D CMP DirMapSectorBuff,X + 1850 2B56 D0 05 BNE ChangedD + 1851 2B58 CA DEX + 1852 2B59 10 F5 BPL label98 + 1853 2B5B A9 00 LDA #$00 + 1854 2B5D ChangedD + 1855 2B5D 60 RTS 1856 ; obsluga gwiazdki 1857 ; w komorkach $D4 $D5 jest adres linii z pliku MSDOS.DAT zaczynajacej sie od * 1858 ; w Y jest ) - X moze lepiej nie ruszac :) - 1859 2B5F Asteriks - 1860 2B5F A0 0B LDY #11 ; pierwszy HEX za nazwa pliku (czyli pierwsze znaki dlugiej nazwy) - 1861 2B61 20 7D 2B JSR GetHexNumber - 1862 2B64 8D C5 02 STA COLPF1S ; literki - 1863 2B67 C8 INY - 1864 2B68 20 7D 2B JSR GetHexNumber - 1865 2B6B 8D C6 02 STA COLPF2S ; tlo - 1866 2B6E C8 INY - 1867 2B6F 20 7D 2B JSR GetHexNumber - 1868 2B72 8D C8 02 STA COLBAKS ; ramka - 1869 2B75 C8 INY - 1870 2B76 20 7D 2B JSR GetHexNumber - 1871 2B79 8D 26 21 STA FolderTurbo ; znacznik turbo (00 bez turbo , 01 tak jak bylo) - 1872 2B7C 60 RTS + 1859 2B5E Asteriks + 1860 2B5E A0 0B LDY #11 ; pierwszy HEX za nazwa pliku (czyli pierwsze znaki dlugiej nazwy) + 1861 2B60 20 7C 2B JSR GetHexNumber + 1862 2B63 8D C5 02 STA COLPF1S ; literki + 1863 2B66 C8 INY + 1864 2B67 20 7C 2B JSR GetHexNumber + 1865 2B6A 8D C6 02 STA COLPF2S ; tlo + 1866 2B6D C8 INY + 1867 2B6E 20 7C 2B JSR GetHexNumber + 1868 2B71 8D C8 02 STA COLBAKS ; ramka + 1869 2B74 C8 INY + 1870 2B75 20 7C 2B JSR GetHexNumber + 1871 2B78 8D 26 21 STA FolderTurbo ; znacznik turbo (00 bez turbo , 01 tak jak bylo) + 1872 2B7B 60 RTS 1873 ; pobiera z pod adresu wskazanago przez ($D4),Y dwa kolejne znaki liczby HEX 1874 ; i zamienia na bajt w A - 1875 2B7D GetHexNumber - 1876 2B7D 20 8D 2B JSR GetHEX4bits - 1877 2B80 0A ASL - 1878 2B81 0A ASL - 1879 2B82 0A ASL - 1880 2B83 0A ASL - 1881 2B84 85 E4 STA TempZP ; zmienna potrzebna tylko przy jakims chwilowym obliczeniu, wiec tu sie przyda. - 1882 2B86 C8 INY - 1883 2B87 20 8D 2B JSR GetHEX4bits - 1884 2B8A 05 E4 ORA TempZP - 1885 2B8C 60 RTS - 1886 2B8D GetHEX4bits - 1887 2B8D B1 D4 LDA ($D4),Y - 1888 2B8F 38 SEC - 1889 2B90 E9 30 SBC #'0' - 1890 2B92 C9 0A CMP #$0A ; sprawdzmy czy cyfra - 1891 2B94 90 02 BCC IsNumber - 1892 2B96 E9 07 SBC #7 ; Carry jest ustawiony, a miedzy 9 i A jest jeszcze 7 znakow - 1893 2B98 IsNumber - 1894 2B98 60 RTS + 1875 2B7C GetHexNumber + 1876 2B7C 20 8C 2B JSR GetHEX4bits + 1877 2B7F 0A ASL + 1878 2B80 0A ASL + 1879 2B81 0A ASL + 1880 2B82 0A ASL + 1881 2B83 85 E4 STA TempZP ; zmienna potrzebna tylko przy jakims chwilowym obliczeniu, wiec tu sie przyda. + 1882 2B85 C8 INY + 1883 2B86 20 8C 2B JSR GetHEX4bits + 1884 2B89 05 E4 ORA TempZP + 1885 2B8B 60 RTS + 1886 2B8C GetHEX4bits + 1887 2B8C B1 D4 LDA ($D4),Y + 1888 2B8E 38 SEC + 1889 2B8F E9 30 SBC #'0' + 1890 2B91 C9 0A CMP #$0A ; sprawdzmy czy cyfra + 1891 2B93 90 02 BCC IsNumber + 1892 2B95 E9 07 SBC #7 ; Carry jest ustawiony, a miedzy 9 i A jest jeszcze 7 znakow + 1893 2B97 IsNumber + 1894 2B97 60 RTS 1895 ; Ustawia numer satcji wg A - 1896 2B99 SeTDriveNR - 1897 2B99 C9 09 CMP #$09 - 1898 2B9B B0 0F BCS SetDriveLetter ; jesli wieksze lub rowne od 9 to litera zamiast cyfry - 1899 2B9D 20 BB 2B JSR SeTblokDanychDrive - 1900 2BA0 18 CLC - 1901 2BA1 69 B0 ADC #'0'+$80 ; dodajemy do kodu cyfry 0 - 1902 2BA3 8D D5 22 STA DriveDisp1 - 1903 2BA6 A9 C4 LDA #'D'+$80 ; literka D przed numerem napedu - 1904 2BA8 8D D4 22 STA DriveDisp1-1 - 1905 2BAB 60 RTS - 1906 2BAC SeTDriveLetter - 1907 2BAC 20 BB 2B JSR SeTblokDanychDrive - 1908 2BAF 18 CLC - 1909 2BB0 69 C0 ADC #'A'+$7F ; $7f bo to $80 - 1 , a kod litery A trzeba zmniejszyc o 1 i dodac numer napedu - 1910 2BB2 8D D5 22 STA DriveDisp1 - 1911 2BB5 A9 A0 LDA #' '+$80 ; literka D przed numerem napedu - tutaj spacja - 1912 2BB7 8D D4 22 STA DriveDisp1-1 - 1913 2BBA 60 RTS - 1914 2BBB SeTblokDanychDrive - 1915 2BBB 8D 9B 20 STA .adr loader.blokDanychIO_Loader+1 ; przed przepisaniem - 1916 2BBE 8D 3B 2A STA blokDanychIO+1 - 1917 2BC1 8D BD 28 STA blokDanychIO_GetUSSpeed+1 - 1918 2BC4 8D EB 29 STA blokDanychIO_PERCOM+1 - 1919 2BC7 60 RTS + 1896 2B98 SeTDriveNR + 1897 2B98 C9 09 CMP #$09 + 1898 2B9A B0 0F BCS SetDriveLetter ; jesli wieksze lub rowne od 9 to litera zamiast cyfry + 1899 2B9C 20 BA 2B JSR SeTblokDanychDrive + 1900 2B9F 18 CLC + 1901 2BA0 69 B0 ADC #'0'+$80 ; dodajemy do kodu cyfry 0 + 1902 2BA2 8D D5 22 STA DriveDisp1 + 1903 2BA5 A9 C4 LDA #'D'+$80 ; literka D przed numerem napedu + 1904 2BA7 8D D4 22 STA DriveDisp1-1 + 1905 2BAA 60 RTS + 1906 2BAB SeTDriveLetter + 1907 2BAB 20 BA 2B JSR SeTblokDanychDrive + 1908 2BAE 18 CLC + 1909 2BAF 69 C0 ADC #'A'+$7F ; $7f bo to $80 - 1 , a kod litery A trzeba zmniejszyc o 1 i dodac numer napedu + 1910 2BB1 8D D5 22 STA DriveDisp1 + 1911 2BB4 A9 A0 LDA #' '+$80 ; literka D przed numerem napedu - tutaj spacja + 1912 2BB6 8D D4 22 STA DriveDisp1-1 + 1913 2BB9 60 RTS + 1914 2BBA SeTblokDanychDrive + 1915 2BBA 8D 9B 20 STA .adr loader.blokDanychIO_Loader+1 ; przed przepisaniem + 1916 2BBD 8D 3A 2A STA blokDanychIO+1 + 1917 2BC0 8D BC 28 STA blokDanychIO_GetUSSpeed+1 + 1918 2BC3 8D EA 29 STA blokDanychIO_PERCOM+1 + 1919 2BC6 60 RTS 1920 ; wyswietlenie na czystm ekranie info zaraz przed rozpoczeciem ladowania pliku - 1921 2BC8 MEMLOprint - 1922 2BC8 AD E7 02 LDA MEMLO - 1923 2BCB 48 PHA - 1924 2BCC 4A LSR - 1925 2BCD 4A LSR - 1926 2BCE 4A LSR - 1927 2BCF 4A LSR - 1928 2BD0 20 28 21 JSR bin2AsciiHex - 1929 2BD3 8D 01 2C STA MEMLOvalue+2 - 1930 2BD6 68 PLA - 1931 2BD7 20 28 21 JSR bin2AsciiHex - 1932 2BDA 8D 02 2C STA MEMLOvalue+3 - 1933 2BDD AD E8 02 LDA MEMLO+1 - 1934 2BE0 48 PHA - 1935 2BE1 4A LSR - 1936 2BE2 4A LSR - 1937 2BE3 4A LSR - 1938 2BE4 4A LSR - 1939 2BE5 20 28 21 JSR bin2AsciiHex - 1940 2BE8 8D FF 2B STA MEMLOvalue - 1941 2BEB 68 PLA - 1942 2BEC 20 28 21 JSR bin2AsciiHex - 1943 2BEF 8D 00 2C STA MEMLOvalue+1 - 1944 2BF2 20 47 2A JSR PrintXY - 1945 2BF5 1C 17 .BY 28,23 - 1946 2BF7 4D 45 4D 4C 4F 3A + .BY "MEMLO: $" - 1947 2BFF MEMLOvalue - 1948 2BFF 30 30 30 30 .BY "0000" - 1949 2C03 00 .BY $00 - 1950 2C04 60 RTS + 1921 2BC7 MEMLOprint + 1922 2BC7 AD E7 02 LDA MEMLO + 1923 2BCA 48 PHA + 1924 2BCB 4A LSR + 1925 2BCC 4A LSR + 1926 2BCD 4A LSR + 1927 2BCE 4A LSR + 1928 2BCF 20 28 21 JSR bin2AsciiHex + 1929 2BD2 8D 00 2C STA MEMLOvalue+2 + 1930 2BD5 68 PLA + 1931 2BD6 20 28 21 JSR bin2AsciiHex + 1932 2BD9 8D 01 2C STA MEMLOvalue+3 + 1933 2BDC AD E8 02 LDA MEMLO+1 + 1934 2BDF 48 PHA + 1935 2BE0 4A LSR + 1936 2BE1 4A LSR + 1937 2BE2 4A LSR + 1938 2BE3 4A LSR + 1939 2BE4 20 28 21 JSR bin2AsciiHex + 1940 2BE7 8D FE 2B STA MEMLOvalue + 1941 2BEA 68 PLA + 1942 2BEB 20 28 21 JSR bin2AsciiHex + 1943 2BEE 8D FF 2B STA MEMLOvalue+1 + 1944 2BF1 20 46 2A JSR PrintXY + 1945 2BF4 1C 17 .BY 28,23 + 1946 2BF6 4D 45 4D 4C 4F 3A + .BY "MEMLO: $" + 1947 2BFE MEMLOvalue + 1948 2BFE 30 30 30 30 .BY "0000" + 1949 2C02 00 .BY $00 + 1950 2C03 60 RTS 1951 1952 ; Tablica adresow wszystkich rozkazow skokow w procedurze Turbo 1953 - 1954 2C05 xjsrTableL - 1955 2C05 EB FF 05 .BY <[xjsr1+1],<[xjsr2+1],<[xjsr3+1] - 1956 2C08 0B 10 .BY <[xjsr4+1],<[xjsr5+1] - 1957 2C0A 1C 26 32 .BY <[xjsr6+1],<[xjsr7+1],<[xjsr8+1] - 1958 2C0D 37 3F .BY <[xjsr9+1],<[xjsrA+1] - 1959 2C0F xjsrTableH - 1960 2C0F 27 27 28 .BY >[xjsr1+1],>[xjsr2+1],>[xjsr3+1] - 1961 2C12 28 28 .BY >[xjsr4+1],>[xjsr5+1] - 1962 2C14 28 28 28 .BY >[xjsr6+1],>[xjsr7+1],>[xjsr8+1] - 1963 2C17 28 28 .BY >[xjsr9+1],>[xjsrA+1] + 1954 2C04 xjsrTableL + 1955 2C04 EA FE 04 .BY <[xjsr1+1],<[xjsr2+1],<[xjsr3+1] + 1956 2C07 0A 0F .BY <[xjsr4+1],<[xjsr5+1] + 1957 2C09 1B 25 31 .BY <[xjsr6+1],<[xjsr7+1],<[xjsr8+1] + 1958 2C0C 36 3E .BY <[xjsr9+1],<[xjsrA+1] + 1959 2C0E xjsrTableH + 1960 2C0E 27 27 28 .BY >[xjsr1+1],>[xjsr2+1],>[xjsr3+1] + 1961 2C11 28 28 .BY >[xjsr4+1],>[xjsr5+1] + 1962 2C13 28 28 28 .BY >[xjsr6+1],>[xjsr7+1],>[xjsr8+1] + 1963 2C16 28 28 .BY >[xjsr9+1],>[xjsrA+1] 1964 ; miejsce na wyliczony offset o jaki przesuwamy procedure - 1965 2C19 HappyOffset - 1966 2C19 00 00 .WO $0000 + 1965 2C18 HappyOffset + 1966 2C18 00 00 .WO $0000 1967 ; kody gestosci do wyswietlenia na ekranie - takie poziome kreski od chudej do grubej :) - 1968 2C1B DensityCodes - 1969 2C1B F3 E4 F1 .by +$80,"sdq" + 1968 2C1A DensityCodes + 1969 2C1A F3 E4 F1 .by +$80,"sdq" 1970 ;.by "SDQ" 1971 ;.by $0e,$15,$a0 - 1972 2C1E ONtext - 1973 2C1E CF CE A0 .BY +$80,"ON " - 1974 2C21 OFFtext - 1975 2C21 CF C6 C6 .BY +$80,"OFF" + 1972 2C1D ONtext + 1973 2C1D CF CE A0 .BY +$80,"ON " + 1974 2C20 OFFtext + 1975 2C20 CF C6 C6 .BY +$80,"OFF" 1976 ; miejsce na przechowanie stanu urzadzen PBI (przez reset) - 1977 2C24 PDVMASKtemp - 1978 2C24 00 .BY $00 + 1977 2C23 PDVMASKtemp + 1978 2C23 00 .BY $00 1979 ; miejsce na blok PERCOM - 1980 2C25 PERCOMdata + 1980 2C24 PERCOMdata 1981 ; miejsce na tablice trzymajaca numery pierwszych sektorow map bitoeych plikow aktualnie wyswietlanych na liscie - 1982 = 2C31 FirstSectorsTable=*+12 ; omijamy 12b na percom + 1982 = 2C30 FirstSectorsTable=*+12 ; omijamy 12b na percom 1983 ; zostawiamy $30 bajtow wolnego 1984 1985 = 2D00 FirstSectorBuff=[[>[*+$2f+12]]+1]*$100 ; ($80 bajtow) ustawienie na granicy strony ale po ominieciu $30 i 12 bajtow 1986 = 2D00 ProgramEnd=FirstSectorBuff 1987 = 2D80 DirMapSectorBuff=FirstSectorBuff+$80 ; tutaj aktualny sektor mapy sektorow katalogu 1988 = 2F80 DirSectorBuff=FirstSectorBuff+$280 ; tutaj sektor katalogu - 1989 2C25 FirstRun + 1989 2C24 FirstRun 1990 ; odnotowujemy stan Shift z Bootowania - 1991 2C25 AD 0F D2 LDA SKSTAT - 1992 2C28 29 08 and #$08 - 1993 2C2A D0 03 BNE NoSHIFTboot - 1994 2C2C 8D 25 21 STA BootShift ; w A jest 0 wiec nie trzeba LDA #0 - 1995 2C2F NoSHIFTboot + 1991 2C24 AD 0F D2 LDA SKSTAT + 1992 2C27 29 08 and #$08 + 1993 2C29 D0 03 BNE NoSHIFTboot + 1994 2C2B 8D 25 21 STA BootShift ; w A jest 0 wiec nie trzeba LDA #0 + 1995 2C2E NoSHIFTboot 1996 ; Sprawdzamy czy jest basic i ustawiamy status na ekranie - 1997 2C2F AD 01 D3 LDA PORTB - 1998 2C32 29 02 AND #$02 - 1999 2C34 D0 0B BNE BrakBasica + 1997 2C2E AD 01 D3 LDA PORTB + 1998 2C31 29 02 AND #$02 + 1999 2C33 D0 0B BNE BrakBasica 2000 ; jest Basic - 2001 2C36 A0 02 LDY #$2 - 2002 2C38 BASstatprint - 2003 2C38 B9 1E 2C LDA ONtext,y - 2004 2C3B 99 F0 22 STA BASstatus,y - 2005 2C3E 88 DEY - 2006 2C3F 10 F7 bpl BASstatprint - 2007 2C41 BrakBasica + 2001 2C35 A0 02 LDY #$2 + 2002 2C37 BASstatprint + 2003 2C37 B9 1D 2C LDA ONtext,y + 2004 2C3A 99 F0 22 STA BASstatus,y + 2005 2C3D 88 DEY + 2006 2C3E 10 F7 bpl BASstatprint + 2007 2C40 BrakBasica 2008 ; Sprawdzamy istnienie QMEGa - 2009 2C41 A0 06 ldy #$06 ; bo 6 znaków w ROMie testujemy - 2010 2C43 testQMEGloop - 2011 2C43 B9 01 C0 LDA $C001,y - 2012 2C46 D9 76 2C CMP QMEGstring,y - 2013 2C49 D0 13 bne brakQMEGa - 2014 2C4B 88 dey - 2015 2C4C 10 F5 bpl testQMEGloop + 2009 2C40 A0 06 ldy #$06 ; bo 6 znaków w ROMie testujemy + 2010 2C42 testQMEGloop + 2011 2C42 B9 01 C0 LDA $C001,y + 2012 2C45 D9 75 2C CMP QMEGstring,y + 2013 2C48 D0 13 bne brakQMEGa + 2014 2C4A 88 dey + 2015 2C4B 10 F5 bpl testQMEGloop 2016 ; jest QMEG - 2017 2C4E A9 00 LDA #0 - 2018 2C50 8D 23 21 STA QMEG - 2019 2C53 A0 02 LDY #$2 - 2020 2C55 Qstatprint - 2021 2C55 B9 1E 2C LDA ONtext,y - 2022 2C58 99 E8 22 STA QMEGstatus,y - 2023 2C5B 88 DEY - 2024 2C5C 10 F7 bpl Qstatprint - 2025 2C5E brakQMEGa + 2017 2C4D A9 00 LDA #0 + 2018 2C4F 8D 23 21 STA QMEG + 2019 2C52 A0 02 LDY #$2 + 2020 2C54 Qstatprint + 2021 2C54 B9 1D 2C LDA ONtext,y + 2022 2C57 99 E8 22 STA QMEGstatus,y + 2023 2C5A 88 DEY + 2024 2C5B 10 F7 bpl Qstatprint + 2025 2C5D brakQMEGa 2026 ; kombinacja z dodaniem identyfikatara i odjeciem 1 - bo tak dziwnie OS robi - 2027 2C5E AD 00 03 LDA DDEVIC - 2028 2C61 18 clc - 2029 2C62 6D 01 03 ADC DUNIT - 2030 2C65 38 sec - 2031 2C66 E9 01 SBC #$01 - 2032 2C68 29 0F AND #$0F ; zapamietanie numeru urzadzenia - 2033 2C6A 8D 24 21 STA BootDrive - 2034 2C6D 20 99 2B JSR SeTDriveNR - 2035 2C70 20 37 21 JSR EditorOpen - 2036 2C73 4C 65 21 JMP mainprog - 2037 2C76 QMEGstring - 2038 2C76 51 4D 45 47 2D 4F + .BY "QMEG-OS",0 - 2039 2C7E 48 53 20 70 72 6F + .BY "HS procedures for Happy/US-Doubler, big sectors loader and compressed file map by Pecus & Pirx 2010-05-26" + 2027 2C5D AD 00 03 LDA DDEVIC + 2028 2C60 18 clc + 2029 2C61 6D 01 03 ADC DUNIT + 2030 2C64 38 sec + 2031 2C65 E9 01 SBC #$01 + 2032 2C67 29 0F AND #$0F ; zapamietanie numeru urzadzenia + 2033 2C69 8D 24 21 STA BootDrive + 2034 2C6C 20 98 2B JSR SeTDriveNR + 2035 2C6F 20 37 21 JSR EditorOpen + 2036 2C72 4C 65 21 JMP mainprog + 2037 2C75 QMEGstring + 2038 2C75 51 4D 45 47 2D 4F + .BY "QMEG-OS",0 + 2039 2C7D 48 53 20 70 72 6F + .BY "HS procedures for Happy/US-Doubler, big sectors loader and compressed file map by Pecus & Pirx 2010-05-26" 2040 ;.OPT List 2041 2042 diff --git a/loaderFN.xex b/loaderFN.xex index 145439b..5821f51 100644 Binary files a/loaderFN.xex and b/loaderFN.xex differ