Better (?) loader

This commit is contained in:
Pecusx
2024-05-13 15:36:29 +02:00
parent 7ed6169e61
commit d9e8f3269c
4 changed files with 2255 additions and 2464 deletions
+55 -148
View File
@@ -82,8 +82,10 @@ IRQENS = $10
InBlockAddr = $24 ; word
; dlugosc ladowanego bloku odjeta od $10000 (zwiekszana osiaga ZERO po zaladowaniu bloku w calosci)
ToBlockEnd = $26 ; word
BlockLen= $26 ; word
; najmlodszy z trzech bajtow zliczajacych do konca pliku - patrz ToFileEndH
ToFileEndL = $28
BlockATemp = $28
CompressedMapPos = $3D ; pozycja w skompresowanej mapie pliku
CheckSUM = $30
@@ -214,23 +216,35 @@ FileInit ; skok JSR pod adres inicjalizacji po (przed) kazdym nastepnym bloku b
STA ToFileEndL
PLA
TAX
FileNextBlock ; wczytanie kolejnego bloku binarnego
JSR FileGetBlockStart ; pobranie dwoch bajtow (adres poczatku bloku)
AND InBlockAddr
FileNextBlock
; wczytanie kolejnego bloku binarnego
JSR FileGetBlockStart ; pobranie dwoch bajtow (adres poczatku bloku)
CPY #$88 ; czy EOF
jeq EndOfFile
LDA InBlockAddr
AND InBlockAddr+1
CMP #$FF ; jesli oba sa $FF to.....
BNE FileNoFFFFHead
JSR FileGetBlockStart ; pobranie jeszcze raz
FileNoFFFFHead
JSR FileGetByte ; Pobranie adresu konca ladowanego bloku
SBC InBlockAddr ; i wyliczenie jego dlugosci
EOR #$FF ; UWAGA! Dlugosc jest zEORowana z $FFFF
STA ToBlockEnd ; czyli odjeta od $10000
PHP ; odliczanie ilosci pobranych bajtow jest wiec potem robione
JSR FileGetByte ; przez dodawanie i sprawdzanie czy nie ZERO
PLP
SBC InBlockAddr+1
EOR #$FF
STA ToBlockEnd+1
mwa InBlockAddr BlockATemp ; zapamietanie adresu poczatkowego bloku (na chwile)
LDA #<BlockLen
sta InBlockAddr
lda #>BlockLen
sta InBlockAddr+1
JSR GetFile2Bytes ; pobranie dwoch bajtow - ; Pobranie adresu konca ladowanego bloku
CPY #$88 ; czy EOF
beq EndOfFile
; wyliczenie długości bloku programu binarnego
sec
lda BlockLen
sbc BlockATemp
sta BlockLen
lda BlockLen+1
sbc BlockATemp+1
sta BlockLen+1
inw BlockLen
mwa BlockATemp InBlockAddr ; odtworzenie adresu poczatkowego bloku
SEC
WhatIsIt
BCS FileNoFirstBlock ; tu wstawiany jest raz (na poczatku) rozkaz LDA ($0D),Y
@@ -245,57 +259,23 @@ FileNoFirstBlock
STA $02E2 ; bo po kazdym bloku odbywa sie tam skok
LDA #>Jrts ; jesli nie jest to blok z adresem inicjacji
STA $02E3 ; to dzieki temu nic sie nie stanie
LDY #$00
BlockReadLoop ;; petla odczytujaca z pliku blok binarny
INC ToFileEndL ;; zwiekszenie licznika bajtow w calym pliku i jesli ZERO
BEQ GoCheckEOF ;; skok do procedury sprawdzajacej dwa starsze jego bajty
CPX SecLen ;; sprawdzenie czy juz caly sektor przepisany jesli tak
bne NoNextSector1 ; --
lda InSectorCountH ; -- obsluga sektorow ponad 256b
cmp SecLen+1 ; --
BEQ GoGetNextFileSect ;; skok do procedury pobrania nastepnego sektora
NoNextSector1
FileSecBuffHaddr1 = *+2 ; samomodyfikacja kodu potrzebna do obslugi sektorow ponad 256b !!!
LDA FileSecBuff,X
INX
bne InBlockReadLoop ; --
jsr IncrementationXH ; -- obsluga sektorow ponad 256b (ten trik dziala bo tam juz byl RTS :) )
InBlockReadLoop
STA (InBlockAddr),Y
INY
BNE label15
INC InBlockAddr+1
label15
INC ToBlockEnd
BNE BlockReadLoop
INC ToBlockEnd+1
BNE BlockReadLoop
BEQ FileInit ; koniec bloku - skok pod adres inicjalizacji
GoCheckEOF
JSR CheckEOF ; skok do procedury wspolnej dla pobierania bloku i bajtu
BCS InBlockReadLoop ;tu zawsze jest CARRY, a w A kolejny bajt z pliku, wiec powrot do petli
GoGetNextFileSect
JSR GetNextFileSect
BCS InBlockReadLoop ; tu zawsze jest CARRY, a w A kolejny bajt z pliku, wiec powrot do petli
JSR GetFileBytes
CPY #$88 ; czy EOF
beq EndOfFile
jne FileInit ; koniec bloku - skok pod adres inicjalizacji
FileGetBlockStart
JSR FileGetByte
STA InBlockAddr
JSR FileGetByte
STA InBlockAddr+1
RTS
LDA #<InBlockAddr
sta InBlockAddr
lda #>InBlockAddr
sta InBlockAddr+1
JMP GetFile2Bytes ; pobranie dwoch bajtow
GoInitAddr
JMP ($02E2)
GetDataSector
ReadErrorLoop
LDX #$0B
SetDCB
LDA blokDanychIO_Loader,X
STA DDEVIC,X
DEX
BPL SetDCB
SioJMP
JSR JSIOINT
BMI ReadErrorLoop ; jesli blad odczytu sektora to czytamy ponownie
; BMI ReadErrorLoop ; jesli blad odczytu sektora to czytamy ponownie
RTS
blokDanychIO_Loader
.BY $31,$01,$52,$40,<FileSecBuff,>FileSecBuff,$0A,$00,$80,$00
@@ -303,11 +283,6 @@ blokDanychIO_Loader
SecLen = blokDanychIO_Loader+8 ; SecLen wskazuje na komórki do wpisania długości sektora przed przepisaniem procki na stronę $0700
SectorNumber
.WO $0000
CheckEOF
INC ToFileEndH
BNE NotEOF
INC ToFileEndH+1
BNE NotEOF
EndOfFile ; to wykona sie przy nieoczekiwanym (i oczekiwanym) koncu pliku
LDA #>(JRESETWM-1) ; cieply start (RESET) zamiast SelfTestu
PHA
@@ -317,92 +292,24 @@ EndOfFile ; to wykona sie przy nieoczekiwanym (i oczekiwanym) koncu pliku
; LDA VCOUNT
; bne WaitLine0
JMP ($02E0)
; Pobranie z pliku pojedynczego bajtu danych ... wynik w A, a CARRY ustawiony!!!
FileGetByte
INC ToFileEndL
BEQ CheckEOF
NotEOF
CPX SecLen ;; nie EOF, ale moze koniec sektora
bne ByteToACCU ; --
lda InSectorCountH ; -- obsluga sektorow ponad 256b
cmp SecLen+1 ; --
BEQ GetNextFileSect ;; jesli tak to pobieramy nastepny
ByteToACCU
FileSecBuffHaddr2 = *+2 ; samomodyfikacja kodu potrzebna do obslugi sektorow ponad 256b !!!
LDA FileSecBuff,X ;; pobranie bajtu z pliku do A
INX
bne GoToSec ; --
IncrementationXH ; taki trik - to przypadkiem jest podprogram, wiec mozna tu wskoczyc zamiast zwiekszac liczniki w innym miejscu po raz drugi
inc InSectorCountH ; --
inc FileSecBuffHaddr1 ; -- obsluga sektorow ponad 256b
inc FileSecBuffHaddr2 ; --
GoToSec
SEC
Jrts
RTS
; Wczytanie do bufora kolejnego sektora pliku, kolejny bajt pliku w A, a CARRY ustawiony!!!
GetNextFileSect
tya
pha
ReadNextInSequence
SectorSequenceCount = *+1
lda #$00 ; to już ma być zainicjowane!!!
beq NextMapPosition
dec SectorSequenceCount
inc SectorNumber
bne noIncDAUX2
inc SectorNumber+1
noIncDAUX2
bne ReadyToRead
;jak jest tutaj to jest błąd...
;powinien być skok do self-testu...
NextMapPosition
jsr incCompressedMapPos
;UWAGA! adres w mapie jest zawsze zwiększany o 1
;więc przed uruchomieniem loadera trzeba zainicjować adresem-1
ldy #0
lda (CompressedMapPos),y
bmi HowManyToSkip
beq SetNewStartSector
;tutaj jest ile kolejnych sektorów przeczytać w sekwencji
sta SectorSequenceCount
bne ReadNextInSequence ;zawsze skoczy
HowManyToSkip
and #%01111111
clc
adc SectorNumber
sta SectorNumber
bcc noIncDAUX2_v2
inc SectorNumber+1
noIncDAUX2_v2
bne ReadyToRead
;jak jest tutaj to jest błąd...
;powinien być skok do self-testu...
SetNewStartSector
jsr incCompressedMapPos
lda (CompressedMapPos),y
sta SectorNumber
jsr incCompressedMapPos
lda (CompressedMapPos),y
sta SectorNumber+1
ReadyToRead
JSR GetDataSector ; wczytanie kolejnego sektora pliku do bufora
GetFile2Bytes
mwa #2 BlockLen
GetFileBytes
LDX #16 ; kanal 1
LDA #CGBINR ; rozkaz BGET
STA ICCOM,X ; COMMAND
LDA InBlockAddr
STA ICBUFA,x
LDA InBlockAddr+1
STA ICBUFA+1,x
LDA BlockLen
STA ICBUFL,x
LDA BlockLen+1
STA ICBUFL+1,x
JMP CIO
pla
tay
lda #>FileSecBuff ; --
sta FileSecBuffHaddr1 ; -- obsluga sektorow ponad 256b
sta FileSecBuffHaddr2 ; --
LDX #$00 ; wyzerowanie wskaznika bajtu w sektorze
stx InSectorCountH ; --
JEQ ByteToACCU ; skok do pobrania bajtu z pliku do A i konc
incCompressedMapPos
inc CompressedMapPos
bne skipIncCompressedMapPos
inc CompressedMapPos+1
skipIncCompressedMapPos
rts
; starszy bajt licznika pozycji bajtu w sektorze - mlodszy jest caly czas w X
; potrzebny do obslugi sektorow wiekszych od 256b
InSectorCountH
@@ -1328,7 +1235,7 @@ NoZpage
; a tutaj otwieramy kanal 1 CIO do odczytu
LDX #1*16 ; kanal 1
LDX #16 ; kanal 1
LDA #COPN ; rozkaz OPEN
STA ICCOM,X ; COMMAND
LDA #$04 ; READ
@@ -1343,7 +1250,7 @@ NoZpage
JMP loader.LoadStart ; po przepisaniu
FileToOpen
.BYTE "C:",0
.BYTE "H:SCORCH.XEX",155,0
; Sprawdzenie odpowiednich flag i przepisanie za loaderem procedury obslugi odpowiedniego Turba
; na koniec odpowiednie zmodyfikowanie MEMLO
ADDspeedProc
+231 -254
View File
@@ -72,7 +72,9 @@ Label table:
00 0010 IRQENS
00 0024 INBLOCKADDR
00 0026 TOBLOCKEND
00 0026 BLOCKLEN
00 0028 TOFILEENDL
00 0028 BLOCKATEMP
00 003D COMPRESSEDMAPPOS
00 0030 CHECKSUM
00 0031 SECLENUS
@@ -128,271 +130,246 @@ Label table:
00 E471 JTESTROM
00 E474 JRESETWM
00 E477 JRESETCD
00 084B FILESECBUFF
00 084B TEMPMEMLO
00 07D7 FILESECBUFF
00 07D7 TEMPMEMLO
00 1FFD START
00 2000 MOVEDPROC
00 0700 LOADER
00 0700 LOADER.TOFILEENDH
00 0702 LOADER.FILEINIT
00 071B LOADER.FILENEXTBLOCK
00 0727 LOADER.FILENOFFFFHEAD
00 073C LOADER.WHATISIT
00 074B LOADER.FILENOFIRSTBLOCK
00 0757 LOADER.BLOCKREADLOOP
00 0768 LOADER.NONEXTSECTOR1
00 076A LOADER.FILESECBUFFHADDR1
00 0771 LOADER.INBLOCKREADLOOP
00 0778 LOADER.LABEL15
00 0782 LOADER.GOCHECKEOF
00 0787 LOADER.GOGETNEXTFILESECT
00 078C LOADER.FILEGETBLOCKSTART
00 0797 LOADER.GOINITADDR
00 079A LOADER.GETDATASECTOR
00 079A LOADER.READERRORLOOP
00 079C LOADER.SETDCB
00 07A5 LOADER.SIOJMP
00 07AB LOADER.BLOKDANYCHIO_LOADER
00 07B3 LOADER.SECLEN
00 07B5 LOADER.SECTORNUMBER
00 07B7 LOADER.CHECKEOF
00 07C1 LOADER.ENDOFFILE
00 07CA LOADER.FILEGETBYTE
00 07CE LOADER.NOTEOF
00 07DB LOADER.BYTETOACCU
00 07DD LOADER.FILESECBUFFHADDR2
00 07E1 LOADER.INCREMENTATIONXH
00 07EA LOADER.GOTOSEC
00 07EB LOADER.JRTS
00 07EC LOADER.GETNEXTFILESECT
00 07EE LOADER.READNEXTINSEQUENCE
00 07EF LOADER.SECTORSEQUENCECOUNT
00 07FD LOADER.NOINCDAUX2
00 07FF LOADER.NEXTMAPPOSITION
00 080F LOADER.HOWMANYTOSKIP
00 081D LOADER.NOINCDAUX2_V2
00 081F LOADER.SETNEWSTARTSECTOR
00 082F LOADER.READYTOREAD
00 0843 LOADER.INCCOMPRESSEDMAPPOS
00 0849 LOADER.SKIPINCCOMPRESSEDMAPPOS
00 084A LOADER.INSECTORCOUNTH
00 084B LOADER.ZZZZZZ
00 084B LOADER.FIRSTMAPSECTORNR
00 084D LOADER.LOADSTART
00 0856 LOADER.OUTMEMCLEARLOOP
00 0858 LOADER.INMEMCLEARLOOP
00 0874 LOADER.LASTMEMPAGECLEAR
00 0895 LOADER.TEMPTOFILEENDL
00 2196 JAKIETURBO
00 2196 USMODE
00 2197 QMEG
00 2198 BOOTDRIVE
00 2199 BOOTSHIFT
00 219A FOLDERTURBO
00 219B NEWCOLORS
00 219C BIN2ASCIIHEX
00 21A7 LABELKA
00 21A8 EDRIVER
00 21AB EDITOROPEN
00 21D9 MAINPROG
00 21F7 USSPEED
00 21F9 USSTATPRINT
00 2202 NOUSSPEED
00 2205 ERROR148
00 2207 ERRORDISPLAY
00 222E ERRORNUMHEX
00 2236 WAITKLOOP
00 2248 READMAINDIR
00 2261 SPARTADISK
00 226C SEKTOR128B
00 227E READDIR
00 22B7 LABEL46
00 22C5 LABEL40
00 22D3 LABEL43
00 22E0 PROGNAME
00 22EB LABEL42
00 22F6 LABEL45
00 22F9 DATFILEFOUND
00 2319 LABEL47
00 2330 TOSTARTOFDIR
00 2341 STATUSBARPRINT
00 2347 DENSITYDISPLAY
00 2349 DRIVEDISP1
00 235C QMEGSTATUS
00 2364 BASSTATUS
00 236B USSTATUS
00 23E7 LABEL68
00 23F5 NOLASTFILEINDIR
00 23FF LABEL50
00 2409 LABEL51
00 2430 LABEL53
00 2438 LABEL56
00 2441 LABEL55
00 2444 LASTFILESPAGEJUMP
00 2447 LABEL54
00 244A LABEL52
00 245C LABEL65
00 246A LABEL60
00 2478 COMPARENAMES
00 247A CHECKING62
00 2486 REPLACINGNAME
00 2492 CHECKNEXTNAME
00 249D LABEL64
00 24A0 GAMENAMEPRINT
00 24AC YPOSGAMENAME
00 24AD GAMEKEYSYMBOL
00 24B0 GAMENAME
00 24ED LABEL66
00 24F8 LABEL59
00 2503 LABEL69
00 2506 MAINDIRKEY
00 2509 UPDIRKEY
00 2519 ESCKEY
00 2526 NOSHIFTESC
00 252D TOSTARTOFDIRJUMP
00 2530 SPACEKEY
00 2537 CONTARROWSPRINT
00 2548 LASTFILESPAGE
00 254A KEYBOARDPROC
00 255C COLORSALREADYSET
00 2581 NOCTRLLETTER
00 2592 NONUMBER
00 2598 BIGLETTERS
00 25BF SUBDIRTEXT
00 25C8 GOTOLOADER
00 25D0 DISKNOTCHANGED1
00 25DC SETTURBOOFF
00 25DF NOSHIFT
00 0730 LOADER.FILENOFFFFHEAD
00 0763 LOADER.WHATISIT
00 0772 LOADER.FILENOFIRSTBLOCK
00 077C LOADER.BLOCKREADLOOP
00 0788 LOADER.FILEGETBLOCKSTART
00 0793 LOADER.GOINITADDR
00 0796 LOADER.SIOJMP
00 079A LOADER.BLOKDANYCHIO_LOADER
00 07A2 LOADER.SECLEN
00 07A4 LOADER.SECTORNUMBER
00 07A6 LOADER.ENDOFFILE
00 07AF LOADER.JRTS
00 07B0 LOADER.GETFILE2BYTES
00 07B8 LOADER.GETFILEBYTES
00 07D6 LOADER.INSECTORCOUNTH
00 07D7 LOADER.ZZZZZZ
00 07D7 LOADER.FIRSTMAPSECTORNR
00 07D9 LOADER.LOADSTART
00 07E2 LOADER.OUTMEMCLEARLOOP
00 07E4 LOADER.INMEMCLEARLOOP
00 0800 LOADER.LASTMEMPAGECLEAR
00 0821 LOADER.TEMPTOFILEENDL
00 2122 JAKIETURBO
00 2122 USMODE
00 2123 QMEG
00 2124 BOOTDRIVE
00 2125 BOOTSHIFT
00 2126 FOLDERTURBO
00 2127 NEWCOLORS
00 2128 BIN2ASCIIHEX
00 2133 LABELKA
00 2134 EDRIVER
00 2137 EDITOROPEN
00 2165 MAINPROG
00 2183 USSPEED
00 2185 USSTATPRINT
00 218E NOUSSPEED
00 2191 ERROR148
00 2193 ERRORDISPLAY
00 21BA ERRORNUMHEX
00 21C2 WAITKLOOP
00 21D4 READMAINDIR
00 21ED SPARTADISK
00 21F8 SEKTOR128B
00 220A READDIR
00 2243 LABEL46
00 2251 LABEL40
00 225F LABEL43
00 226C PROGNAME
00 2277 LABEL42
00 2282 LABEL45
00 2285 DATFILEFOUND
00 22A5 LABEL47
00 22BC TOSTARTOFDIR
00 22CD STATUSBARPRINT
00 22D3 DENSITYDISPLAY
00 22D5 DRIVEDISP1
00 22E8 QMEGSTATUS
00 22F0 BASSTATUS
00 22F7 USSTATUS
00 2373 LABEL68
00 2381 NOLASTFILEINDIR
00 238B LABEL50
00 2395 LABEL51
00 23BC LABEL53
00 23C4 LABEL56
00 23CD LABEL55
00 23D0 LASTFILESPAGEJUMP
00 23D3 LABEL54
00 23D6 LABEL52
00 23E8 LABEL65
00 23F6 LABEL60
00 2404 COMPARENAMES
00 2406 CHECKING62
00 2412 REPLACINGNAME
00 241E CHECKNEXTNAME
00 2429 LABEL64
00 242C GAMENAMEPRINT
00 2438 YPOSGAMENAME
00 2439 GAMEKEYSYMBOL
00 243C GAMENAME
00 2479 LABEL66
00 2484 LABEL59
00 248F LABEL69
00 2492 MAINDIRKEY
00 2495 UPDIRKEY
00 24A5 ESCKEY
00 24B2 NOSHIFTESC
00 24B9 TOSTARTOFDIRJUMP
00 24BC SPACEKEY
00 24C3 CONTARROWSPRINT
00 24D4 LASTFILESPAGE
00 24D6 KEYBOARDPROC
00 24E8 COLORSALREADYSET
00 250D NOCTRLLETTER
00 251E NONUMBER
00 2524 BIGLETTERS
00 254B SUBDIRTEXT
00 2554 GOTOLOADER
00 255C DISKNOTCHANGED1
00 2568 SETTURBOOFF
00 256B NOSHIFT
00 2F80 COMPRESSEDMAP
00 2634 GENERATECOMPRESSEDMAP
00 2673 JUMPFORWARD
00 2680 OFFSETTOBIG
00 2696 GETNEXTMAPWORD
00 26A1 SECTOR00
00 26AC OPS01
00 26B8 NOTEQAL01
00 26E3 ADDTOCOMPRESSEDMAP
00 26F5 XXXXBLA
00 26FD NOINC013
00 26FE FLUSHBUFFER
00 2709 NOFLUSH
00 270A ENDMAKINGMAP
00 270D LOADERGO
00 2720 NORUNFROMDOS
00 2731 AFTERWORMSTART
00 276D MOVELOOP1
00 2785 CLEARLOOP1
00 2797 NOZPAGE
00 27BE FILETOOPEN
00 27C1 ADDSPEEDPROC
00 27DB HAPPYRELOCATE
00 27FB LABEL72X
00 27FF TURBORELOCADDR
00 280A LABEL73
00 2825 NOHAPPYLOADER
00 2826 HAPPYUSMOVEDPROC
00 283D COMMANDLOOP
00 283E HAPPYSPEED
00 2849 DELAYLOOPCMD
00 2853 XJSR1
00 2867 XJSR2
00 286D XJSR3
00 2873 XJSR4
00 2878 XJSR5
00 287B WAITFORENDOFTRANSMISSION
00 2884 XJSR6
00 288E DOUBLEACK
00 288E XJSR7
00 289A READSECTORLOOP
00 289A XJSR8
00 289F XJSR9
00 28A7 XJSRA
00 28AE ERRORHERE
00 28B9 ENDOFTRANSMISSION
00 28C7 SECTRANSREG
00 28DD PUTSIOBYTE
00 28DE WAITFORSERIAL
00 28F1 ADDCHECKSUM
00 28F9 GETSIOBYTE
00 28FB EXTERNALLOOP
00 28FF INTERNALLOOP
00 290F ACKRECEIVE
00 2925 ENDHAPPYUSPROC
00 2925 BLOKDANYCHIO_GETUSSPEED
00 2931 DIRMAPEND
00 2934 LABEL39
00 2948 DISCNOTCHANGED2
00 2970 LABEL80
00 297E NONEXTMAPSECTOR
00 29A0 NOINCH
00 29D0 LABEL79
00 29FD LABEL75
00 2A0E LABEL81
00 2A1C LABEL82
00 2A2A READPERCOM
00 2A2F READPERCOMRETRY
00 2A43 PERCOMERROR
00 2A48 SET1SECT128
00 2A53 BLOKDANYCHIO_PERCOM
00 2A5F READFIRSTSECT
00 2A75 READSECTOR
00 2A7E READSECTOR1
00 2A8C DISKREADRETRY
00 2A99 LABEL85
00 2AA3 BLOKDANYCHIO
00 2AAF DISKRETRYCOUNT
00 2AB0 PRINTXY
00 2ADC LABEL92
00 2AF9 LABEL90
00 2B00 LABEL91
00 2B08 LABEL89
00 2B1A LABEL93
00 2B2B LABEL88
00 2B32 LABEL87
00 2B38 LABEL94
00 2B3D GOERRORDISP
00 2B40 GOSIO
00 2B48 STANDARDSPEED
00 2B4B TABLE2DCB
00 2B53 IOTABLEADDR
00 2B5D CLOSE1
00 2B5F CLOSEX
00 2B67 GETKEY
00 2BAB GKEYERROR
00 2BAE KDRIVER
00 2BB1 DISCCHANGECHECK
00 2BBA LABEL98
00 2BC7 CHANGEDD
00 2BC8 ASTERIKS
00 2BE6 GETHEXNUMBER
00 2BF6 GETHEX4BITS
00 2C01 ISNUMBER
00 2C02 SETDRIVENR
00 2C15 SETDRIVELETTER
00 2C24 SETBLOKDANYCHDRIVE
00 2C31 MEMLOPRINT
00 2C68 MEMLOVALUE
00 2C6E XJSRTABLEL
00 2C78 XJSRTABLEH
00 2C82 HAPPYOFFSET
00 2C84 DENSITYCODES
00 2C87 ONTEXT
00 2C8A OFFTEXT
00 2C8D PDVMASKTEMP
00 2C8E PERCOMDATA
00 2C9A FIRSTSECTORSTABLE
00 25C0 GENERATECOMPRESSEDMAP
00 25FF JUMPFORWARD
00 260C OFFSETTOBIG
00 2622 GETNEXTMAPWORD
00 262D SECTOR00
00 2638 OPS01
00 2644 NOTEQAL01
00 266F ADDTOCOMPRESSEDMAP
00 2681 XXXXBLA
00 2689 NOINC013
00 268A FLUSHBUFFER
00 2695 NOFLUSH
00 2696 ENDMAKINGMAP
00 2699 LOADERGO
00 26AC NORUNFROMDOS
00 26BD AFTERWORMSTART
00 26F9 MOVELOOP1
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 2D00 FIRSTSECTORBUFF
00 2D00 PROGRAMEND
00 2D80 DIRMAPSECTORBUFF
00 2F80 DIRSECTORBUFF
00 2C8E FIRSTRUN
00 2C98 NOSHIFTBOOT
00 2CA1 BASSTATPRINT
00 2CAA BRAKBASICA
00 2CAC TESTQMEGLOOP
00 2CBE QSTATPRINT
00 2CC7 BRAKQMEGA
00 2CDF QMEGSTRING
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 0080 MAPCOUNTER
00 0082 COMPRESSEDMAPCOUNTER
00 0084 MAPCOUNTERMEM
+1969 -2062
View File
File diff suppressed because it is too large Load Diff
BIN
View File
Binary file not shown.