No ZP variables in loader and opty

This commit is contained in:
Pecusx
2024-05-14 10:04:10 +02:00
parent c1cec0d265
commit bbbac04783
4 changed files with 2209 additions and 2231 deletions
+25 -35
View File
@@ -76,16 +76,10 @@ DOSINI = $0c
IRQENS = $10
; zmienne procedury ladowania pliku (w miejscu zmiennych CIO - ktore sa nieuzywane)
; zmienne procedury ladowania pliku (w miejscu zmiennych CIO - ktore sa nieuzywane - niestety teraz sa)
; adres komorki pamieci do ktorej zapisujemy kolejny ladowany bajt pliku
InBlockAddr = $64 ; word
; dlugosc ladowanego bloku odjeta od $10000 (zwiekszana osiaga ZERO po zaladowaniu bloku w calosci)
ToBlockEnd = $66 ; word
BlockLen = $66 ; word
; najmlodszy z trzech bajtow zliczajacych do konca pliku - patrz ToFileEndH
ToFileEndL = $28
BlockATemp = $68
CompressedMapPos = $3D ; pozycja w skompresowanej mapie pliku
CheckSUM = $30
@@ -193,11 +187,15 @@ START
movedproc
.local loader, $0700
; dwa starsze bajty (bo to wielkosc 3 bajtowa) dlugosci pliku odjetej od $1000000
; dzieki czemu mozna stwierdzic osiagniecie konca pliku przez zwiekszanie tych
; bajtow (wraz z najmlodszym) i sprawdzanie czy osiagnieto ZERO
ToFileEndH
.WO $0000
; adres poczatkowy pamieci do ktorej zapisujemy kolejny ladowany blok pliku
InBlockAddr
.WO 00 ; word
; dlugosc ladowanego bloku
BlockLen
.WO 00 ; word
; zmienna tymczasowa potrzebna do obliczenia dlugosci bloku
BlockATemp
.WO 00
FileInit ; skok JSR pod adres inicjalizacji po (przed) kazdym nastepnym bloku binarnym
JSR GoInitAddr
FileNextBlock
@@ -257,24 +255,11 @@ FileGetBlockStart
JMP GetFile2Bytes ; pobranie dwoch bajtow
GoInitAddr
JMP ($02E2)
SioJMP
JSR JSIOINT
; BMI ReadErrorLoop ; jesli blad odczytu sektora to czytamy ponownie
RTS
blokDanychIO_Loader
.BY $31,$01,$52,$40,<FileSecBuff,>FileSecBuff,$0A,$00,$80,$00
; Dlugosc sektora to dwa ostatnie bajty bloku danych ($0080 lub $0100)
SecLen = blokDanychIO_Loader+8 ; SecLen wskazuje na komórki do wpisania długości sektora przed przepisaniem procki na stronę $0700
SectorNumber
.WO $0000
EndOfFile ; to wykona sie przy nieoczekiwanym (i oczekiwanym) koncu pliku
LDA #>(JRESETWM-1) ; cieply start (RESET) zamiast SelfTestu
PHA
LDA #<(JRESETWM-1)
PHA
;WaitLine0
; LDA VCOUNT
; bne WaitLine0
JMP ($02E0)
Jrts
RTS
@@ -294,10 +279,6 @@ GetFileBytes
STA ICBUFL+1,x
JMP CIO
; starszy bajt licznika pozycji bajtu w sektorze - mlodszy jest caly czas w X
; potrzebny do obslugi sektorow wiekszych od 256b
InSectorCountH
.BY $00
; koniec czesci glownejprocedury ladowania pliku przepisywanej pod $0700
; tu zaczyna sie (takze przepisywana) procedura wykonujaca sie tylko raz
; w tym miejscu potem bedzie bufor
@@ -306,6 +287,21 @@ InSectorCountH
zzzzzz ; dla wygody - ta etykieta powinna miec $2100 jesli procedura ja poprzedzajaca miesci sie na stronie
FirstMapSectorNr
.WO $0000
blokDanychIO_Loader
.BY $31,$01,$52,$40,<FileSecBuff,>FileSecBuff,$0A,$00,$80,$00
; Dlugosc sektora to dwa ostatnie bajty bloku danych ($0080 lub $0100)
SecLen = blokDanychIO_Loader+8 ; SecLen wskazuje na komórki do wpisania długości sektora przed przepisaniem procki na stronę $0700
SectorNumber
.WO $0000
; dwa starsze bajty (bo to wielkosc 3 bajtowa) dlugosci pliku odjetej od $1000000
; dzieki czemu mozna stwierdzic osiagniecie konca pliku przez zwiekszanie tych
; bajtow (wraz z najmlodszym) i sprawdzanie czy osiagnieto ZERO
ToFileEndH
.WO $0000 ; do usuniecia
SioJMP
JSR JSIOINT
; BMI ReadErrorLoop ; jesli blad odczytu sektora to czytamy ponownie
RTS
LoadStart
; na poczatek czyszczenie pamieci od MEMLO do MEMTOP
LDY MEMLO
@@ -331,15 +327,9 @@ LastMemPageClear
CPY #$FF
BNE LastMemPageClear
; wyczyszczona, wiec ....
LDA tempToFileEndL
STA ToFileEndL
LDA #$FF
STA KBCODES
INC WhatIsIt ; zmiana BCS omijajacego procedure na LDA (adres pierwszego bloku do STARTADR)
LDX SecLen ; dlugosc sektora do X, czyli wymuszenie przeczytania nastepnego sektora
LDA Seclen+1 ; --
STA InSectorCountH ; -- obsluga sektorow ponad 256b
;jmp *
JMP FileNextBlock
; tymczasowe przechowanie najmlodszego bajtu licznika do konca pliku
; sluzy do przepisania tego bajtu z glownego programu do zmiennej loadera
+235 -237
View File
@@ -1,4 +1,4 @@
mads 2.1.7 build 3 (13 Sep 23)
mads 2.1.6 build 65 (4 Jun 23)
Label table:
00 0247 PDVMASK
00 0340 IOCB
@@ -70,11 +70,7 @@ Label table:
00 000A DOSVEC
00 000C DOSINI
00 0010 IRQENS
00 0064 INBLOCKADDR
00 0066 TOBLOCKEND
00 0066 BLOCKLEN
00 0028 TOFILEENDL
00 0068 BLOCKATEMP
00 003D COMPRESSEDMAPPOS
00 0030 CHECKSUM
00 0031 SECLENUS
@@ -130,246 +126,248 @@ Label table:
00 E471 JTESTROM
00 E474 JRESETWM
00 E477 JRESETCD
00 07BE FILESECBUFF
00 07BE TEMPMEMLO
00 07D2 FILESECBUFF
00 07D2 TEMPMEMLO
00 1FFD START
00 2000 MOVEDPROC
00 0700 LOADER
00 0700 LOADER.TOFILEENDH
00 0702 LOADER.FILEINIT
00 0705 LOADER.FILENEXTBLOCK
00 071A LOADER.FILENOFFFFHEAD
00 074D LOADER.WHATISIT
00 075C LOADER.FILENOFIRSTBLOCK
00 0766 LOADER.BLOCKREADLOOP
00 076F LOADER.FILEGETBLOCKSTART
00 077A LOADER.GOINITADDR
00 077D LOADER.SIOJMP
00 0781 LOADER.BLOKDANYCHIO_LOADER
00 0789 LOADER.SECLEN
00 078B LOADER.SECTORNUMBER
00 078D LOADER.ENDOFFILE
00 0796 LOADER.JRTS
00 0797 LOADER.GETFILE2BYTES
00 079F LOADER.GETFILEBYTES
00 07BD LOADER.INSECTORCOUNTH
00 07BE LOADER.ZZZZZZ
00 07BE LOADER.FIRSTMAPSECTORNR
00 07C0 LOADER.LOADSTART
00 07C9 LOADER.OUTMEMCLEARLOOP
00 07CB LOADER.INMEMCLEARLOOP
00 07E7 LOADER.LASTMEMPAGECLEAR
00 0808 LOADER.TEMPTOFILEENDL
00 2109 JAKIETURBO
00 2109 USMODE
00 210A QMEG
00 210B BOOTDRIVE
00 210C BOOTSHIFT
00 210D FOLDERTURBO
00 210E NEWCOLORS
00 210F BIN2ASCIIHEX
00 211A LABELKA
00 211B EDRIVER
00 211E EDITOROPEN
00 214C MAINPROG
00 216A USSPEED
00 216C USSTATPRINT
00 2175 NOUSSPEED
00 2178 ERROR148
00 217A ERRORDISPLAY
00 21A1 ERRORNUMHEX
00 21A9 WAITKLOOP
00 21BB READMAINDIR
00 21D4 SPARTADISK
00 21DF SEKTOR128B
00 21F1 READDIR
00 222A LABEL46
00 2238 LABEL40
00 2246 LABEL43
00 2253 PROGNAME
00 225E LABEL42
00 2269 LABEL45
00 226C DATFILEFOUND
00 228C LABEL47
00 22A3 TOSTARTOFDIR
00 22B4 STATUSBARPRINT
00 22BA DENSITYDISPLAY
00 22BC DRIVEDISP1
00 22CF QMEGSTATUS
00 22D7 BASSTATUS
00 22DE USSTATUS
00 235A LABEL68
00 2368 NOLASTFILEINDIR
00 2372 LABEL50
00 237C LABEL51
00 23A3 LABEL53
00 23AB LABEL56
00 23B4 LABEL55
00 23B7 LASTFILESPAGEJUMP
00 23BA LABEL54
00 23BD LABEL52
00 23CF LABEL65
00 23DD LABEL60
00 23EB COMPARENAMES
00 23ED CHECKING62
00 23F9 REPLACINGNAME
00 2405 CHECKNEXTNAME
00 2410 LABEL64
00 2413 GAMENAMEPRINT
00 241F YPOSGAMENAME
00 2420 GAMEKEYSYMBOL
00 2423 GAMENAME
00 2460 LABEL66
00 246B LABEL59
00 2476 LABEL69
00 2479 MAINDIRKEY
00 247C UPDIRKEY
00 248C ESCKEY
00 2499 NOSHIFTESC
00 24A0 TOSTARTOFDIRJUMP
00 24A3 SPACEKEY
00 24AA CONTARROWSPRINT
00 24BB LASTFILESPAGE
00 24BD KEYBOARDPROC
00 24CF COLORSALREADYSET
00 24F4 NOCTRLLETTER
00 2505 NONUMBER
00 250B BIGLETTERS
00 2532 SUBDIRTEXT
00 253B GOTOLOADER
00 2543 DISKNOTCHANGED1
00 254F SETTURBOOFF
00 2552 NOSHIFT
00 0700 LOADER.INBLOCKADDR
00 0702 LOADER.BLOCKLEN
00 0704 LOADER.BLOCKATEMP
00 0706 LOADER.FILEINIT
00 0709 LOADER.FILENEXTBLOCK
00 0720 LOADER.FILENOFFFFHEAD
00 0765 LOADER.WHATISIT
00 0776 LOADER.FILENOFIRSTBLOCK
00 0780 LOADER.BLOCKREADLOOP
00 078C LOADER.FILEGETBLOCKSTART
00 0799 LOADER.GOINITADDR
00 079C LOADER.ENDOFFILE
00 07A5 LOADER.JRTS
00 07A6 LOADER.GETFILE2BYTES
00 07B0 LOADER.GETFILEBYTES
00 07D2 LOADER.ZZZZZZ
00 07D2 LOADER.FIRSTMAPSECTORNR
00 07D4 LOADER.BLOKDANYCHIO_LOADER
00 07DC LOADER.SECLEN
00 07DE LOADER.SECTORNUMBER
00 07E0 LOADER.TOFILEENDH
00 07E2 LOADER.SIOJMP
00 07E6 LOADER.LOADSTART
00 07EF LOADER.OUTMEMCLEARLOOP
00 07F1 LOADER.INMEMCLEARLOOP
00 080D LOADER.LASTMEMPAGECLEAR
00 0820 LOADER.TEMPTOFILEENDL
00 2121 JAKIETURBO
00 2121 USMODE
00 2122 QMEG
00 2123 BOOTDRIVE
00 2124 BOOTSHIFT
00 2125 FOLDERTURBO
00 2126 NEWCOLORS
00 2127 BIN2ASCIIHEX
00 2132 LABELKA
00 2133 EDRIVER
00 2136 EDITOROPEN
00 2164 MAINPROG
00 2182 USSPEED
00 2184 USSTATPRINT
00 218D NOUSSPEED
00 2190 ERROR148
00 2192 ERRORDISPLAY
00 21B9 ERRORNUMHEX
00 21C1 WAITKLOOP
00 21D3 READMAINDIR
00 21EC SPARTADISK
00 21F7 SEKTOR128B
00 2209 READDIR
00 2242 LABEL46
00 2250 LABEL40
00 225E LABEL43
00 226B PROGNAME
00 2276 LABEL42
00 2281 LABEL45
00 2284 DATFILEFOUND
00 22A4 LABEL47
00 22BB TOSTARTOFDIR
00 22CC STATUSBARPRINT
00 22D2 DENSITYDISPLAY
00 22D4 DRIVEDISP1
00 22E7 QMEGSTATUS
00 22EF BASSTATUS
00 22F6 USSTATUS
00 2372 LABEL68
00 2380 NOLASTFILEINDIR
00 238A LABEL50
00 2394 LABEL51
00 23BB LABEL53
00 23C3 LABEL56
00 23CC LABEL55
00 23CF LASTFILESPAGEJUMP
00 23D2 LABEL54
00 23D5 LABEL52
00 23E7 LABEL65
00 23F5 LABEL60
00 2403 COMPARENAMES
00 2405 CHECKING62
00 2411 REPLACINGNAME
00 241D CHECKNEXTNAME
00 2428 LABEL64
00 242B GAMENAMEPRINT
00 2437 YPOSGAMENAME
00 2438 GAMEKEYSYMBOL
00 243B GAMENAME
00 2478 LABEL66
00 2483 LABEL59
00 248E LABEL69
00 2491 MAINDIRKEY
00 2494 UPDIRKEY
00 24A4 ESCKEY
00 24B1 NOSHIFTESC
00 24B8 TOSTARTOFDIRJUMP
00 24BB SPACEKEY
00 24C2 CONTARROWSPRINT
00 24D3 LASTFILESPAGE
00 24D5 KEYBOARDPROC
00 24E7 COLORSALREADYSET
00 250C NOCTRLLETTER
00 251D NONUMBER
00 2523 BIGLETTERS
00 254A SUBDIRTEXT
00 2553 GOTOLOADER
00 255B DISKNOTCHANGED1
00 2567 SETTURBOOFF
00 256A NOSHIFT
00 2F80 COMPRESSEDMAP
00 25A7 GENERATECOMPRESSEDMAP
00 25E6 JUMPFORWARD
00 25F3 OFFSETTOBIG
00 2609 GETNEXTMAPWORD
00 2614 SECTOR00
00 261F OPS01
00 262B NOTEQAL01
00 2656 ADDTOCOMPRESSEDMAP
00 2668 XXXXBLA
00 2670 NOINC013
00 2671 FLUSHBUFFER
00 267C NOFLUSH
00 267D ENDMAKINGMAP
00 2680 LOADERGO
00 2693 NORUNFROMDOS
00 26A4 AFTERWORMSTART
00 26E0 MOVELOOP1
00 26F8 CLEARLOOP1
00 270A NOZPAGE
00 2731 FILETOOPEN
00 273E ADDSPEEDPROC
00 2758 HAPPYRELOCATE
00 2778 LABEL72X
00 277C TURBORELOCADDR
00 2787 LABEL73
00 27A2 NOHAPPYLOADER
00 27A3 HAPPYUSMOVEDPROC
00 27BA COMMANDLOOP
00 27BB HAPPYSPEED
00 27C6 DELAYLOOPCMD
00 27D0 XJSR1
00 27E4 XJSR2
00 27EA XJSR3
00 27F0 XJSR4
00 27F5 XJSR5
00 27F8 WAITFORENDOFTRANSMISSION
00 2801 XJSR6
00 280B DOUBLEACK
00 280B XJSR7
00 2817 READSECTORLOOP
00 2817 XJSR8
00 281C XJSR9
00 2824 XJSRA
00 282B ERRORHERE
00 2836 ENDOFTRANSMISSION
00 2844 SECTRANSREG
00 285A PUTSIOBYTE
00 285B WAITFORSERIAL
00 286E ADDCHECKSUM
00 2876 GETSIOBYTE
00 2878 EXTERNALLOOP
00 287C INTERNALLOOP
00 288C ACKRECEIVE
00 28A2 ENDHAPPYUSPROC
00 28A2 BLOKDANYCHIO_GETUSSPEED
00 28AE DIRMAPEND
00 28B1 LABEL39
00 28C5 DISCNOTCHANGED2
00 28ED LABEL80
00 28FB NONEXTMAPSECTOR
00 291D NOINCH
00 294D LABEL79
00 297A LABEL75
00 298B LABEL81
00 2999 LABEL82
00 29A7 READPERCOM
00 29AC READPERCOMRETRY
00 29C0 PERCOMERROR
00 29C5 SET1SECT128
00 29D0 BLOKDANYCHIO_PERCOM
00 29DC READFIRSTSECT
00 29F2 READSECTOR
00 29FB READSECTOR1
00 2A09 DISKREADRETRY
00 2A16 LABEL85
00 2A20 BLOKDANYCHIO
00 2A2C DISKRETRYCOUNT
00 2A2D PRINTXY
00 2A59 LABEL92
00 2A76 LABEL90
00 2A7D LABEL91
00 2A85 LABEL89
00 2A97 LABEL93
00 2AA8 LABEL88
00 2AAF LABEL87
00 2AB5 LABEL94
00 2ABA GOERRORDISP
00 2ABD GOSIO
00 2AC5 STANDARDSPEED
00 2AC8 TABLE2DCB
00 2AD0 IOTABLEADDR
00 2ADA CLOSE1
00 2ADC CLOSEX
00 2AE4 GETKEY
00 2B28 GKEYERROR
00 2B2B KDRIVER
00 2B2E DISCCHANGECHECK
00 2B37 LABEL98
00 2B44 CHANGEDD
00 2B45 ASTERIKS
00 2B63 GETHEXNUMBER
00 2B73 GETHEX4BITS
00 2B7E ISNUMBER
00 2B7F SETDRIVENR
00 2B92 SETDRIVELETTER
00 2BA1 SETBLOKDANYCHDRIVE
00 2BAE MEMLOPRINT
00 2BE5 MEMLOVALUE
00 2BEB XJSRTABLEL
00 2BF5 XJSRTABLEH
00 2BFF HAPPYOFFSET
00 2C01 DENSITYCODES
00 2C04 ONTEXT
00 2C07 OFFTEXT
00 2C0A PDVMASKTEMP
00 2C0B PERCOMDATA
00 2C17 FIRSTSECTORSTABLE
00 25BF GENERATECOMPRESSEDMAP
00 25FE JUMPFORWARD
00 260B OFFSETTOBIG
00 2621 GETNEXTMAPWORD
00 262C SECTOR00
00 2637 OPS01
00 2643 NOTEQAL01
00 266E ADDTOCOMPRESSEDMAP
00 2680 XXXXBLA
00 2688 NOINC013
00 2689 FLUSHBUFFER
00 2694 NOFLUSH
00 2695 ENDMAKINGMAP
00 2698 LOADERGO
00 26AB NORUNFROMDOS
00 26BC AFTERWORMSTART
00 26F8 MOVELOOP1
00 2710 CLEARLOOP1
00 2722 NOZPAGE
00 2749 FILETOOPEN
00 2756 ADDSPEEDPROC
00 2770 HAPPYRELOCATE
00 2790 LABEL72X
00 2794 TURBORELOCADDR
00 279F LABEL73
00 27BA NOHAPPYLOADER
00 27BB HAPPYUSMOVEDPROC
00 27D2 COMMANDLOOP
00 27D3 HAPPYSPEED
00 27DE DELAYLOOPCMD
00 27E8 XJSR1
00 27FC XJSR2
00 2802 XJSR3
00 2808 XJSR4
00 280D XJSR5
00 2810 WAITFORENDOFTRANSMISSION
00 2819 XJSR6
00 2823 DOUBLEACK
00 2823 XJSR7
00 282F READSECTORLOOP
00 282F XJSR8
00 2834 XJSR9
00 283C XJSRA
00 2843 ERRORHERE
00 284E ENDOFTRANSMISSION
00 285C SECTRANSREG
00 2872 PUTSIOBYTE
00 2873 WAITFORSERIAL
00 2886 ADDCHECKSUM
00 288E GETSIOBYTE
00 2890 EXTERNALLOOP
00 2894 INTERNALLOOP
00 28A4 ACKRECEIVE
00 28BA ENDHAPPYUSPROC
00 28BA BLOKDANYCHIO_GETUSSPEED
00 28C6 DIRMAPEND
00 28C9 LABEL39
00 28DD DISCNOTCHANGED2
00 2905 LABEL80
00 2913 NONEXTMAPSECTOR
00 2935 NOINCH
00 2965 LABEL79
00 2992 LABEL75
00 29A3 LABEL81
00 29B1 LABEL82
00 29BF READPERCOM
00 29C4 READPERCOMRETRY
00 29D8 PERCOMERROR
00 29DD SET1SECT128
00 29E8 BLOKDANYCHIO_PERCOM
00 29F4 READFIRSTSECT
00 2A0A READSECTOR
00 2A13 READSECTOR1
00 2A21 DISKREADRETRY
00 2A2E LABEL85
00 2A38 BLOKDANYCHIO
00 2A44 DISKRETRYCOUNT
00 2A45 PRINTXY
00 2A71 LABEL92
00 2A8E LABEL90
00 2A95 LABEL91
00 2A9D LABEL89
00 2AAF LABEL93
00 2AC0 LABEL88
00 2AC7 LABEL87
00 2ACD LABEL94
00 2AD2 GOERRORDISP
00 2AD5 GOSIO
00 2ADD STANDARDSPEED
00 2AE0 TABLE2DCB
00 2AE8 IOTABLEADDR
00 2AF2 CLOSE1
00 2AF4 CLOSEX
00 2AFC GETKEY
00 2B40 GKEYERROR
00 2B43 KDRIVER
00 2B46 DISCCHANGECHECK
00 2B4F LABEL98
00 2B5C CHANGEDD
00 2B5D ASTERIKS
00 2B7B GETHEXNUMBER
00 2B8B GETHEX4BITS
00 2B96 ISNUMBER
00 2B97 SETDRIVENR
00 2BAA SETDRIVELETTER
00 2BB9 SETBLOKDANYCHDRIVE
00 2BC6 MEMLOPRINT
00 2BFD MEMLOVALUE
00 2C03 XJSRTABLEL
00 2C0D XJSRTABLEH
00 2C17 HAPPYOFFSET
00 2C19 DENSITYCODES
00 2C1C ONTEXT
00 2C1F OFFTEXT
00 2C22 PDVMASKTEMP
00 2C23 PERCOMDATA
00 2C2F FIRSTSECTORSTABLE
00 2D00 FIRSTSECTORBUFF
00 2D00 PROGRAMEND
00 2D80 DIRMAPSECTORBUFF
00 2F80 DIRSECTORBUFF
00 2C0B FIRSTRUN
00 2C15 NOSHIFTBOOT
00 2C1E BASSTATPRINT
00 2C27 BRAKBASICA
00 2C29 TESTQMEGLOOP
00 2C3B QSTATPRINT
00 2C44 BRAKQMEGA
00 2C5C QMEGSTRING
00 2C23 FIRSTRUN
00 2C2D NOSHIFTBOOT
00 2C36 BASSTATPRINT
00 2C3F BRAKBASICA
00 2C41 TESTQMEGLOOP
00 2C53 QSTATPRINT
00 2C5C BRAKQMEGA
00 2C74 QMEGSTRING
00 0080 MAPCOUNTER
00 0082 COMPRESSEDMAPCOUNTER
00 0084 MAPCOUNTERMEM
+1949 -1959
View File
File diff suppressed because it is too large Load Diff
BIN
View File
Binary file not shown.