Path: news1.icaen!news.uiowa.edu!NewsNG.Chicago.Qual.Net!nntp.news.xara.net!xara.net!news-lond.gip.net!news-raspail.gip.net!news.gsl.net!gip.net!isdnet!oceanite.cybercable.fr!not-for-mail From: "Antoine Vignau" Newsgroups: comp.sys.apple2 Subject: Re: Disassembling an FST... New email address Date: 16 Sep 1998 06:08:07 GMT Organization: Brutal Deluxe Software Lines: 244 Message-ID: <01bde137$941cacc0$3405c6d4@matou.cybercable.fr> References: <1998091503380100.XAA04188@ladder03.news.aol.com> <1998091604443500.AAA09072@ladder01.news.aol.com> NNTP-Posting-Host: d052.paris-5.cybercable.fr X-Newsreader: Microsoft Internet News 4.70.1155 Xref: news1.icaen comp.sys.apple2:139454 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