[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Disassembling an FST... New email address
Hello,
First of all here is my new email address: vignau@cybercable.fr (it is very
fast)
Then, in response to the FSTs disassembly, a short present:
*
* FST: proDOS
*
lst off
rel
typ $bd
dsk Pro.FST.l
*-------------------------------------- Equates
DEV_DISPATCHER EQU $01FC00
ALLOC_SEG EQU $01FC1C
RELEASE_SEG EQU $01FC20
SWAP_OUT EQU $01FC34
DEREF EQU $01FC38
LOCK_MEM EQU $01FC68
UNLOCK_MEM EQU $01FC6C
MOVE_INFO EQU $01FC70
*-------------------------------------- Macros
use 4/Misc.Macs
use 4/Util.Macs
*-------------------------------------- Code
ASC 'FST ' ; FST signature
ADRL L0072 ; call handler entry point
ADRL L013F ; GS/OS internal entry point! The FSTSpecific handler
DW $0001 ; file system ID
L000E DW $3003 ; attributes (See Programmer's ref for sys 6)
DW $0402 ; version (v4.02)
DW $0200 ; block size (oh! 512 bytes)
ADRL $00010000 ; max volume size (blocks) : true, 65536 blocks
ADRL $00000007
ADRL $01000000 ; max file size (bytes) : yep! 16mb
ADRL $00000000
STR 'ProDOS' ; FST name
STR 'ProDOS FST v04.02'
DW $0000
STR 'ProDOS FST written by Rob Turner. V4.02'
L0072 PHK
PLB
REP #$30
CPX #$0067
BCS L007E
JMP (L0149+2,X)
L007E LDA #$0001
L0081 SEC
L0082 PHA
PHP
BCC L00A8
LDA L05E5
BPL L00A8
LDX #L01E5
LDY #^L01E5
LDA #$0000
JSL $01FC48
BCS L00A8
JSL DEREF
STX $98
STY $9A
LDA [$98]
JSL $01FC28
L00A8 JSL UNLOCK_MEM
PLP
PHP
BCC L00DC
LDA $02,S
AND #$00FF
CMP #$002D ; Error codes
BEQ L00C4
CMP #$005A
BEQ L00C4
CMP #$0051
BNE L00DC
L00C4 LDA $88
ORA $8A
BEQ L00DC
LDY #$0023
LDA [$88],Y
INC
BEQ L00DC
LDA #$FFFF
STA [$88],Y
LDA $01,S
JSR L1742
L00DC LDA $90
ORA $92
BEQ L011F
LDA L063A
AND #$0400
BEQ L011F
LDY #$001F
LDA [$90],Y
AND #$8000
EOR #$8000
STA $AC
LDY #$0014
LDA [$8C],Y
AND #$7FFF
ORA $AC
STA [$8C],Y
LDA L05DD
BEQ L011F
LDA L05D9
BNE L011F
LDY #$001F
LDA [$90],Y
AND #$8007
BEQ L011F
LDY #$0025
LDA [$88],Y
INC
STA [$88],Y
L011F LDA L0307
BEQ L0136
LDA $30
PHA
LDX L0309
PHX
PHY
LDA #$0040
LDX #$0000
JSL $01FCC4
L0136 PLP
PLA
ORA L060D
JMPL $01FC40
L013F PHK
PLB
CPX #$0009
BCS L0149
JMP (L01B1,X)
L0149 LDA #$0001
RTL
GS/OS calls indexes : read GS/OS reference & Pgm's Ref for Sys6
for more information on the calls that must be supported by an FST.
If I say Create, where do you jump to ?
DA L2278
DA L2AB0
DA L007E
DA L2D51
DA L3360
DA L362F
DA L3789
DA L3967
DA L007E
DA L007E
DA L3AB0
DA L007E
DA L007E
DA L007E
DA L007E
DA L3AEB
DA L007E
DA L3FB8
DA L45C7
DA L4D43
DA L4D57
DA L4D80
DA L4E43
DA L4E5E
DA L51EB
DA L007E
DA L007E
DA L5206
DA L007E
DA L007E
DA L007E
DA L562D
DA L007E
DA L565A
DA L565F
DA L56FC
DA L5713
DA L007E
DA L007E
DA L007E
DA L007E
DA L007E
DA L007E
DA L007E
DA L007E
DA L007E
DA L007E
DA L007E
DA L007E
DA L007E
Ya know what it is ? FSTSpecific subcalls (An application can directly talk
to an FST
despite what has been written above)
L01B1 DA L5923
DA L21E2
DA L21EE
DA L21F0
DA L21F2
L01BB ASC 'cant.find.me'
DW $0000
L01C9 DW $0002
L01CB DW $0004 ; Oh ! Fine ! Indexes in dir blocks
DW $002B
DW $0052
DW $0079
DW $00A0
DW $00C7
DW $00EE
DW $0115
DW $013C
DW $0163
DW $018A
DW $01B1
DW $01D8
L01E5 DW $0003
DW $0A0C
DW $000E
L01EB DB L0264-L01EC
L01EC ASC 'ProDOS names must begin with a letter. '
ASC 'They may be up to 15 characters long and '
ASC 'may contain letters, digits and periods.'
L0264 ......
And the rest is in Paris, France !
Antoine Vignau
Brutal Deluxe Software