|
|
IDENTIFICATION SERVEUR : 10.0.97.129 - CLIENT : 23.20.245.192 |
|
Voir le sujet précédent :: Voir le sujet suivant |
Auteur |
Message |
qkumba
Inscrit le: 29 Jan 2012 Messages: 171
|
Posté le: Mer 01 Nov 2017, 20:06 Sujet du message: Drol (Broderbund, 1983) |
|
|
Drol is a very popular run-and-shoot game. Rescue the children and their pets, and finally the mother, too. You'll need strategy as well as skill to avoid all kinds of enemies. Let's go.
The disk is a hybrid 13/16 sector booter. The 16-sector bootsector looks like this:
Code: | 0800 .BYTE $01
0801 LDX #$00
0803 LDA $800,X
0806 STA $200,X
0809 INX
080A BNE $0803
080C JMP $020F |
Copy self to $200 and resume execution from there.
Code: | 080F LDY #$AB
0811 TYA
0812 STA $3C
0814 LSR
0815 ORA $3C
0817 CMP #$FF
0819 BNE $0824
081B CPY #$D5
081D BEQ $0824
081F TXA
0820 STA $0800,Y
0823 INX
0824 INY
0825 BNE $0811 |
Build 5-and-3 decoder table at $800.
Code: | 0827 STY $3D
0829 STY $26
082B LDA #$03
082D STA $27
082F LDX $2B
0831 JSR $025D
0834 JSR $02D1
0837 JMP $0301 |
Read and decode sector the 5-and-3 encoded sector 0 to $0300, the resume at $0301.
Code: | 0301 STY $48
0303 LDY #$00
0305 TYA
0306 LDX #$20
0308 STA $4000,Y
030B INY
030C BNE $0308
030E INC $030A
0311 DEX
0312 BNE $0308
0314 LDA $C057
0317 LDA $C052
031A LDA $C055
031D LDA $C050 |
Erase and display graphics screen 2.
Code: | 0320 LDA $300,Y
0323 EOR $48
0325 STA $100,Y
0328 INY
0329 BNE $0320
032B LDX #$CF
032D TXS
032E RTS |
Decode data and store it directly on the stack, then run it. The key is stored at $48 and comes as a side-effect from the 5-and-3 decoder code. The value is #$99.
The entrypoint for the stack code is here:
and it looks like this:
Code: | 0130 LDX #$04
0132 STX $86
0134 LDY #$00
0136 STY $83
0138 STX $84
013A LDX $2B
013C LDA $C08C,X
013F BPL $013C
0141 CMP #$BF
0143 BNE $013C
0145 LDA $C08C,X
0148 BPL $0145
014A CMP #$D7
014C BNE $0141
014E LDA $C08C,X
0151 BPL $014E
0153 CMP #$D5
0155 BNE $014A
0157 LDA $C08C,X
015A BPL $0157
015C ROL
015D STA $85
015F LDA $C08C,X
0162 BPL $015F
0164 AND $85
0166 STA ($83),Y
0168 INY
0169 BNE $0157
016B ASL $C000
016E LDA $C08C,X
0171 BPL $016E
0173 CMP #$D4
0175 BNE $0130
0177 INC $84
0179 DEC $86
017B BNE $0157
017D RTS |
So we have a 4-and-4 decoder, using #$BF #$D7 #$D5 as the data prologue (no address prologue!), and #$D4 as epilogue (no checksum!), reading a single 4-page sector into $0400-07FF. Then the RTS fetches the next address from the stack:
So we continue at $0400.
Code: | 0400 LDY #$00
0402 LDA $0600,Y
0405 STA $BE00,Y
0408 LDA $0700,Y
040B STA $BF00,Y
040E INY
040F BNE $0402 |
Copy self to $BE00-BFFF for later.
Code: | 0411 LDX $2B
0413 STX $BF49
0416 JSR $BEE0
0419 LDA $C083
041C LDA $C083
041F LDY #$00
0421 LDA #$BF
0423 STY $FFFC
0426 STA $FFFD
0429 STY $03F2
042C STA $03F3
042F LDY #$03
0431 STY $03F0
0434 STA $03F1
0437 STY $36
0439 STA $37
043B STY $38
043D STA $39
043F EOR #$A5
0441 STA $03F4 |
Hook all interesting vectors to point to reboot code.
Code: | 0444 TSX
0445 TXS
0446 INX
0447 TSX
0448 TXS
0449 INX
044A TSX
044B TXS
044C INX
044D TSX
044E RTS |
This does nothing but RTS. If you look carefully, you'll see that the stack pointer is read but not written, so our next point:
takes us here:
Code: | 0500 LDY #$00
0502 LDX #$20
0504 TYA
0505 STA $2000,Y
0508 INY
0509 BNE $0505
050B INC $0507
050E DEX
050F BNE $0505
0511 BIT $C054 |
Erase and display graphics screen 1.
Code: | 0514 LDA #$02
0516 JMP $0540 |
Seek to track 1, and return again, so our next point:
takes us here:
Code: | 0450 TSX
0451 TXA
0452 CLC
0453 ADC #$28
0455 TAX
0456 TXS |
Change the stack pointer to the top of the stack.
Code: | 0457 LDX #$00
0459 LDY $BF49
045C LDA $C08C,Y
045F BPL $045C
0461 CMP #$DF
0463 BNE $045C
0465 NOP
0466 LDA $C08C,Y
0469 BPL $0466
046B CMP #$DE
046D BNE $045C
046F NOP
0470 LDA $C08C,Y
0473 BPL $0470
0475 CMP #$DD
0477 BNE $045C
0479 NOP
047A LDA $C08C,Y
047D BPL $047A
047F SEC
0480 ROL
0481 STA $00
0483 LDA $C08C,Y
0486 BPL $0483
0488 AND $00
048A PHA
048B DEX
048C BNE $047A
048E LDA $C08C,Y
0491 BPL $048E
0493 CMP #$D5
0495 BNE $045C
0497 RTS |
Another 4-and-4 decoder, using #$DF #$DE #$DD as the data prologue (no address prologue), and #$D5 as epilogue (no checksum), reading 1 sector directly into the stack, and then running that code.
Our next point:
takes us here:
Code: | 0180 LDA $C08C,Y
0183 BPL $0180
0185 CMP #$D5
0187 BNE $0180
0189 NOP
018A LDA $C08C,Y
018D BPL $018A
018F CMP #$AA
0191 BNE $0180
0193 NOP
0194 LDA $C08C,Y
0197 BPL $0194
0199 CMP #$B5
019B BNE $0180
019D NOP
019E LDA $C08C,Y
01A1 BPL $019E
01A3 SEC
01A4 ROL
01A5 STA $01FF
01A8 LDA $C08C,Y
01AB BPL $01A8
01AD AND $01FF
01B0 STA $00,X
01B2 INX
01B3 BNE $019D
01B5 LDA $C08C,Y
01B8 BPL $01B5
01BA CMP #$D4
01BC BNE $0180 |
Another 4-and-4 decoder, using #$D5 #$AA #$B5 as the data prologue (no address prologue), and #$D4 as epilogue (no checksum), reading 1 sector directly into the zpage, and then running from the next location on the stack.
Our next point:
Code: | 01BE LDA #$08
01C0 RTS |
combined with this:
performs a seek to track 4, and then runs from the next location on the stack.
Our next point:
takes us here:
Code: | BE0D LDX $BF49
BE10 LDA #$04
BE12 STA $A1
BE14 LDY #$00
BE16 LDA #$5C
BE18 STY $A2
BE1A STA $A3
BE1C LDA $C08C,X
BE1F BPL $BE1C
BE21 CMP #$B5
BE23 BNE $BE1C
BE25 LDA $C08C,X
BE28 BPL $BE25
BE2A CMP #$B6
BE2C BNE $BE21
BE2E LDA $C08C,X
BE31 BPL $BE2E
BE33 CMP #$B7
BE35 BNE $BE2A
BE37 LDA $C08C,X
BE3A BPL $BE37
BE3C ROL
BE3D STA $A0
BE3F LDA $C08C,X
BE42 BPL $BE3F
BE44 AND $A0
BE46 STA ($A2),Y
BE48 INY
BE49 BNE $BE37
BE4B ASL $FFFF
BE4E LDA $C08C,X
BE51 BPL $BE4E
BE53 CMP #$D4
BE55 BNE $BE10
BE57 INC $A3
BE59 DEC $A1
BE5B BNE $BE37
BE5D JMP $BEA0
...
BEA0 JSR $5C00 |
Another 4-and-4 decoder, using #$B5 #$B6 #$B7 as the data prologue (no address prologue), and #$D4 as epilogue (no checksum), reading a single 4-page sector into $5C00-5FFF, and then running it.
That takes us here:
Code: | 5C00 LDA #$04
5C02 JSR $5F00
5C05 LDA #$00
5C07 STA $E1
5C09 JSR $5E00
5C0C JMP $5000
...
5E00 LDY #$00
5E02 LDA #$50
5E04 STY $E2
5E06 PHA
5E07 JSR $5E30
5E0A LDY $E2
5E0C CLC
5E0D LDA $BF48
5E10 ADC $5E28,Y
5E13 JSR $5F03
5E16 PLA
5E17 CLC
5E18 ADC #$02
5E1A LDY $E2
5E1C INY
5E1D CPY #$04
5E1F BCC $5E04
5E21 RTS
...
5E28 .BYTE $01,$FF,$01,00 |
Seek to track 2, read four 2-page sectors to $5000-57FF, while alternating between track 2 and 2.25, and then run it.
The read routine:
Code: | 5E30 PHA
5E31 LDA $E1
5E33 AND #$07
5E35 TAY
5E36 LDA $5E50,Y
5E39 STA $90
5E3B LDA $E1
5E3D LSR
5E3E ORA #$AA
5E40 STA $91
5E42 LDA $E1
5E44 ORA #$AA
5E46 STA $92
5E48 PLA
5E49 INC $E1
5E4B JMP $5E60
...
5E50 .BYTE $D5, $B5, $B7, $BC, $DF, $D4, $B4, $DB
...
5E60 STA $94
5E62 LDX #$02
5E64 STX $97
5E66 LDY #$00
5E68 LDA $94
5E6A STY $95
5E6C STA $96
5E6E LDX $BF49
5E71 LDA $C08C,X
5E74 BPL $5E71
5E76 CMP $90
5E78 BNE $5E71
5E7A LDA $C08C,X
5E7D BPL $5E7A
5E7F CMP $91
5E81 BNE $5E76
5E83 LDA $C08C,X
5E86 BPL $5E83
5E88 CMP $92
5E8A BNE $5E7F
5E8C LDA $C08C,X
5E8F BPL $5E8C
5E91 ROL
5E92 STA $98
5E94 LDA $C08C,X
5E97 BPL $5E94
5E99 AND $98
5E9B STA ($95),Y
5E9D INY
5E9E BNE $5E8C
5EA0 ASL $FFFF
5EA3 LDA $C08C,X
5EA6 BPL $5EA3
5EA8 CMP #$D4
5EAA BNE $5E62
5EAC INC $96
5EAE DEC $97
5EB0 BNE $5E8C
5EB2 RTS |
Another 4-and-4 decoder, but the data prologue changes per-sector, and #$D4 as epilogue. It looks like the intention was to have eight different prologues, but because the sectors are twice the size, only the first four are used.
Our next point:
Code: | 5000 LDX $BF4A
5003 BPL $5008
5005 JMP $5300 |
Checking if the main code has been loaded, and jumping to $5300 if not, to load it.
Otherwise we go here:
Code: | 5008 INX
5009 TXA
500A AND #$03
500C TAX
500D BIT $44
500F BMI $5013
5011 LDX #$00
5013 STX $BF4A
5016 LDY $50F0,X
5019 LDA #$14
501B JSR $5500
501E LDX $BF4A
5021 LDY #$40
5023 LDA $50F8,X
5026 JSR $5500
5029 LDA #$08
502B JSR $5700
502E LDA $C088,X
5031 RTS |
So we have a table-based loader for all of the other tracks. It means that we can use the disk's own RWTS to read the rest of the disk! We can start at track 5 and read all of the tracks. That will include the game code and all levels.
The read routine:
Code: | 5500 PHA
5501 STY $88
5503 JSR $5700
5506 LDX #$00
5508 LDY $88
550A LDA $5400,Y
550D STA $5703,X
5510 INY
5511 INX
5512 CPX #$0C
5514 BCC $550A
5516 JSR $5530
5519 LDA $88
551B CLC
551C ADC #$0C
551E TAY
551F LDA $5400,Y
5522 BEQ $552B
5524 PLA
5525 CLC
5526 ADC #$02
5528 BNE $5500
...
5530 LDA $BF48
5533 LSR
5534 LDX #$03
5536 AND #$0F
5538 TAY
5539 LDA $5610,Y
553C STA $A0,X
553E INY
553F TYA
5540 DEX
5541 BPL $5536
5543 JMP $570F
...
5610 .BYTE $FD, $F7, $F6, $F5
5614 .BYTE $EF, $EE, $ED, $EA
5618 .BYTE $DE, $DB, $D7, $D6
561C .BYTE $BF, $BA, $AF, $AA |
12 "sectors" per track, like Karateka, with prologue/epilogue sequences that change every four tracks.
Code: | 570F LDX #$0C
5711 STX $A4
5713 LDY #$00
5715 STY $5757
5718 STY $A5
571A LDX $BF49
571D LDA $C08C,X
5720 BPL $571D
5722 CMP $A0
5724 BNE $571D
5726 LDA $C08C,X
5729 BPL $5726
572B CMP $A1
572D BNE $571D
572F LDA $C08C,X
5732 BPL $572F
5734 CMP $A2
5736 BNE $571D
5738 LDY $A5
573A LDA $5703,Y
573D STA $5758
5740 INC $A5
5742 LDY $C08C,X
5745 BPL $5742
5747 LDA $5600,Y
574A ASL
574B ASL
574C ASL
574D ASL
574E LDY $C08C,X
5751 BPL $574E
5753 ORA $5600,Y
5756 STA $FF00
5759 INC $5757
575C BNE $5742
575E INC $5758
5761 LDA $C08C,X
5764 BPL $5761
5766 CMP $A3
5768 BNE $570F
576A DEC $A4
576C BNE $5738
576E RTS |
Using yet another 4-and-4 decoder, a single 12-page sector, which is decoded to 12 different addresses.
The track is relatively easy at that point. We can capture the zpage, and then ignore everything else until the RWTS is loaded.
The entire game is loaded from these regular tracks. We can fit a new RWTS at $BE00 by using the boot PROM to read the sectors for us.
Then we write them to a regular DOS disk occupying only 12 of the 16 sectors to avoid changing the code. |
|
Revenir en haut de page |
|
 |
toinet Site Admin
Inscrit le: 15 Juin 2007 Messages: 2928 Localisation: Le Chesnay, France
|
Posté le: Dim 05 Nov 2017, 16:42 Sujet du message: |
|
|
To capture, here is what I wrote in 2015 for Drol:
Code: |
*
* Drol
* (c) 1983, Broderbund
* (k) 2015, LoGo
*
* Stage 3 - Get all!
mx %11
org $1000
lst off
ptrSTACK = $2000
ptrZP = $2800
ptrTRACK = $3000
zpPHASE = $ff
*---------- Some jumps
lst on
jmp initSLOT ; turn drive on
jmp moveARM ; move arm
jmp nextPHASE ; move to next track
jmp readSTACK ; read stack
jmp readZP ; read zero page
jmp read5C ; read 5C00
jmp readTRACK ; read a track
jmp copyDISK ; copy $C 4*4 sec on drive 2
lst off
*----------
initSLOT ldx #$60 ; slot 6
stx LBF49
lda #0 ; phase 0
sta zpPHASE
lda $c089,x
rts
*----------
readSTACK = *
LDX #$00 ; load data
LDY LBF49
L045C lda $c000
bpl L045D
sta $c010
rts
L045D LDA $C08C,Y
BPL L045D
CMP #$DF
BNE L045C
NOP
L0466 LDA $C08C,Y
BPL L0466
CMP #$DE
BNE L045C
NOP
L0470 LDA $C08C,Y
BPL L0470
CMP #$DD
BNE L045C
NOP
L047A LDA $C08C,Y ; 4*4 encoded nibbles
BPL L047A
SEC
ROL
STA $00
L0483 LDA $C08C,Y
BPL L0483
AND $00
* PHA
sta ptrSTACK,x ; and store in my buffer!!
DEX
BNE L047A
L048E LDA $C08C,Y
BPL L048E
CMP #$D5
BNE L045C
RTS
ds \
*----------
readZP = *
LDX #$00 ; load data
LDY LBF49
L0181 lda $c000
bpl L0182
sta $c010
rts
L0182 LDA $C08C,Y ; Read nibbles
BPL L0182
CMP #$D5
BNE L0181
NOP
L018B LDA $C08C,Y
BPL L018B
CMP #$AA
BNE L0181
NOP
L0195 LDA $C08C,Y
BPL L0195
CMP #$B5
BNE L0181
L019E NOP
L019F LDA $C08C,Y ; 4*4 encoded
BPL L019F
SEC
ROL
STA L01FF
L01A9 LDA $C08C,Y
BPL L01A9
AND L01FF
* STA $00,X ; Save in zero page
sta ptrZP,x ; and store in my buffer!!
INX
BNE L019E
L01B6 LDA $C08C,Y
BPL L01B6
CMP #$D4
BNE L0181
* LDA #$08
RTS
L01FF ds 1
ds \
*----------
moveARM = *
LDA zpPHASE ; move arm to phase 2
L0540 LDX #$13 ; std timing for track 2 track
HEX 2C
LDX #$0A ; timing for half-track
STX L05AD+1
STA L05D0
CMP LBF48
BEQ L05A9
LDA #$00
STA L05D0+1
L0555 LDA LBF48
STA L05D0+2
SEC
SBC L05D0
BEQ L0598
BCS L056A
EOR #$FF
INC LBF48
BCC L056F
L056A ADC #$FE
DEC LBF48
L056F CMP L05D0+1
BCC L0577
LDA L05D0+1
L0577 CMP #$0C
BCS L057C
TAY
L057C SEC
JSR L059C
LDA L05B8,Y
JSR L05AD
LDA L05D0+2
CLC
JSR L059F
LDA L05C4,Y
JSR L05AD
INC L05D0+1
BNE L0555
L0598 JSR L05AD
CLC
L059C LDA LBF48
L059F AND #$03
ROL
ORA LBF49
TAX
LDA $C080,X
L05A9 LDX LBF49
RTS
L05AD LDX #$13
L05AF DEX
BNE L05AF
SEC
SBC #$01
BNE L05AD
RTS
L05B8 HEX 01302824201E1D1C1C1C1C1C
L05C4 HEX 702C26221F1E1D1C1C1C1C1C
L05D0 DS 3
*---
nextPHASE inc zpPHASE
inc zpPHASE
rts
ds \
*--- The RWTS
read5C = *
LDX LBF49
LBE10 LDA #$04 ; load 4 pages
STA $A1
LDY #$00 ; at $5C00
LDA #$5C
STY $A2
STA $A3
LBE1C lda $c000
bpl LBE1D
sta $c010
rts
LBE1D LDA $C08C,X
BPL LBE1D
LBE21 CMP #$B5
BNE LBE1C
LBE25 LDA $C08C,X
BPL LBE25
LBE2A CMP #$B6
BNE LBE21
LBE2E LDA $C08C,X
BPL LBE2E
CMP #$B7
BNE LBE2A
LBE37 LDA $C08C,X ; 4*4 encoded nibbles
BPL LBE37
ROL
STA $A0
LBE3F LDA $C08C,X
BPL LBE3F
AND $A0
STA ($A2),Y
INY
BNE LBE37
ASL $FFFF ; waste time
LBE4E LDA $C08C,X
BPL LBE4E
CMP #$D4
BNE LBE10
INC $A3 ; RAM++
DEC $A1 ; nbsec--
BNE LBE37
rts
LBF48 DB $00 ; current phase
LBF49 DB $60 ; slot*16
ds \
*---------- Copy tracks on drive 2 (start at T5)
* from drive 1, track 5-22, $3000..$3BFF
* to drive 2, track 5-22, $3000..$3BFF
copyDISK = *
lda #10 ; the first phase
sta zpPHASE
copyDISK1 jsr readTRACK ; moves arm
lda zpPHASE ; track
lsr
sta myIOB+4
jsr $fdda ; write out track
lda #0 ; sector
sta myIOB+5
lda #>ptrTRACK ; pointer
sta myIOB+9
]lp lda #>myIOB ; call RWTS
ldy #<myIOB
jsr $03D9
inc myIOB+9
inc myIOB+5
lda myIOB+5
cmp #$0C
bcc ]lp
jsr nextPHASE
lda zpPHASE
cmp #$46 ; 23*2
bcc copyDISK1
rts
myIOB hex 01 ; 00
hex 60 ; 01
hex 02 ; 02
hex fe ; 03
hex 05 ; 04 track
hex 00 ; 05 sector
da myDCT ; 06 pointer
da ptrTRACK ; 08 buffer
hex 00 ; 0A
hex 00 ; 0B
hex 02 ; 0C write command
hex 00 ; 0D error code
hex 00 ; 0E
hex 60 ; 0F
hex 02 ; 10
myDCT hex 0001efd8 ; std DCT
ds \
*---------- Read an entire track (start at T5)
readTRACK = * ; read an entire track
lda zpPHASE
jsr moveARM
LDX #$00 ; move RAM pointers
L550A LDA L5400,X
STA L5703,X
INX
CPX #$0C
BCC L550A
LDA LBF48 ; set the markers
LSR
LDX #$03
]lp AND #$0F
TAY
LDA L5610,Y ; marker list
STA $A0,X
INY
TYA
DEX
BPL ]lp
*--- Now, read data
L570F LDX #$0C ; we want C sectors
STX $A4
LDY #$00
STY L5756+1
STY $A5
LDX LBF49 ; BF49
L571D LDA $C08C,X
BPL L571D
CMP $A0
BNE L571D
L5726 LDA $C08C,X
BPL L5726
CMP $A1
BNE L571D
L572F LDA $C08C,X
BPL L572F
CMP $A2
BNE L571D
L5738 LDY $A5 ; RAM pointer
LDA L5703,Y
STA L5756+2
INC $A5
L5742 LDY $C08C,X
BPL L5742
LDA L5600,Y
ASL
ASL
ASL
ASL
L574E LDY $C08C,X
BPL L574E
ORA L5600,Y
L5756 STA $FF00
INC L5756+1
BNE L5742
INC L5756+2
L5761 LDA $C08C,X
BPL L5761
CMP $A3
BNE L570F
DEC $A4
BNE L5738
RTS
*--- Pointers in RAM, useless
L5400 HEX 303132333435363738393A3B
HEX 00000000
L5703 HEX 000000000000000000000000
ds \
*--- Beautiful table
L5600 HEX F6EDEBFDDFD6AAF5EFAEF7D5B7EEFAFB
*--- A list of markers
* $A0..$A2 for prolog
* $A3 is epilog
L5610 HEX EADEDDDBDAD7BFBEBDBBBAB6B5AFADAB
*--- nothing...
HEX 00000000000000000000000000000000
HEX 00000000000000000000000000000000
HEX 00000000000000000000000000000000
HEX 00000000000000000000000000000000
HEX 00000000000000000000000000000000
HEX 00000000000000000000000000000000
HEX 00000000000000000000000000000000
HEX 00000000000000000000000000000000
HEX 00000000000000000000
*--- The nibble table
L56AA HEX 060C000D090B
HEX 0000000000040D0C0000090200010809
HEX 00000000000000000000000000000000
HEX 00000000000B050C0000060C00000604
HEX 00000000000000000000030200010D08
HEX 000000000007000A00000E0F00030000
|
|
|
Revenir en haut de page |
|
 |
qkumba
Inscrit le: 29 Jan 2012 Messages: 171
|
Posté le: Lun 06 Nov 2017, 19:49 Sujet du message: |
|
|
Here's my tracer. The code at $8600-86F7 (not shown) is the boot PROM.
Code: | 86F8 LDA #$05
86FA STA $0838
86FD LDA #$87
86FF STA $0839
8702 JMP $0801
8705 LDA #$4C
8707 STA $032B
870A LDA #$17
870C STA $032C
870F LDA #$87
8711 STA $032D
8714 JMP $0301
8717 LDX #$D1
8719 TXS
871A LDA #$87
871C PHA
871D LDA #$22
871F PHA
8720 JMP $0130
8723 LDA #$4C
8725 STA $0497
8728 LDA #$33
872A STA $0498
872D LDA #$87
872F STA $0499
8732 RTS
8733 LDA #$3E
8735 STA $BE5E
8738 LDA #$87
873A STA $BE5F
873D RTS
873E LDA #$60
8740 STA $5C0C
8743 JSR $5C00
8746 JMP $FF59 |
That's it. Then you can
Code: | LDY #$64
LDA #phase
JSR $5500 |
to read 3 tracks at a time to $9700-BAFF. |
|
Revenir en haut de page |
|
 |
toinet Site Admin
Inscrit le: 15 Juin 2007 Messages: 2928 Localisation: Le Chesnay, France
|
Posté le: Lun 06 Nov 2017, 20:18 Sujet du message: |
|
|
That is cool!
I've never finished the crack (ie. rewrite the read routines), same unfinished work with Bruce Lee.
av |
|
Revenir en haut de page |
|
 |
qkumba
Inscrit le: 29 Jan 2012 Messages: 171
|
Posté le: Mar 07 Nov 2017, 19:33 Sujet du message: |
|
|
Yes, to maintain 48kb only, you have only a single page available in which to place the entire RTS. That leaves boot PROM as the only technique that I can see, and some page-swapping code (there are various pages that are free at different times). |
|
Revenir en haut de page |
|
 |
|
|
Vous ne pouvez pas poster de nouveaux sujets dans ce forum Vous ne pouvez pas répondre aux sujets dans ce forum Vous ne pouvez pas éditer vos messages dans ce forum Vous ne pouvez pas supprimer vos messages dans ce forum Vous ne pouvez pas voter dans les sondages de ce forum
|
|