23 January 2012, 14:27 | #1 |
Registered User
Join Date: Jan 2008
Location: Warsaw/Poland
Age: 55
Posts: 1,957
|
Open source small ROM parts
I started next small project. This time I reworked/updated short Amiga ROM modules.
http://wt.exotica.org.uk/test.html At first new filesystem.resource with DOS6/DOS7/DOS8 support. Seems that DOS7 and DOS8 now works for Amiga68k. Here is filesystem.resource source. Code:
; Resourced version of filesystem.resource (40.1) from Amiga ROM 3.1 for Amiga68k ROM 1.0 ; For easy recognition all changes are done using lower cases and ";" signs ; Original code is removed with ";" signs ; New code is added using lower cases only ; We made it... ; OS Group: Bryce Nesbitt, Michael Sinz, Peter Cherna, Darren Greenwald, Randell Jesup, Jerry Horanoff ; GFX: Allan Havemose, Bart 'Kodiak' Whitebook, Spence Shanson, Steve Beats, Chris Green, Ray Brand, Jim Barkley ; Special Projects: Eric Cotton, Martin Hunt, Bill Koester, Martin Taillefer, Brian Jackson, Kaori Kuwata, David Junod, Palmyra Pawlik, Kevin Klop ; NET: Brian Jackson, Greg Miller, Kenneth Dyke ; GUI: Peter Cherna, Martin Taillefer, David Junod, Kaori Kuwata ; Others: Andy Finkel, Dale 'Duck' Luck, Jim 'Jimm' Mackraz, Jeff Porter, Carolyn Scheppner, David Haynie, ; Lauren Brown, CATS (Commodore Amiga Technical Support), QA (Quality Assurance), SA (Software Assurance) ; Thanks to: Bill Hawes, Software Distillery ; Better than ever. ;lbC000000 ILLEGAL ; dc.l lbC000000 ; dc.l lbW00019E ; dc.l $1280850 ; dc.l FileSystemres.MSG ; dc.l filesysres401.MSG ; dc.l lbC000098 ;FileSystemres.MSG dc.b 'FileSystem.resource',0 ;filesysres401.MSG dc.b 'filesysres 40.1 (15.2.93)',$D,$A,0 ;lbC00004A MOVEA.L $12(A5),A2 ;lbC00004E MOVE.L (A2),D0 ; BEQ.S lbC00005E ; CMP.L 14(A2),D2 ; BEQ.S lbC00005C ; MOVEA.L D0,A2 ; BRA.S lbC00004E ;lbC00005C MOVEQ #1,D0 ;lbC00005E RTS ;lbC000060 MOVE.L #$10001,D1 ; JSR -$C6(A6) ; TST.L D0 ; BEQ.S lbC000080 ; MOVEA.L D0,A2 ; LEA $1A(A5),A0 ; MOVEA.L (A0),A1 ; MOVE.L A2,(A0) ; SUBQ.L #4,A0 ; MOVEM.L A0/A1,(A2) ; MOVE.L A2,(A1) ;lbC000080 RTS ;lbC000082 MOVE.L D2,14(A2) ; MOVE.L D1,$12(A2) ; CLR.L $16(A2) ; LEA filesysres401.MSG(PC),A0 ; MOVE.L A0,10(A2) ; RTS ;lbC000098 MOVEM.L D2/A2/A3/A5,-(SP) ; LEA FileSystemres.MSG(PC),A1 ; JSR -$1F2(A6) ; TST.L D0 ; BEQ.S lbC0000F6 ; MOVEA.L D0,A5 ; MOVE.L #$444F5305,D2 ;lbC0000B0 BSR.S lbC00004A ; BNE.S lbC0000BA ; MOVEQ #$1A,D0 ; BSR.S lbC000060 ; BEQ.S lbC0000CC ;lbC0000BA MOVE.L #$280001,D1 ; CMP.L $12(A2),D1 ; BLE.S lbC0000C8 ; BSR.S lbC000082 ;lbC0000C8 SUBQ.B #1,D2 ; BNE.S lbC0000B0 ;lbC0000CC MOVE.L #$554E4901,D2 ; BSR.L lbC00004A ; BNE.S lbC0000EE ; MOVEQ #$2A,D0 ; BSR.S lbC000060 ; BEQ.S lbC0000EE ; MOVEQ #0,D1 ; BSR.S lbC000082 ; BSET #3,$19(A2) ; BSET #7,$26(A2) ;lbC0000EE MOVEQ #0,D0 ;lbC0000F0 MOVEM.L (SP)+,D2/A2/A3/A5 ; RTS ;lbC0000F6 MOVEQ #$33,D0 ; ROL.L #2,D0 ; MOVE.L #$10001,D1 ; JSR -$C6(A6) ; TST.L D0 ; BEQ.S lbC0000EE ; MOVEA.L D0,A5 ; MOVE.B #8,8(A5) ; LEA FileSystemres.MSG(PC),A0 ; MOVE.L A0,10(A5) ; LEA filesysres401.MSG(PC),A0 ; MOVE.L A0,14(A5) ; LEA $12(A5),A3 ; MOVE.L A3,8(A3) ; ADDQ.L #4,A3 ; CLR.L (A3) ; MOVE.L A3,-(A3) ; LEA $20(A5),A2 ; MOVE.L #$444F5305,D2 ;lbC000138 MOVE.L #$280001,D1 ; BSR.L lbC000082 ; MOVEA.L A3,A0 ; MOVEA.L A2,A1 ; ADDQ.L #4,A0 ; MOVE.L 4(A0),D0 ; MOVE.L A1,4(A0) ; EXG D0,A0 ; MOVEM.L D0/A0,(A1) ; MOVE.L A1,(A0) ; ADDA.W #$1A,A2 ; SUBQ.B #1,D2 ; BNE.S lbC000138 ; LEA $A2(A5),A2 ; MOVE.L #$554E4901,D2 ; MOVEQ #0,D1 ; BSR.L lbC000082 ; MOVEA.L A3,A0 ; MOVEA.L A2,A1 ; ADDQ.L #4,A0 ; MOVE.L 4(A0),D0 ; MOVE.L A1,4(A0) ; EXG D0,A0 ; MOVEM.L D0/A0,(A1) ; MOVE.L A1,(A0) ; BSET #3,$19(A2) ; BSET #7,$26(A2) ; MOVEA.L A5,A1 ; JSR -$1E6(A6) ; MOVE.L A5,D0 ; BRA.L lbC0000F0 ;lbW00019E MatchTag ILLEGAL ; match word dc.l MatchTag ; match tag dc.l EndSkip ; end skip dc.b 1 ; flags dc.b $2E ; version dc.b 8 ; type dc.b $50 ; priority Values dc.l FileSystemres.MSG ; name dc.l filesysres401.MSG ; id string dc.l InitResource ; init code ; static values dc.l $444F5308 ; DOS8 dc.l $554E4901 ; UNI1 dc.l $002E0000 ; fse_Version (46.0) dc.l $00010001 ; cleared mem flags CheckID move.l $12(A5),D0 ; fsr_FileSysEntries Next move.l D0,A2 move.l (A2),D0 beq.b NoEntry cmp.l 14(A2),D5 ; fse_DosType bne.b Next moveq #1,D0 NoEntry rts InitResource movem.l D2-D7/A2/A4/A5,-(SP) movem.l Values(PC),D2-D7/A4 moveq #0,D4 exg D4,A4 move.l D2,A1 jsr -$1F2(A6) ; OpenResource tst.l D0 beq.b FirstTime move.l D0,A5 NextDOS bsr.b CheckID bne.b Found moveq #$1A,D0 bsr.b AllocAndLink beq.b Failed Found cmp.l $12(A2),D7 ; check for FFS Vxx.x ble.b InRange bsr.b SetInfo InRange subq.b #1,D5 bne.b NextDOS Failed move.l D6,D5 ; UNI1 bsr.b CheckID bne.b Bug moveq #$2A,D0 bsr.b AllocAndLink beq.b Quit bsr.b SetInfoZero bsr.b SetMe ; bra.b SetPtr ; possible bug for me, missing branch here Bug moveq #0,D0 ; or here must be move.l A5,D0 Quit movem.l (SP)+,D2-D7/A2/A4/A5 rts AllocAndLink move.l D4,D1 jsr -$C6(A6) ; AllocMem tst.l D0 beq.b NoMemory move.l D0,A2 AddHead lea $1A(A5),A0 move.l (A0),A1 move.l A2,(A0) subq.l #4,A0 movem.l A0/A1,(A2) move.l A2,(A1) NoMemory rts SetInfoZero moveq #0,D7 SetInfo movem.l D3/D5/D7/A4,10(A2) rts FirstTime moveq #71,D0 lsl.w #2,D0 ; 284=32(head)+8*26(8xDOS)+42(UNI)+2(unused) move.l D4,D1 jsr -$C6(A6) ; AllocMem tst.l D0 beq.b Quit move.l D0,A5 addq.l #8,D0 move.l D0,A2 move.w #$800,(A2)+ ; 8 - type move.l D2,(A2)+ ; 10 move.l D3,(A2)+ ; 14 move.l A2,8(A2) ; 18 addq.l #4,A2 move.l A2,-(A2) lea $20(A5),A2 LoopDos bsr.b SetInfo bsr.b AddHead lea $1A(A2),A2 subq.b #1,D5 bne.b LoopDos move.l D6,D5 ; UNI1 bsr.b SetInfoZero bsr.b AddHead bsr.b SetMe move.l A5,A1 jsr -$1E6(A6) ; AddResource SetPtr move.l A5,D0 bra.b Quit SetMe bset #3,$19(A2) bset #7,$26(A2) rts FileSystemres.MSG dc.b 'FileSystem.resource',0 filesysres401.MSG dc.b 'filesysres 46.0 (21.1.2012)',$D,$A,0 cnop 0,4 EndSkip |
23 January 2012, 14:29 | #2 |
Registered User
Join Date: Jan 2008
Location: Warsaw/Poland
Age: 55
Posts: 1,957
|
Here is misc.resource source.
Code:
; Resourced version of misc.resource (37.1) from Amiga ROM 3.1 for Amiga68k ROM 1.0 ; For easy recognition all changes are done using lower cases and ";" signs ; Original code is removed with ";" signs ; New code is added using lower cases only ; We made it... ; OS Group: Bryce Nesbitt, Michael Sinz, Peter Cherna, Darren Greenwald, Randell Jesup, Jerry Horanoff ; GFX: Allan Havemose, Bart 'Kodiak' Whitebook, Spence Shanson, Steve Beats, Chris Green, Ray Brand, Jim Barkley ; Special Projects: Eric Cotton, Martin Hunt, Bill Koester, Martin Taillefer, Brian Jackson, Kaori Kuwata, David Junod, Palmyra Pawlik, Kevin Klop ; NET: Brian Jackson, Greg Miller, Kenneth Dyke ; GUI: Peter Cherna, Martin Taillefer, David Junod, Kaori Kuwata ; Others: Andy Finkel, Dale 'Duck' Luck, Jim 'Jimm' Mackraz, Jeff Porter, Carolyn Scheppner, David Haynie, ; Lauren Brown, CATS (Commodore Amiga Technical Support), QA (Quality Assurance), SA (Software Assurance) ; Thanks to: Bill Hawes, Software Distillery ; Better than ever. ;lbC03FE6C ILLEGAL ; dc.l lbC03FE6C ; dc.l lbW03FF1C ; dc.l $1250846 ; dc.l miscresource.MSG ; dc.l misc3718191.MSG ; dc.l lbC03FEAC ;miscresource.MSG dc.b 'misc.resource',0 ;misc3718191.MSG dc.b 'misc 37.1 (8.1.91)',$D,$A,0 ; dc.b 0 ; dc.b 0 ; dc.b 0 ;lbC03FEAC MOVE.L A2,-(SP) ; LEA lbW03FF14(PC),A0 ; LEA lbW03FECC(PC),A1 ; SUBA.L A2,A2 ; MOVEQ #$32,D0 ; JSR -$54(A6) ; TST.L D0 ; BEQ.S lbC03FEC8 ; MOVEA.L D0,A1 ; JSR -$1E6(A6) ;lbC03FEC8 MOVEA.L (SP)+,A2 ; RTS ;lbW03FECC dc.w $A008 ; dc.w $800 ; dc.w $800A ; dc.l miscresource.MSG ; dc.l $A00E0600 ; dc.l $90140025 ; dc.l $90160001 ; dc.w 0 ;lbC03FEE4 MOVEA.L 4.W,A0 ; EXG A0,A6 ; LSL.W #2,D0 ; MOVE.W D0,D1 ; ADDQ.B #1,$127(A6) ; MOVE.L $22(A0,D1.W),D0 ; BNE.S lbC03FEFC ; MOVE.L A1,$22(A0,D1.W) ;lbC03FEFC MOVE.L A6,-(SP) ; MOVEA.L 4.W,A6 ; JSR -$8A(A6) ; Permit - This call is guaranteed to preserve all registers. ; MOVEA.L (SP)+,A6 ; EXG A0,A6 ; RTS ;lbC03FF0C LSL.W #2,D0 ; CLR.L $22(A6,D0.W) ; RTS ;lbW03FF14 dc.w $FFFF ; dc.w lbC03FEE4-lbW03FF14 ; dc.w lbC03FF0C-lbW03FF14 ; dc.w $FFFF ;lbW03FF1C MatchTag ILLEGAL ; match word dc.l MatchTag ; match tag dc.l EndSkip ; end skip dc.b 1 ; flags dc.b $26 ; version dc.b 8 ; type dc.b $46 ; priority dc.l miscresource.MSG ; name dc.l misc3718191.MSG ; id string dc.l InitResource ; init code InitResource move.l A2,-(SP) lea Vectors(PC),A0 ; Vectors lea Structure(PC),A1 ; Structure sub.l A2,A2 ; init moveq #$32,D0 ; dSize jsr -$54(A6) ; MakeLibrary move.l (SP)+,A2 tst.l D0 beq.b Failed move.l D0,A1 jmp -$1E6(A6) ; AddResource Structure dc.w $A008 ; base offset $8 dc.w $0800 ; type dc.w $800A ; base offset $A dc.l miscresource.MSG ; name dc.w $A00E ; base offset $E dc.w $0600 ; id ??? dc.w $9014 ; base offset $14 dc.w $0026 ; version dc.w $9016 ; base offset $16 dc.w 0 ; revision dc.w 0 ; no more ; D0 - input ; A1 - input ; A6 - resource base AllocMiscResource move.l A6,-(SP) lsl.w #2,D0 lea $22(A6,D0.W),A0 move.l 4.W,A6 addq.b #1,$127(A6) move.l (A0),D0 bne.b Permit move.l A1,(A0) Permit jsr -$8A(A6) ; Permit - This call is guaranteed to preserve all registers. move.l (SP)+,A6 Failed rts ; D0 - input ; A6 - resource base FreeMiscResource lsl.w #2,D0 clr.l $22(A6,D0.W) rts Vectors dc.w $FFFF dc.w AllocMiscResource-Vectors ; -6 _LVOAllocMiscResource dc.w FreeMiscResource-Vectors ; -12 _LVOFreeMiscResource dc.w $FFFF miscresource.MSG dc.b 'misc.resource',0 misc3718191.MSG dc.b 'misc 38.0 (21.1.2012)',$D,$A,0 cnop 0,4 EndSkip |
23 January 2012, 16:49 | #3 |
BlizzardPPC'less
|
You dude are on ROMoroids!
Cool project! |
25 January 2012, 14:06 | #4 |
Registered User
Join Date: Jan 2008
Location: Warsaw/Poland
Age: 55
Posts: 1,957
|
Here is potgo.resource source.
Code:
; Resourced version of potgo.resource (37.4) from Amiga ROM 3.1 for Amiga68k ROM 1.0 ; For easy recognition all changes are done using lower cases and ";" signs ; Original code is removed with ";" signs ; New code is added using lower cases only ; We made it... ; OS Group: Bryce Nesbitt, Michael Sinz, Peter Cherna, Darren Greenwald, Randell Jesup, Jerry Horanoff ; GFX: Allan Havemose, Bart 'Kodiak' Whitebook, Spence Shanson, Steve Beats, Chris Green, Ray Brand, Jim Barkley ; Special Projects: Eric Cotton, Martin Hunt, Bill Koester, Martin Taillefer, Brian Jackson, Kaori Kuwata, David Junod, Palmyra Pawlik, Kevin Klop ; NET: Brian Jackson, Greg Miller, Kenneth Dyke ; GUI: Peter Cherna, Martin Taillefer, David Junod, Kaori Kuwata ; Others: Andy Finkel, Dale 'Duck' Luck, Jim 'Jimm' Mackraz, Jeff Porter, Carolyn Scheppner, David Haynie, ; Lauren Brown, CATS (Commodore Amiga Technical Support), QA (Quality Assurance), SA (Software Assurance) ; Thanks to: Bill Hawes, Software Distillery ; Better than ever. ;lbC03FD34 ILLEGAL ; dc.l lbC03FD34 ; dc.l lbW03FE6A ; dc.l $81250864 ; dc.l potgoresource.MSG0 ; dc.l potgo37428191.MSG ; dc.l lbW03FD74 ;potgoresource.MSG0 dc.b 'potgo.resource',0 ;potgo37428191.MSG dc.b 'potgo 37.4 (28.1.91)',$D,$A,0 ;lbW03FD74 dc.l $2A ; dc.l lbW03FD84 ; dc.l lbW03FD8E ; dc.l lbC03FD9E ;lbW03FD84 dc.w $FFFF ; dc.w lbC03FDAE-lbW03FD84 ; dc.w lbC03FE1C-lbW03FD84 ; dc.w lbC03FE32-lbW03FD84 ; dc.w $FFFF ;lbW03FD8E dc.w $A008 ; dc.w $800 ; dc.w $800A ; dc.l potgoresource.MSG0 ; dc.l $A00E0600 ; dc.w 0 ;lbC03FD9E MOVEA.L D0,A0 ; MOVE.W #$FF00,$DFF034 ; MOVE.L A6,$22(A0) ; RTS ;lbC03FDAE MOVE.L D2,-(SP) ; MOVEA.L $22(A6),A0 ; MOVE.W #$4000,$DFF09A ; ADDQ.B #1,$126(A0) ; MOVE.W $26(A6),D2 ; MOVE.W D2,D1 ; ANDI.W #$5500,D1 ; LSL.W #1,D1 ; OR.W D2,D1 ; NOT.W D1 ; AND.W D1,D0 ; BTST #0,D0 ; BEQ.S lbC03FDEA ; MOVE.W D2,D1 ; LSR.W #1,D1 ; NOT.W D1 ; ANDI.W #$5500,D1 ; AND.W D2,D1 ; BEQ.S lbC03FDEA ; BCLR #0,D0 ;lbC03FDEA BTST #0,D2 ; BEQ.S lbC03FE00 ; MOVE.W D0,D1 ; LSR.W #1,D1 ; ANDI.W #$5500,D0 ; AND.W D1,D0 ; MOVE.W D0,D1 ; LSL.W #1,D1 ; OR.W D1,D0 ;lbC03FE00 ANDI.L #$FF01,D0 ; OR.W D0,$26(A6) ; SUBQ.B #1,$126(A0) ; BGE.S lbC03FE18 ; MOVE.W #$C000,$DFF09A ;lbC03FE18 MOVE.L (SP)+,D2 ; RTS ;lbC03FE1C ANDI.W #$5501,D0 ; MOVE.W D0,D1 ; LSL.W #1,D1 ; ANDI.W #$AA00,D1 ; OR.W D1,D0 ; NOT.W D0 ; AND.W D0,$26(A6) ; RTS ;lbC03FE32 AND.W D1,D0 ; NOT.W D1 ; MOVEA.L $22(A6),A0 ; MOVE.W #$4000,$DFF09A ; ADDQ.B #1,$126(A0) ; AND.W D1,$28(A6) ; OR.W $28(A6),D0 ; MOVE.W D0,$DFF034 ; CLR.B D0 ; MOVE.W D0,$28(A6) ; SUBQ.B #1,$126(A0) ; BGE.S lbC03FE68 ; MOVE.W #$C000,$DFF09A ;lbC03FE68 RTS ;lbW03FE6A MatchTag ILLEGAL ; match word dc.l MatchTag ; match tag dc.l EndSkip ; end skip dc.b $81 ; flags dc.b $26 ; version dc.b 8 ; type dc.b $64 ; priority dc.l potgoresource.MSG ; name dc.l potgo37428191.MSG ; id string dc.l MakeLibrary ; init MakeLibrary dc.l $2A ; dSize dc.l Vectors dc.l Structure dc.l Init Vectors dc.w $FFFF dc.w AllocPotBits-Vectors ; -6 _LVOAllocPotBits dc.w FreePotBits-Vectors ; -12 _LVOFreePotBits dc.w WritePotgo-Vectors ; -18 _LVOWritePotgo dc.w $FFFF Structure dc.w $A008 ; base offset $8 dc.w $800 ; type dc.w $800A ; base offset $A dc.l potgoresource.MSG ; name dc.w $A00E ; base offset $E dc.w $600 ; id ??? dc.w 0 Init move.l D0,A0 move.w #$FF00,$DFF034 move.l A6,$22(A0) rts ; D0 - input ; A6 - resource base FreePotBits and.w #$5501,D0 ; %0101010100000001 move.w D0,D1 ; %0101010100000001 add.w D1,D1 ; %1010101000000010 and.w #$AA00,D1 ; %1010101000000000 or.w D1,D0 ; %1111111000000001 not.w D0 ; %0000000111111110 and.w D0,$26(A6) rts ; D0 - input ; A6 - resource base AllocPotBits bsr.b AddPot move.w $26(A6),D1 move.w D1,-(SP) and.w #$5500,D1 add.w D1,D1 or.w (SP),D1 not.w D1 and.w D1,D0 btst #0,D0 beq.b TestPot move.w (SP),D1 lsr.w #1,D1 not.w D1 and.w #$5500,D1 and.w (SP),D1 beq.b TestPot bclr #0,D0 TestPot move.w (SP)+,D1 btst #0,D1 beq.b EvenPot move.w D0,D1 lsr.w #1,D1 and.w #$5500,D0 and.w D1,D0 move.w D0,D1 add.w D1,D1 or.w D1,D0 EvenPot and.w #$FF01,D0 or.w D0,$26(A6) SubPot subq.b #1,$126(A0) bge.b More move.w #$C000,$DFF09A More rts AddPot move.l $22(A6),A0 move.w #$4000,$DFF09A addq.b #1,$126(A0) rts ; D0 - input ; D1 - input ; A6 - resource base WritePotgo and.w D1,D0 not.w D1 bsr.b AddPot and.w D1,$28(A6) or.w $28(A6),D0 move.w D0,$DFF034 clr.b D0 move.w D0,$28(A6) bra.b SubPot potgoresource.MSG dc.b 'potgo.resource',0 potgo37428191.MSG dc.b 'potgo 38.0 (23.1.2012)',$D,$A,0 cnop 0,4 EndSkip |
26 January 2012, 14:00 | #5 |
Registered User
Join Date: Jan 2008
Location: Warsaw/Poland
Age: 55
Posts: 1,957
|
Here is battmem.resource source.
Original version has one small (?) bug. Code:
; Resourced version of battmem.resource (39.2) from Amiga ROM 3.1 for Amiga68k ROM 1.0 ; For easy recognition all changes are done using lower cases and ";" signs ; Original code is removed with ";" signs ; New code is added using lower cases only ; We made it... ; OS Group: Bryce Nesbitt, Michael Sinz, Peter Cherna, Darren Greenwald, Randell Jesup, Jerry Horanoff ; GFX: Allan Havemose, Bart 'Kodiak' Whitebook, Spence Shanson, Steve Beats, Chris Green, Ray Brand, Jim Barkley ; Special Projects: Eric Cotton, Martin Hunt, Bill Koester, Martin Taillefer, Brian Jackson, Kaori Kuwata, David Junod, Palmyra Pawlik, Kevin Klop ; NET: Brian Jackson, Greg Miller, Kenneth Dyke ; GUI: Peter Cherna, Martin Taillefer, David Junod, Kaori Kuwata ; Others: Andy Finkel, Dale 'Duck' Luck, Jim 'Jimm' Mackraz, Jeff Porter, Carolyn Scheppner, David Haynie, ; Lauren Brown, CATS (Commodore Amiga Technical Support), QA (Quality Assurance), SA (Software Assurance) ; Thanks to: Bill Hawes, Software Distillery ; Better than ever. ;lbC03FB50 ILLEGAL ; dc.l lbC03FB50 ; dc.l lbC03FD34 ; dc.l $1270845 ; dc.l battmemresour.MSG ; dc.l battmem392639.MSG ; dc.l lbC03FBD4 ;battmemresour.MSG dc.b 'battmem.resource',0,0 ;battclockreso.MSG1 dc.b 'battclock.resource',0,0 ;battmem392639.MSG dc.b 'battmem 39.2 (6.3.92)',$D,$A,0 ;lbW03FBA8 dc.w $FFFF ; dc.w lbC03FC2C-lbW03FBA8 ; dc.w lbC03FC3E-lbW03FBA8 ; dc.w lbC03FC50-lbW03FBA8 ; dc.w lbC03FCC2-lbW03FBA8 ; dc.w $FFFF ;lbW03FBB4 dc.w $A008 ; dc.w $800 ; dc.w $800A ; dc.l battmemresour.MSG ; dc.l $A00E0600 ; dc.l $90140027 ; dc.l $90160002 ; dc.w $8018 ; dc.l battmem392639.MSG ; dc.l 0 ;lbC03FBD4 MOVEM.L D2/A2/A3/A6,-(SP) ; SUBA.L A2,A2 ; LEA battclockreso.MSG1(PC),A1 ; JSR -$1F2(A6) ; TST.L D0 ; BEQ.S lbC03FC24 ; MOVEA.L D0,A3 ; LEA lbW03FBA8(PC),A0 ; LEA lbW03FBB4(PC),A1 ; SUBA.L A2,A2 ; MOVEQ #$5A,D0 ; JSR -$54(A6) ; MOVEA.L D0,A2 ; TST.L D0 ; BEQ.S lbC03FC24 ; MOVE.L #0,$22(A2) ; bug !!! must be move.w or $20(A2) ; MOVE.L A6,$24(A2) ; MOVE.L A3,$28(A2) ; LEA $2C(A2),A0 ; JSR -$22E(A6) ; MOVEA.L A2,A1 ; JSR -$1E6(A6) ; MOVEA.L A2,A6 ; MOVEQ #0,D1 ; MOVEQ #1,D2 ; BSR.S lbC03FC50 ;lbC03FC24 MOVE.L A2,D0 ; MOVEM.L (SP)+,D2/A2/A3/A6 ; RTS ;lbC03FC2C LEA $2C(A6),A0 ; MOVE.L A6,-(SP) ; MOVEA.L $24(A6),A6 ; JSR -$234(A6) ; MOVEA.L (SP)+,A6 ; RTS ;lbC03FC3E LEA $2C(A6),A0 ; MOVE.L A6,-(SP) ; MOVEA.L $24(A6),A6 ; JSR -$23A(A6) ; MOVEA.L (SP)+,A6 ; RTS ;lbC03FC50 MOVEM.L D0/D1/A0,-(SP) ; LEA $2C(A6),A0 ; MOVE.L A6,-(SP) ; MOVEA.L $24(A6),A6 ; JSR -$234(A6) ; MOVEA.L (SP)+,A6 ; MOVEM.L (SP)+,D0/D1/A0 ; MOVEM.L D2-D5/A2,-(SP) ; MOVEA.L A0,A2 ; MOVE.L D0,D5 ; MOVE.L D1,D3 ; MOVE.L D1,D4 ; ANDI.L #7,D4 ; LSR.L #3,D3 ; BEQ.S lbC03FC96 ; MOVEQ #8,D2 ;lbC03FC80 MOVE.L D5,D1 ; MOVE.L A6,-(SP) ; MOVEA.L $28(A6),A6 ; JSR -$18(A6) ; MOVEA.L (SP)+,A6 ; MOVE.B D0,(A2)+ ; ADDQ.L #8,D5 ; SUBQ.L #1,D3 ; BNE.S lbC03FC80 ;lbC03FC96 MOVE.L D4,D2 ; BEQ.S lbC03FCAA ; MOVE.L D5,D1 ; MOVE.L A6,-(SP) ; MOVEA.L $28(A6),A6 ; JSR -$18(A6) ; MOVEA.L (SP)+,A6 ; MOVE.B D0,(A2)+ ;lbC03FCAA MOVEM.L (SP)+,D2-D5/A2 ; LEA $2C(A6),A0 ; MOVE.L A6,-(SP) ; MOVEA.L $24(A6),A6 ; JSR -$23A(A6) ; MOVEA.L (SP)+,A6 ; MOVEQ #0,D0 ; RTS ;lbC03FCC2 MOVEM.L D0/D1/A0,-(SP) ; LEA $2C(A6),A0 ; MOVE.L A6,-(SP) ; MOVEA.L $24(A6),A6 ; JSR -$234(A6) ; MOVEA.L (SP)+,A6 ; MOVEM.L (SP)+,D0/D1/A0 ; MOVEM.L D2-D5/A2,-(SP) ; MOVEA.L A0,A2 ; MOVE.L D0,D5 ; MOVE.L D1,D3 ; MOVE.L D1,D4 ; ANDI.L #7,D4 ; LSR.L #3,D3 ; BEQ.S lbC03FD08 ; MOVEQ #8,D2 ;lbC03FCF2 MOVE.L D5,D1 ; MOVE.B (A2)+,D0 ; MOVE.L A6,-(SP) ; MOVEA.L $28(A6),A6 ; JSR -$1E(A6) ; MOVEA.L (SP)+,A6 ; ADDQ.L #8,D5 ; SUBQ.L #1,D3 ; BNE.S lbC03FCF2 ;lbC03FD08 MOVE.L D4,D2 ; BEQ.S lbC03FD1C ; MOVE.L D5,D1 ; MOVE.B (A2)+,D0 ; MOVE.L A6,-(SP) ; MOVEA.L $28(A6),A6 ; JSR -$1E(A6) ; MOVEA.L (SP)+,A6 ;lbC03FD1C MOVEM.L (SP)+,D2-D5/A2 ; LEA $2C(A6),A0 ; MOVE.L A6,-(SP) ; MOVEA.L $24(A6),A6 ; JSR -$23A(A6) ; MOVEA.L (SP)+,A6 ; MOVEQ #0,D0 ; RTS ;lbC03FD34 MatchTag ILLEGAL ; match word dc.l MatchTag ; match tag dc.l EndSkip ; end skip dc.b 1 ; flags dc.b $28 ; version dc.b 8 ; type dc.b $45 ; priority dc.l battmemresour.MSG ; name dc.l battmem392639.MSG ; id string dc.l InitResource ; init code Vectors dc.w $FFFF dc.w ObtainBattSemaphore-Vectors ; -6 _LVOObtainBattSemaphore dc.w ReleaseBattSemaphore-Vectors ; -12 _LVOReleaseBattSemaphore dc.w ReadBattMem-Vectors ; -18 _LVOReadBattMem dc.w WriteBattMem-Vectors ; -24 _LVOWriteBattMem dc.w $FFFF Structure dc.w $A008 ; base offset $8 dc.w $0800 ; type dc.w $800A ; base offset $A dc.l battmemresour.MSG ; name dc.w $A00E ; base offset $E dc.w $0600 ; id ??? dc.w $9014 ; base offset $14 dc.w $0028 ; version dc.w $9016 ; base offset $16 dc.w $0000 ; revision dc.w $8018 ; base offset $18 dc.l battmem392639.MSG ; id string dc.w 0 ; no more InitResource movem.l D2/A2/A3/A6,-(SP) lea battclockreso.MSG1(PC),A1 jsr -$1F2(A6) ; OpenResource tst.l D0 beq.b Quit move.l D0,A3 lea Vectors(PC),A0 lea Structure(PC),A1 sub.l A2,A2 moveq #$5A,D0 ; dSize jsr -$54(A6) ; MakeLibrary tst.l D0 beq.b Quit move.l D0,A2 lea $22(A2),A0 clr.w (A0)+ ; possible bug here move.l A6,(A0)+ ; exec base move.l A3,(A0)+ ; battclock base, set A0 jsr -$22E(A6) ; InitSemaphore move.l A2,A1 jsr -$1E6(A6) ; AddResource move.l A2,A6 moveq #0,D1 moveq #1,D2 bsr.b ReadBattMem move.l A2,D0 ; resource base Quit movem.l (SP)+,D2/A2/A3/A6 rts ObtainBattSemaphore lea -$234.W,A1 bra.b SemaphoreMain ; ObtainSemaphore ReleaseBattSemaphore lea -$23A.W,A1 SemaphoreMain lea $2C(A6),A0 move.l A6,-(SP) move.l $24(A6),A6 ; exec base jsr (A6,A1.W) ; ReleaseSemaphore move.l (SP)+,A6 rts ; D1 - input ; D2 - input ; A6 - resource base ReadBattMem lea ReadBatt(PC),A1 bra.b BattMain ; D1 - input ; D2 - input ; A6 - resource base WriteBattMem lea WriteBatt(PC),A1 BattMain movem.l D2-D7/A2/A3/A6,-(SP) move.l A0,A2 move.l A1,A3 move.l D0,D5 move.l D1,D3 lea $24(A6),A0 move.l (A0)+,A6 ; exec base move.l (A0)+,D6 ; battclock base, set A0 move.l A0,D7 ; backup A0 jsr -$234(A6) ; ObtainSemaphore exg D6,A6 ; battclock base moveq #7,D4 and.l D3,D4 lsr.l #3,D3 beq.b SkipBatt moveq #8,D2 LoopBatt jsr (A3) addq.l #8,D5 subq.l #1,D3 bne.b LoopBatt SkipBatt move.l D4,D2 beq.b LastBatt jsr (A3) LastBatt exg D6,A6 ; exec base move.l D7,A0 jsr -$23A(A6) ; ReleaseSemaphore movem.l (SP)+,D2-D7/A2/A3/A6 moveq.l #0,D0 rts WriteBatt move.l D5,D1 move.b (A2)+,D0 ; write jmp -$1E(A6) ; PrivateFunction2 ReadBatt move.l D5,D1 jsr -$18(A6) ; PrivateFunction1 move.b D0,(A2)+ ; read rts battmemresour.MSG dc.b 'battmem.resource',0 battclockreso.MSG1 dc.b 'battclock.resource',0 battmem392639.MSG dc.b 'battmem 40.0 (25.1.2012)',$D,$A,0 EndSkip |
29 January 2012, 15:58 | #6 |
Registered User
Join Date: Jan 2008
Location: Warsaw/Poland
Age: 55
Posts: 1,957
|
Optimised potgo.resource, thanks to Mcoder for the help.
Here is A4000 bonus source. Code:
; Resourced version of A4000 bonus (40.1) from Amiga ROM 3.1 for Amiga68k ROM 1.0 ; For easy recognition all changes are done using lower cases and ";" signs ; Original code is removed with ";" signs ; New code is added using lower cases only ; We made it... ; OS Group: Bryce Nesbitt, Michael Sinz, Peter Cherna, Darren Greenwald, Randell Jesup, Jerry Horanoff ; GFX: Allan Havemose, Bart 'Kodiak' Whitebook, Spence Shanson, Steve Beats, Chris Green, Ray Brand, Jim Barkley ; Special Projects: Eric Cotton, Martin Hunt, Bill Koester, Martin Taillefer, Brian Jackson, Kaori Kuwata, David Junod, Palmyra Pawlik, Kevin Klop ; NET: Brian Jackson, Greg Miller, Kenneth Dyke ; GUI: Peter Cherna, Martin Taillefer, David Junod, Kaori Kuwata ; Others: Andy Finkel, Dale 'Duck' Luck, Jim 'Jimm' Mackraz, Jeff Porter, Carolyn Scheppner, David Haynie, ; Lauren Brown, CATS (Commodore Amiga Technical Support), QA (Quality Assurance), SA (Software Assurance) ; Thanks to: Bill Hawes, Software Distillery ; Better than ever. MatchTag ILLEGAL ; match word dc.l MatchTag ; match tag dc.l EndSkip ; end skip dc.b 1 ; flags dc.b $28 ; version dc.b 0 ; type dc.b $65 ; priority dc.l A4000bonus.MSG ; name dc.l bonus40115293.MSG ; id string dc.l Init ; init code Init MOVEM.L D2-D7/A2-A5,-(SP) BTST #2,$129(A6) ; 68030/68040 CPU check BEQ.B Quit MOVEQ #$66,D0 MOVEQ #2,D1 ; chipmem JSR -$C6(A6) ; AllocMem TST.L D0 BEQ.B Quit MOVEA.L D0,A1 MOVEA.L D0,A5 LEA userFunc(PC),A0 MOVEQ #$32,D0 Copy MOVE.W (A0)+,(A1)+ DBF D0,Copy JSR -$27C(A6) ; CacheClearU (no input) BTST #3,$129(A6) ; 68040 CPU check SEQ D3 ; D3 input MOVEQ #0,D0 MOVEQ #-1,D1 JSR -$288(A6) ; CacheControl (D0/D1 input) MOVE.L D0,-(SP) ; output JSR -$1E(A6) ; Supervisor (A5 input) MOVE.L (SP)+,D0 MOVE.L D0,D1 JSR -$288(A6) ; CacheControl (D0/D1 input) MOVEA.L A5,A1 MOVEQ #$66,D0 JSR -$D2(A6) ; FreeMem Quit MOVEM.L (SP)+,D2-D7/A2-A5 MOVEQ #0,D0 RTS userFunc ORI.W #$700,SR LEA $DE0003,A4 LEA $7F7FFF0,A3 MOVEQ #7,D2 CMPI.B #$7F,$40(A4) BEQ.B Exit MOVEM.L (A3),D4-D7 MOVEA.L A3,A2 MOVE.L A2,(A2)+ MOVE.L A2,(A2)+ MOVE.L A2,(A2)+ MOVE.L A2,(A2)+ MOVE.L D2,D0 OR.B (A4),D0 NOP MOVE.B D0,(A4) Loop1 NOP MOVE.B (A4),D1 AND.B D2,D1 CMP.B D2,D1 BNE.B Loop1 MOVE.L D2,D0 MOVEQ #3,D1 Compare CMPA.L -(A2),A2 DBNE D1,Compare BNE.B Skip MOVEQ #4,D0 AND.B D3,D0 ADDQ.L #1,D0 Skip NOT.L D0 AND.B (A4),D0 NOP MOVE.B D0,(A4) AND.B D2,D0 Loop2 NOP MOVE.B (A4),D1 AND.B D2,D1 CMP.B D0,D1 BNE.B Loop2 MOVEM.L D4-D7,(A3) Exit RTE A4000bonus.MSG dc.b 'A4000 bonus',0 bonus40115293.MSG dc.b 'bonus 40.1 (15.2.93)',$D,$A,0 dc.b 0 cnop 0,4 EndSkip |
01 February 2012, 14:53 | #7 |
Registered User
Join Date: Jan 2008
Location: Warsaw/Poland
Age: 55
Posts: 1,957
|
Here is mathffp.library source.
Code:
; Resourced version of mathffp.library (40.1) from Amiga ROM 3.1 for Amiga68k ROM 1.0 ; For easy recognition all changes are done using lower cases and ";" signs ; Original code is removed with ";" signs ; New code is added using lower cases only ; We made it... ; OS Group: Bryce Nesbitt, Michael Sinz, Peter Cherna, Darren Greenwald, Randell Jesup, Jerry Horanoff ; GFX: Allan Havemose, Bart 'Kodiak' Whitebook, Spence Shanson, Steve Beats, Chris Green, Ray Brand, Jim Barkley ; Special Projects: Eric Cotton, Martin Hunt, Bill Koester, Martin Taillefer, Brian Jackson, Kaori Kuwata, David Junod, Palmyra Pawlik, Kevin Klop ; NET: Brian Jackson, Greg Miller, Kenneth Dyke ; GUI: Peter Cherna, Martin Taillefer, David Junod, Kaori Kuwata ; Others: Andy Finkel, Dale 'Duck' Luck, Jim 'Jimm' Mackraz, Jeff Porter, Carolyn Scheppner, David Haynie, ; Lauren Brown, CATS (Commodore Amiga Technical Support), QA (Quality Assurance), SA (Software Assurance) ; Thanks to: Bill Hawes, Software Distillery ; Better than ever. ;lbC040944 ILLEGAL ; dc.l lbC040944 ; dc.l lbC040DE0 ; dc.l $80280988 ; dc.l mathffplibrar.MSG ; dc.l mathffp401163.MSG ; dc.l lbL040988 ;mathffplibrar.MSG dc.b 'mathffp.library',0 ;mathffp401163.MSG dc.b 'mathffp 40.1 (16.3.93)',$D,$A,0 ; dc.b 0 ;lbL040988 dc.l $22 ; dc.l lbW0409C8 ; dc.l lbW040998 ; dc.l 0 ;lbW040998 dc.w $A008 ; dc.w $900 ; dc.w $800A ; dc.l mathffplibrar.MSG ; dc.l $A00E0600 ; dc.l $90140028 ; dc.l $90160001 ; dc.w $8018 ; dc.l mathffp401163.MSG ; dc.w 0 ;lbC0409B6 ADDQ.W #1,$20(A6) ; MOVE.L A6,D0 ; RTS ;lbC0409BE SUBQ.W #1,$20(A6) ;lbC0409C2 MOVEQ #0,D0 ; RTS ; dc.w 0 ;lbW0409C8 dc.w $FFFF ; dc.w lbC0409B6-lbW0409C8 ; dc.w lbC0409BE-lbW0409C8 ; dc.w lbC0409C2-lbW0409C8 ; dc.w lbC0409C2-lbW0409C8 ; dc.w lbC0409EC-lbW0409C8 ; dc.w lbC040A40-lbW0409C8 ; dc.w lbC040A78-lbW0409C8 ; dc.w lbC040AB4-lbW0409C8 ; dc.w lbC040ADC-lbW0409C8 ; dc.w lbC040AE2-lbW0409C8 ; dc.w lbC040B06-lbW0409C8 ; dc.w lbC040AEC-lbW0409C8 ; dc.w lbC040BFC-lbW0409C8 ; dc.w lbC040CC4-lbW0409C8 ; dc.w lbC040D46-lbW0409C8 ; dc.w lbC040D3C-lbW0409C8 ; dc.w $FFFF ;lbC0409EC MOVE.B D0,D1 ; BMI.S lbC040A14 ; BEQ.S lbC040A04 ; CLR.B D0 ; SUB.B #$41,D1 ; BMI.S lbC040A10 ; SUB.B #$1F,D1 ; BPL.S lbC040A06 ; NEG.B D1 ; LSR.L D1,D0 ;lbC040A04 RTS ;lbC040A06 MOVEQ #-1,D0 ; LSR.L #1,D0 ; ORI.B #2,CCR ; RTS ;lbC040A10 MOVEQ #0,D0 ; RTS ;lbC040A14 CLR.B D0 ; SUB.B #$C1,D1 ; BMI.S lbC040A10 ; SUB.B #$1F,D1 ; BPL.S lbC040A2A ; NEG.B D1 ; LSR.L D1,D0 ; NEG.L D0 ; RTS ;lbC040A2A BNE.S lbC040A32 ; NEG.L D0 ; TST.L D0 ; BMI.S lbC040A04 ;lbC040A32 MOVEQ #0,D0 ; BSET #$1F,D0 ; ORI.B #2,CCR ; RTS ; dc.w 0 ;lbC040A40 MOVEQ #$5F,D1 ; TST.L D0 ; BEQ.S lbC040A76 ; BPL.S lbC040A50 ; MOVEQ #-$20,D1 ; NEG.L D0 ; BVS.S lbC040A74 ; SUBQ.B #1,D1 ;lbC040A50 CMP.L #$7FFF,D0 ; BHI.S lbC040A5E ; SWAP D0 ; SUB.B #$10,D1 ;lbC040A5E ADD.L D0,D0 ; DBMI D1,lbC040A5E ; TST.B D0 ; BPL.S lbC040A74 ; ADD.L #$100,D0 ; BCC.S lbC040A74 ; ROXR.L #1,D0 ; ADDQ.B #1,D1 ;lbC040A74 MOVE.B D1,D0 ;lbC040A76 RTS ;lbC040A78 TST.B D1 ; BPL.S lbC040A88 ; TST.B D0 ; BPL.S lbC040A88 ; CMP.B D0,D1 ; BNE.S lbC040A8E ; CMP.L D0,D1 ; BRA.S lbC040A8E ;lbC040A88 CMP.B D1,D0 ; BNE.S lbC040A8E ; CMP.L D1,D0 ;lbC040A8E MOVEM.L A6,-(SP) ; MOVEA.L 4,A6 ; JSR -$210(A6) ; MOVEA.L (SP)+,A6 ; MOVE.W D0,D1 ; MOVEQ #0,D0 ; MOVE.W D1,CCR ; BLT.S lbC040AAE ; BGT.S lbC040AAA ; BRA.S lbC040AB0 ;lbC040AAA SUBQ.L #1,D0 ; BRA.S lbC040AB0 ;lbC040AAE ADDQ.L #1,D0 ;lbC040AB0 MOVE.W D1,CCR ; RTS ;lbC040AB4 TST.B D1 ; MOVEM.L A6,-(SP) ; MOVEA.L 4,A6 ; JSR -$210(A6) ; MOVEA.L (SP)+,A6 ; MOVE.W D0,D1 ; MOVEQ #0,D0 ; MOVE.W D1,CCR ; BLT.S lbC040AD2 ; BGT.S lbC040AD6 ; BRA.S lbC040AD8 ;lbC040AD2 SUBQ.L #1,D0 ; BRA.S lbC040AD8 ;lbC040AD6 ADDQ.L #1,D0 ;lbC040AD8 MOVE.W D1,CCR ; RTS ;lbC040ADC ANDI.B #$7F,D0 ; RTS ;lbC040AE2 TST.B D0 ; BEQ.S lbC040AEA ; EORI.B #$80,D0 ;lbC040AEA RTS ;lbC040AEC MOVEM.L D3-D5,-(SP) ; MOVE.B D1,D4 ; BEQ.S lbC040B5A ; EORI.B #$80,D4 ; BMI.L lbC040B80 ; MOVE.B D0,D5 ; BMI.L lbC040B86 ; BNE.S lbC040B16 ; BRA.S lbC040B50 ;lbC040B06 MOVEM.L D3-D5,-(SP) ; MOVE.B D1,D4 ; BMI.S lbC040B80 ; BEQ.S lbC040B5A ; MOVE.B D0,D5 ; BMI.S lbC040B86 ; BEQ.S lbC040B50 ;lbC040B16 SUB.B D4,D5 ; BMI.S lbC040B62 ; MOVE.B D0,D4 ; CMP.B #$18,D5 ; BCC.S lbC040B5A ; MOVE.L D1,D3 ; CLR.B D3 ; LSR.L D5,D3 ; MOVE.B #$80,D0 ; ADD.L D3,D0 ; BCS.S lbC040B38 ;lbC040B30 MOVE.B D4,D0 ; MOVEM.L (SP)+,D3-D5 ; RTS ;lbC040B38 ROXR.L #1,D0 ; ADDQ.B #1,D4 ; BVS.S lbC040B40 ; BCC.S lbC040B30 ;lbC040B40 MOVEQ #-1,D0 ; SUBQ.B #1,D4 ; MOVE.B D4,D0 ; ORI.B #2,CCR ; MOVEM.L (SP)+,D3-D5 ; RTS ;lbC040B50 MOVE.L D1,D0 ; MOVE.B D4,D0 ; MOVEM.L (SP)+,D3-D5 ; RTS ;lbC040B5A TST.B D0 ; MOVEM.L (SP)+,D3-D5 ; RTS ;lbC040B62 CMP.B #$E8,D5 ; BLE.S lbC040B50 ; NEG.B D5 ; MOVE.L D1,D3 ; CLR.B D0 ; LSR.L D5,D0 ; MOVE.B #$80,D3 ; ADD.L D3,D0 ; BCS.S lbC040B38 ; MOVE.B D4,D0 ; MOVEM.L (SP)+,D3-D5 ; RTS ;lbC040B80 MOVE.B D0,D5 ; BMI.S lbC040B16 ; BEQ.S lbC040B50 ;lbC040B86 MOVEQ #-$80,D3 ; EOR.B D3,D5 ; SUB.B D4,D5 ; BEQ.S lbC040BE8 ; BMI.S lbC040BD4 ; CMP.B #$18,D5 ; BCC.S lbC040B5A ; MOVE.B D0,D4 ; MOVE.B D3,D0 ; MOVE.L D1,D3 ;lbC040B9C CLR.B D3 ; LSR.L D5,D3 ; SUB.L D3,D0 ; BMI.S lbC040B30 ;lbC040BA4 MOVE.B D4,D5 ;lbC040BA6 CLR.B D0 ; SUBQ.B #1,D4 ; CMP.L #$7FFF,D0 ; BHI.S lbC040BB8 ; SWAP D0 ; SUB.B #$10,D4 ;lbC040BB8 ADD.L D0,D0 ; DBMI D4,lbC040BB8 ; EOR.B D4,D5 ; BMI.S lbC040BCC ; MOVE.B D4,D0 ; BEQ.S lbC040BCC ; MOVEM.L (SP)+,D3-D5 ; RTS ;lbC040BCC MOVEQ #0,D0 ; MOVEM.L (SP)+,D3-D5 ; RTS ;lbC040BD4 CMP.B #$E8,D5 ; BLE.L lbC040B50 ; NEG.B D5 ; MOVE.L D0,D3 ; MOVE.L D1,D0 ; MOVE.B #$80,D0 ; BRA.S lbC040B9C ;lbC040BE8 MOVE.B D0,D5 ; EXG D5,D4 ; MOVE.B D1,D0 ; SUB.L D1,D0 ; BEQ.S lbC040BCC ; BPL.S lbC040BA4 ; NEG.L D0 ; MOVE.B D5,D4 ; BRA.S lbC040BA6 ; dc.w 0 ;lbC040BFC MOVEM.L D3-D5,-(SP) ; MOVE.B D0,D5 ; BEQ.S lbC040C56 ; MOVE.B D1,D4 ; BEQ.S lbC040C78 ; ADD.W D5,D5 ; ADD.W D4,D4 ; MOVEQ #-$80,D3 ; EOR.B D3,D4 ; EOR.B D3,D5 ; ADD.B D4,D5 ; BVS.S lbC040C80 ; MOVE.B D3,D4 ; EOR.W D4,D5 ; ROR.W #1,D5 ; SWAP D5 ; MOVE.W D1,D5 ; CLR.B D0 ; CLR.B D5 ; MOVE.W D5,D4 ; MULU.W D0,D4 ; SWAP D4 ; MOVE.L D0,D3 ; SWAP D3 ; MULU.W D5,D3 ; ADD.L D3,D4 ; SWAP D1 ; MOVE.L D1,D3 ; MULU.W D0,D3 ; ADD.L D3,D4 ; CLR.W D4 ; ADDX.B D4,D4 ; SWAP D4 ; SWAP D0 ; MULU.W D1,D0 ; SWAP D1 ; SWAP D5 ; ADD.L D4,D0 ; BPL.S lbC040C5C ; ADD.L #$80,D0 ; MOVE.B D5,D0 ; BEQ.S lbC040C78 ;lbC040C56 MOVEM.L (SP)+,D3-D5 ; RTS ;lbC040C5C SUBQ.B #1,D5 ; BVS.S lbC040C78 ; BCS.S lbC040C78 ; MOVEQ #$40,D4 ; ADD.L D4,D0 ; ADD.L D0,D0 ; BCC.S lbC040C6E ; ROXR.L #1,D0 ; ADDQ.B #1,D5 ;lbC040C6E MOVE.B D5,D0 ; BEQ.S lbC040C78 ; MOVEM.L (SP)+,D3-D5 ; RTS ;lbC040C78 MOVEQ #0,D0 ; MOVEM.L (SP)+,D3-D5 ; RTS ;lbC040C80 BPL.S lbC040C78 ; EOR.B D1,D0 ; OR.L #$FFFFFF7F,D0 ; TST.B D0 ; ORI.B #2,CCR ; MOVEM.L (SP)+,D3-D5 ; RTS ; dc.w 0 ;lbC040C98 DIVU.W #0,D0 ; TST.L D1 ; BNE.S lbC040CC4 ;lbC040CA0 OR.L #$FFFFFF7F,D0 ; TST.B D0 ; ORI.B #2,CCR ;lbC040CAC MOVEM.L (SP)+,D3-D5 ; RTS ;lbC040CB2 SWAP D1 ; SWAP D0 ;lbC040CB6 EOR.B D1,D0 ; BRA.S lbC040CA0 ;lbC040CBA BMI.S lbC040CB6 ;lbC040CBC MOVEQ #0,D0 ; MOVEM.L (SP)+,D3-D5 ; RTS ;lbC040CC4 MOVEM.L D3-D5,-(SP) ; MOVE.B D1,D5 ; BEQ.S lbC040C98 ; MOVE.L D0,D4 ; BEQ.S lbC040CAC ; MOVEQ #-$80,D3 ; ADD.W D5,D5 ; ADD.W D4,D4 ; EOR.B D3,D5 ; EOR.B D3,D4 ; SUB.B D5,D4 ; BVS.S lbC040CBA ; CLR.B D0 ; SWAP D0 ; SWAP D1 ; CMP.W D1,D0 ; BMI.S lbC040CEE ; ADDQ.B #2,D4 ; BVS.S lbC040CB2 ; ROR.L #1,D0 ;lbC040CEE SWAP D0 ; MOVE.B D3,D5 ; EOR.W D5,D4 ; LSR.W #1,D4 ; MOVE.L D0,D3 ; DIVU.W D1,D3 ; MOVE.W D3,D5 ; MULU.W D1,D3 ; SUB.L D3,D0 ; SWAP D0 ; SWAP D1 ; MOVE.W D1,D3 ; CLR.B D3 ; MULU.W D5,D3 ; SUB.L D3,D0 ; BCC.S lbC040D14 ;lbC040D0E SUBQ.W #1,D5 ; ADD.L D1,D0 ; BCC.S lbC040D0E ;lbC040D14 MOVE.L D1,D3 ; SWAP D3 ; CLR.W D0 ; DIVU.W D3,D0 ; SWAP D5 ; BMI.S lbC040D28 ; MOVE.W D0,D5 ; ADD.L D5,D5 ; SUBQ.B #1,D4 ; MOVE.W D5,D0 ;lbC040D28 MOVE.W D0,D5 ; ADD.L #$80,D5 ; MOVE.L D5,D0 ; MOVE.B D4,D0 ; BEQ.S lbC040CBC ; MOVEM.L (SP)+,D3-D5 ; RTS ;lbC040D3C BSR.L lbC040AE2 ; BSR.S lbC040D46 ; BRA.L lbC040AE2 ;lbC040D46 MOVE.B D0,D1 ; BMI.S lbC040D72 ; BEQ.S lbC040D6C ; CLR.B D0 ; SUB.B #$41,D1 ; BMI.S lbC040D6E ; SUB.B #$1F,D1 ; BPL.S lbC040D62 ; NEG.B D1 ; LSR.L D1,D0 ; LSL.L D1,D0 ; NEG.B D1 ;lbC040D62 ADD.B #$1F,D1 ; ADD.B #$41,D1 ; MOVE.B D1,D0 ;lbC040D6C RTS ;lbC040D6E MOVEQ #0,D0 ; RTS ;lbC040D72 BSR.L lbC040AE2 ; MOVE.L D0,-(SP) ; BSR.S lbC040D46 ; MOVE.L D0,-(SP) ; MOVE.L D0,D1 ; MOVE.L 4(SP),D0 ; BSR.L lbC040AEC ; MOVEM.L (SP),D0 ; BEQ.S lbC040D96 ; MOVE.L #$80000041,D1 ; BSR.L lbC040B06 ;lbC040D96 ADDQ.L #8,SP ; BRA.L lbC040AE2 ; dc.b 'MC68343 FLOATING POINT FIRMWARE(C) COPYRIGHT' ; dc.b ' 1981 BY MOTOROLA INC.',0,0 ;lbC040DE0 MatchTag ILLEGAL ; match word dc.l MatchTag ; match tag dc.l EndSkip ; end skip dc.b $80 ; flags dc.b $29 ; version dc.b 9 ; type dc.b $88 ; priority dc.l mathffplibrar.MSG ; name dc.l mathffp401163.MSG ; id string dc.l MakeLibrary MakeLibrary dc.l $22 ; dSize dc.l Vectors dc.l Structure dc.l 0 ; Init Structure dc.w $A008 ; base offset $8 dc.w $900 ; type dc.w $800A ; base offset $A dc.l mathffplibrar.MSG ; name dc.w $A00E ; base offset $E dc.w $0600 ; id ??? dc.w $9014 ; base offset $14 dc.w $0029 ; version dc.w $9016 ; base offset $16 dc.w $0000 ; revision dc.w $8018 ; base offset $18 dc.l mathffp401163.MSG ; id string dc.w 0 ; no more LibOpen addq.w #1,$20(A6) move.l A6,D0 rts Vectors dc.w $FFFF dc.w LibOpen-Vectors ; -6 _LVOLibOpen dc.w LibClose-Vectors ; -12 _LVOLibClose dc.w LibExpunge-Vectors ; -18 _LVOLibExpunge dc.w LibReserved-Vectors ; -24 _LVOLibReserved dc.w SPFix-Vectors ; -30 * _LVOSPFix dc.w SPFlt-Vectors ; -36 _LVOSPFlt dc.w SPCmp-Vectors ; -42 * _LVOSPCmp dc.w SPTst-Vectors ; -48 * _LVOSPTst dc.w SPAbs-Vectors ; -54 * _LVOSPAbs dc.w SPNeg-Vectors ; -60 * _LVOSPNeg dc.w SPAdd-Vectors ; -66 _LVOSPAdd dc.w SPSub-Vectors ; -72 _LVOSPSub dc.w SPMul-Vectors ; -78 * _LVOSPMul dc.w SPDiv-Vectors ; -84 * _LVOSPDiv dc.w SPFloor-Vectors ; -90 * _LVOSPFloor dc.w SPCeil-Vectors ; -96 * _LVOSPCeil dc.w $FFFF SPFlt MOVEQ #$5F,D1 TST.L D0 BEQ.B FltZero BPL.B FltPlus MOVEQ #-$20,D1 NEG.L D0 BVS.B FltBvs SUBQ.B #1,D1 FltPlus CMP.L #$7FFF,D0 BHI.B FltDBMI SWAP D0 SUB.B #$10,D1 FltDBMI ADD.L D0,D0 DBMI D1,FltDBMI TST.B D0 BPL.B FltBvs ADD.L #$100,D0 BCC.B FltBvs ROXR.L #1,D0 ADDQ.B #1,D1 FltBvs MOVE.B D1,D0 FltZero RTS SPCmp tst.b D1 bpl.b PlusCmp tst.b D0 bpl.b PlusCmp exg D0,D1 PlusCmp cmp.b D1,D0 bne.b TestCmp cmp.l D1,D0 TestCmp bsr.b GetCC blt.b OneCmp bgt.b MinusOneCmp ZeroCmp moveq #0,D0 bra.b QuitCmp MinusOneCmp moveq #-1,D0 bra.b QuitCmp OneCmp moveq #1,D0 bra.b QuitCmp GetCC pea (A6) move.l 4.W,A6 jsr -$210(A6) ; GetCC move.l (SP)+,A6 move.w D0,D1 QuitCmp move.w D1,CCR rts SPTst tst.b D1 bsr.b GetCC blt.b MinusOneCmp bgt.b OneCmp bra.b ZeroCmp SPAbs and.b #$7F,D0 rts SPDiv movem.l D3-D5,-(SP) move.b D1,D5 beq.b DivZero move.l D0,D4 beq.b DivQuit moveq #-$80,D3 add.w D5,D5 add.w D4,D4 eor.b D3,D5 eor.b D3,D4 sub.b D5,D4 bvs.b DivOflow clr.b D0 swap D0 swap D1 cmp.w D1,D0 bmi.b DivMinus addq.b #2,D4 bvs.b DivOverflow ror.l #1,D0 DivMinus swap D0 move.b D3,D5 eor.w D5,D4 lsr.w #1,D4 move.l D0,D3 divu.w D1,D3 move.w D3,D5 mulu.w D1,D3 sub.l D3,D0 swap D0 swap D1 move.w D1,D3 clr.b D3 mulu.w D5,D3 sub.l D3,D0 bcc.b DivOK DivMore subq.w #1,D5 add.l D1,D0 bcc.b DivMore DivOK move.l D1,D3 swap D3 clr.w D0 divu.w D3,D0 swap D5 bmi.b DivNorm move.w D0,D5 add.l D5,D5 subq.b #1,D4 move.w D5,D0 DivNorm move.w D0,D5 add.l #$80,D5 move.l D5,D0 move.b D4,D0 beq.b DivUnder DivQuit movem.l (SP)+,D3-D5 rts DivZero divu.w #0,D0 ; call divide by zero handler bra.b DivSkip DivOverflow swap D1 swap D0 DivFlow eor.b D1,D0 DivSkip or.l #$FFFFFF7F,D0 tst.b D0 or.b #2,CCR ; SET OVERFLOW BIT ON bra.b DivQuit MulUnder DivOflow bmi.b DivFlow MulZero DivUnder moveq #0,D0 bra.b DivQuit MulNorma subq.b #1,D5 bvs.b MulZero bcs.b MulZero moveq #$40,D4 add.l D4,D0 add.l D0,D0 bcc.b MulNumber roxr.l #1,D0 addq.b #1,D5 MulNumber move.b D5,D0 beq.b MulZero bra.b MulQuit SPMul movem.l D3-D5,-(SP) move.b D0,D5 beq.b MulQuit move.b D1,D4 beq.b MulZero add.w D5,D5 add.w D4,D4 moveq #-$80,D3 eor.b D3,D4 eor.b D3,D5 add.b D4,D5 bvs.b MulUnder move.b D3,D4 eor.w D4,D5 ror.w #1,D5 swap D5 move.w D1,D5 clr.b D0 clr.b D5 move.w D5,D4 mulu.w D0,D4 swap D4 move.l D0,D3 swap D3 mulu.w D5,D3 add.l D3,D4 swap D1 move.l D1,D3 mulu.w D0,D3 add.l D3,D4 clr.w D4 addx.b D4,D4 swap D4 swap D0 mulu.w D1,D0 swap D1 swap D5 add.l D4,D0 bpl.b MulNorma add.l #$80,D0 move.b D5,D0 beq.b MulZero MulQuit movem.l (SP)+,D3-D5 rts SPFix move.b D0,D1 bmi.b FixMinus beq.b FixQuit sub.b #$41,D1 bmi.b Zero sub.b #$1F,D1 bpl.b FixPlus clr.b D0 neg.b D1 lsr.l D1,D0 FixQuit rts FixPlus moveq #-1,D0 lsr.l #1,D0 bra.b FixCCR FixMinus sub.b #$C1,D1 bmi.b Zero clr.b D0 sub.b #$1F,D1 bpl.b FixOflow neg.b D1 lsr.l D1,D0 neg.l D0 rts FixOflow bne.b FixOver neg.l D0 bmi.b FixQuit FixOver moveq #1,D0 ror.l #1,D0 FixCCR or.b #2,CCR ; SET OVERFLOW BIT ON rts LibClose subq.w #1,$20(A6) LibReserved LibExpunge Zero moveq #0,D0 rts SPCeil bsr.b SPNeg bsr.b SPFloor SPNeg tst.b D0 beq.b ZeroNeg eor.b #$80,D0 ZeroNeg rts SPFloor move.b D0,D1 bmi.b MinusFloor beq.b QuitFloor sub.b #$41,D1 bmi.b Zero sub.b #$1F,D1 bpl.b PlusFloor neg.b D1 lsr.l D1,D0 lsl.l D1,D0 neg.b D1 PlusFloor add.b #$60,D1 move.b D1,D0 QuitFloor rts MinusFloor bsr.b SPNeg move.l D0,-(SP) bsr.b SPFloor move.l (SP),D1 exg D0,D1 move.l D1,-(SP) bsr.b SPSub movem.l (SP)+,D0/D1 beq.b SPNeg move.l #$80000041,D1 bsr.b SPAdd bra.b SPNeg SPSub movem.l D3-D5,-(SP) moveq #-128,D3 move.b D1,D4 beq.b NoChange eor.b D3,D4 bmi.b Minus1 move.b D0,D5 bmi.b Minus2 bne.b Back1 Result move.l D1,D0 bra.b Restore Large cmp.b #$E8,D5 ble.b Result neg.b D5 clr.b D0 lsr.l D5,D0 move.l D1,D5 move.b D3,D5 add.l D5,D0 bcs.b Carry bra.b Restore NoChange tst.b D0 bra.b QuitAdd SPAdd movem.l D3-D5,-(SP) moveq #-128,D3 move.b D1,D4 bmi.b Minus1 beq.b NoChange move.b D0,D5 bmi.B Minus2 beq.b Result Back1 sub.b D4,D5 bmi.b Large move.b D0,D4 cmp.b #$18,D5 bcc.b NoChange move.b D3,D0 move.l D1,D3 clr.b D3 lsr.l D5,D3 add.l D3,D0 bcs.b Carry Restore move.b D4,D0 QuitAdd movem.l (SP)+,D3-D5 rts Carry roxr.l #1,D0 addq.b #1,D4 bvs.b Overflow bcc.b Restore Overflow moveq #-1,D0 subq.b #1,D4 move.b D4,D0 or.b #2,CCR bra.b QuitAdd Minus1 move.b D0,D5 bmi.b Back1 beq.b Result Minus2 eor.b D3,D5 sub.b D4,D5 beq.b Equal bmi.b Large2 cmp.b #$18,D5 bcc.b NoChange move.b D0,D4 move.b D3,D0 move.l D1,D3 Back2 clr.b D3 lsr.l D5,D3 sub.l D3,D0 bmi.b Restore Back3 move.b D4,D5 Back4 clr.b D0 subq.b #1,D4 cmp.l #$7FFF,D0 bhi.b Shift swap D0 sub.b #$10,D4 Shift add.l D0,D0 dbmi D4,Shift eor.b D4,D5 bmi.b Under move.b D4,D0 bne.b QuitAdd Under moveq #0,D0 bra.b QuitAdd Large2 cmp.b #$E8,D5 ble.w Result neg.b D5 move.l D0,D3 move.l D1,D0 move.b #$80,D0 bra.b Back2 Equal move.b D0,D5 exg D5,D4 move.b D1,D0 sub.l D1,D0 beq.b Under bpl.b Back3 neg.l D0 move.b D5,D4 bra.b Back4 mathffplibrar.MSG dc.b 'mathffp.library',0 mathffp401163.MSG dc.b 'mathffp 41.0 (1.2.2012)',$D,$A,0 cnop 0,4 EndSkip |
14 February 2012, 14:02 | #8 |
Registered User
Join Date: Jan 2008
Location: Warsaw/Poland
Age: 55
Posts: 1,957
|
Misc.resource structures optimised by meynaf. Thanks.
Code:
; Resourced version of misc.resource (37.1) from Amiga ROM 3.1 for Amiga68k ROM 1.0 ; For easy recognition all changes are done using lower cases and ";" signs ; Original code is removed with ";" signs ; New code is added using lower cases only ; We made it... ; OS Group: Bryce Nesbitt, Michael Sinz, Peter Cherna, Darren Greenwald, Randell Jesup, Jerry Horanoff ; GFX: Allan Havemose, Bart 'Kodiak' Whitebook, Spence Shanson, Steve Beats, Chris Green, Ray Brand, Jim Barkley ; Special Projects: Eric Cotton, Martin Hunt, Bill Koester, Martin Taillefer, Brian Jackson, Kaori Kuwata, David Junod, Palmyra Pawlik, Kevin Klop ; NET: Brian Jackson, Greg Miller, Kenneth Dyke ; GUI: Peter Cherna, Martin Taillefer, David Junod, Kaori Kuwata ; Others: Andy Finkel, Dale 'Duck' Luck, Jim 'Jimm' Mackraz, Jeff Porter, Carolyn Scheppner, David Haynie, ; Lauren Brown, CATS (Commodore Amiga Technical Support), QA (Quality Assurance), SA (Software Assurance) ; Thanks to: Bill Hawes, Software Distillery ; Better than ever. ;lbC03FE6C ILLEGAL ; dc.l lbC03FE6C ; dc.l lbW03FF1C ; dc.l $1250846 ; dc.l miscresource.MSG ; dc.l misc3718191.MSG ; dc.l lbC03FEAC ;miscresource.MSG dc.b 'misc.resource',0 ;misc3718191.MSG dc.b 'misc 37.1 (8.1.91)',$D,$A,0 ; dc.b 0 ; dc.b 0 ; dc.b 0 ;lbC03FEAC MOVE.L A2,-(SP) ; LEA lbW03FF14(PC),A0 ; LEA lbW03FECC(PC),A1 ; SUBA.L A2,A2 ; MOVEQ #$32,D0 ; JSR -$54(A6) ; TST.L D0 ; BEQ.S lbC03FEC8 ; MOVEA.L D0,A1 ; JSR -$1E6(A6) ;lbC03FEC8 MOVEA.L (SP)+,A2 ; RTS ;lbW03FECC dc.w $A008 ; dc.w $800 ; dc.w $800A ; dc.l miscresource.MSG ; dc.l $A00E0600 ; dc.l $90140025 ; dc.l $90160001 ; dc.w 0 ;lbC03FEE4 MOVEA.L 4.W,A0 ; EXG A0,A6 ; LSL.W #2,D0 ; MOVE.W D0,D1 ; ADDQ.B #1,$127(A6) ; MOVE.L $22(A0,D1.W),D0 ; BNE.S lbC03FEFC ; MOVE.L A1,$22(A0,D1.W) ;lbC03FEFC MOVE.L A6,-(SP) ; MOVEA.L 4.W,A6 ; JSR -$8A(A6) ; Permit - This call is guaranteed to preserve all registers. ; MOVEA.L (SP)+,A6 ; EXG A0,A6 ; RTS ;lbC03FF0C LSL.W #2,D0 ; CLR.L $22(A6,D0.W) ; RTS ;lbW03FF14 dc.w $FFFF ; dc.w lbC03FEE4-lbW03FF14 ; dc.w lbC03FF0C-lbW03FF14 ; dc.w $FFFF ;lbW03FF1C MatchTag ILLEGAL ; match word dc.l MatchTag ; match tag dc.l EndSkip ; end skip dc.b $81 ; flags dc.b $26 ; version dc.b 8 ; type dc.b $46 ; priority dc.l miscresource.MSG ; name dc.l misc3718191.MSG ; id string dc.l MakeLibrary ; init MakeLibrary dc.l $32 ; $22=struct library, +4.l dc.l Vectors dc.l Structure ; cf. exec/InitStruct dc.l 0 ; init code (0=none) Structure dc.w $A608 ; off=08, siz=.b, len=6+1 dc.b 8 ; type=resource (8) dc.b 0 ; pri (9) dc.l miscresource.MSG ; name (a) dc.b 6 ; flags (e) dc.b 0 ; pad dc.w $9114 ; off=14, siz=.w, len=1+1 dc.w 38,0 ; old 37,1 dc.w 0 ; no more ; D0 - input ; A1 - input ; A6 - resource base AllocMiscResource move.l A6,-(SP) lsl.w #2,D0 lea $22(A6,D0.W),A0 move.l 4.W,A6 addq.b #1,$127(A6) move.l (A0),D0 bne.b Permit move.l A1,(A0) Permit jsr -$8A(A6) ; Permit - This call is guaranteed to preserve all registers. move.l (SP)+,A6 rts ; D0 - input ; A6 - resource base FreeMiscResource lsl.w #2,D0 clr.l $22(A6,D0.W) rts Vectors dc.w $FFFF dc.w AllocMiscResource-Vectors ; -6 _LVOAllocMiscResource dc.w FreeMiscResource-Vectors ; -12 _LVOFreeMiscResource dc.w $FFFF miscresource.MSG dc.b 'misc.resource',0 misc3718191.MSG dc.b 'misc 38.0 (13.2.2012)',$D,$A,0 cnop 0,4 EndSkip |
17 October 2012, 09:17 | #9 |
Registered User
Join Date: Apr 2010
Location: Amigaplanet
Posts: 645
|
Don, you are the ROMGOD! Thank you for your work...
|
17 October 2012, 09:46 | #10 |
Paranoid Amigoid
Join Date: Mar 2008
Location: Athens/Greece
Age: 45
Posts: 1,978
|
All these mini modules, work just fine in my custom 3.9 ROM using also the newest DOS.library without issues!
Keep up the good work mate |
19 October 2012, 03:16 | #11 |
Registered User
Join Date: Sep 2008
Location: Germany
Posts: 331
|
|
04 November 2012, 18:24 | #12 |
Registered User
Join Date: Jan 2008
Location: Warsaw/Poland
Age: 55
Posts: 1,957
|
|
09 November 2012, 18:01 | #13 |
Registered User
Join Date: Jan 2008
Location: Warsaw/Poland
Age: 55
Posts: 1,957
|
Two more ROM-s part is now available.
Wbfind (original in C), especially for Ratte, not tested by me. Code:
; Resourced version of wbfind (40.1) from Amiga ROM 3.1 for Amiga68k ROM 1.0 ; For easy recognition all changes are done using lower cases and ";" signs ; Original code is removed with ";" signs ; New code is added using lower cases only ; We made it... ; OS Group: Bryce Nesbitt, Michael Sinz, Peter Cherna, Darren Greenwald, Randell Jesup, Jerry Horanoff ; GFX: Allan Havemose, Barry 'Bart' Whitebook, Spence Shanson, Steve Beats, Chris Green, Ray Brand, Jim Barkley ; Special Projects: Eric Cotton, Martin Hunt, Bill Koester, Martin Taillefer, Brian Jackson, Kaori Kuwata, David Junod, Palmyra Pawlik, Kevin Klop ; NET: Brian Jackson, Greg Miller, Kenneth Dyke ; GUI: Peter Cherna, Martin Taillefer, David Junod, Kaori Kuwata ; Others: Andy Finkel, Dale 'Duck' Luck, Jim 'Jimm' Mackraz, Bob 'Kodiak' Burns, Jeff Porter, Carolyn Scheppner, David Haynie, ; Lauren Brown, CATS (Commodore Amiga Technical Support), QA (Quality Assurance), SA (Software Assurance) ; Thanks to: Bill Hawes, Software Distillery ; Better than ever. ;MatchTag ; ILLEGAL ; match word ; dc.l MatchTag ; match tag ; dc.l EndSkip ; end skip ; dc.b 4 ; flags ; dc.b $28 ; version ; dc.b 0 ; type ; dc.b $92 ; priority ; dc.l wbfind4017693.MSG ; name ; dc.l wbfind4017693.MSG ; id string ; dc.l Init ; init code ;wbfind4017693.MSG dc.b 'wbfind 40.1 (7.6.93)',$D,$A,0 ; dc.b 'Nq',0 ;lbL000034 dc.l 0 ; LEA lbL000034(PC),A0 ; JMP lbC0001CE ;lbW000042 dc.w 0 ;Init SUBA.W #12,SP ; MOVEM.L D2/D6/D7/A2-A6,-(SP) ; MOVEA.L A6,A5 ; exec base ; MOVE.L A6,$28(SP) ; exec base ; LEA doslibrary.MSG(PC),A1 ; MOVEQ #$25,D0 ; JSR -$228(A6) ; open library ; MOVEA.L D0,A4 ; dos base ; MOVE.L D0,$24(SP) ; dos base ; BEQ.L lbC000174 ; LEA lbW000042,A0 ; MOVE.L A0,D7 ; LEA lbL000034,A1 ; SUB.L A1,D7 ; LEA LIBSworkbench.MSG(PC),A0 ; MOVE.L A0,D1 ; MOVEQ #-2,D2 ; MOVEA.L A4,A6 ; dos library ; JSR -$54(A6) ; Lock ; MOVE.L D0,D6 ; BEQ.S lbC000092 ; MOVE.L D6,D1 ; JSR -$5A(A6) ; UnLock ; BRA.L lbC00016C ;lbC000092 LEA lbW000042,A0 ; MOVE.L A0,D0 ; LEA lbL000034,A1 ; SUB.L A1,D0 ; MOVEQ #$64,D1 ; ADD.L D1,D0 ; MOVE.L #$10001,D1 ; MOVEA.L A5,A6 ; JSR -$2AC(A6) ; AllocVec ; MOVE.L D0,$20(SP) ; BEQ.L lbC00016C ; MOVEA.L D0,A1 ; LEA lbL000034,A0 ; MOVE.L D7,D0 ; JSR -$270(A6) ; JSR -$27C(A6) ; MOVEQ #9,D1 ; MOVEA.L A4,A6 ; JSR -$28E(A6) ; LockDosList ; MOVEA.L D0,A2 ; BRA.S lbC00011C ;lbC0000D8 ADDA.L D7,A3 ; MOVEA.L A3,A5 ; MOVE.L $28(A2),D0 ; ASL.L #2,D0 ; MOVEA.L D0,A0 ; LEA 1(A0),A4 ; MOVE.B (A0),D6 ; EXT.W D6 ; EXT.L D6 ; BRA.S lbC0000F2 ;lbC0000F0 MOVE.B (A4)+,(A5)+ ;lbC0000F2 MOVE.L D6,D0 ; SUBQ.L #1,D6 ; TST.L D0 ; BNE.S lbC0000F0 ; LEA libsworkbench.MSG(PC),A4 ;lbC0000FE MOVE.B (A4)+,D0 ; MOVE.B D0,(A5)+ ; BNE.S lbC0000FE ; MOVEA.L $24(SP),A4 ; dos base ; MOVE.L A3,D1 ; MOVEQ #-2,D2 ; MOVEA.L A4,A6 ; JSR -$54(A6) ; Lock ; MOVE.L D0,D6 ; BEQ.S lbC00011C ; MOVE.L D6,D1 ; JSR -$5A(A6) ; UnLock ;lbC00011C MOVE.L A2,D1 ; MOVEQ #9,D2 ; MOVEA.L A4,A6 ; JSR -$2B2(A6) ; NextDosEntry ; MOVEA.L D0,A2 ; MOVEA.L $20(SP),A3 ; TST.L D0 ; BEQ.S lbC000134 ; TST.L D6 ; BEQ.S lbC0000D8 ;lbC000134 MOVEQ #9,D1 ; MOVEA.L A4,A6 ; JSR -$294(A6) ; UnLockDosList ; MOVEA.L $28(SP),A5 ; TST.L D6 ; BEQ.S lbC000164 ; MOVEA.L A5,A6 ; exec base ; JSR -$84(A6) ; Forbid ; LEA $FFFFFDD8,A0 ; funcOffset A0.W ; LEA 4(A3),A1 ; MOVE.L A1,D0 ; funcEntry D0 ; MOVEA.L A5,A1 ; library A1 ; JSR -$1A4(A6) ; SetFunction ; MOVE.L D0,(A3) ; JSR -$8A(A6) ; Permit ; BRA.S lbC00016C ;lbC000164 MOVEA.L A3,A1 ; MOVEA.L A5,A6 ; JSR -$2B2(A6) ; FreeVec ;lbC00016C MOVEA.L A4,A1 ; MOVEA.L A5,A6 ; JSR -$19E(A6) ; CloseLibrary ;lbC000174 MOVEQ #0,D0 ; MOVEM.L (SP)+,D2/D6/D7/A2-A6 ; ADDA.W #12,SP ; RTS ;doslibrary.MSG dc.b 'dos.library',0 ;LIBSworkbench.MSG dc.b 'LIBS:workbench.library',0,0 ;libsworkbench.MSG dc.b ':libs/workbench.library',0 ;workbenchlibr.MSG dc.b 'workbench.library',0 ;lbC0001CE SUBQ.W #4,SP ; MOVEM.L D6/D7/A2-A6,-(SP) ; MOVE.L D0,D7 ; MOVEA.L A1,A4 ; library name ; MOVEA.L A0,A5 ; MOVEA.L (A5),A3 ; MOVE.L A6,$1C(SP) ; JSR (A3) ; MOVE.L D0,D6 ; BNE.S lbC00021C ; LEA workbenchlibr.MSG(PC),A2 ; BRA.S lbC0001F0 ;lbC0001EC ADDQ.L #1,A4 ; ADDQ.L #1,A2 ;lbC0001F0 MOVE.B (A4),D0 ; BEQ.S lbC0001F8 ; CMP.B (A2),D0 ; BEQ.S lbC0001EC ;lbC0001F8 MOVE.B (A4),D0 ; CMP.B (A2),D0 ; BNE.S lbC00021C ; LEA lbW000042,A0 ; MOVE.L A0,D0 ; LEA lbL000034,A1 ; SUB.L A1,D0 ; MOVEA.L A5,A1 ; ADDA.L D0,A1 ; MOVE.L D7,D0 ; MOVEA.L $1C(SP),A6 ; JSR (A3) ; MOVE.L D0,D6 ;lbC00021C MOVE.L D6,D0 ; MOVEM.L (SP)+,D6/D7/A2-A6 ; ADDQ.W #4,SP ; RTS ; dc.w 0 ;EndSkip MatchTag ILLEGAL ; match word dc.l MatchTag ; match tag dc.l EndSkip ; end skip dc.b 4 ; flags dc.b $29 ; version dc.b 0 ; type dc.b $92 ; priority dc.l wbfind4017693.MSG ; name dc.l wbfind4017693.MSG ; id string dc.l Init ; init code BaseWB dc.l 0 lea BaseWB(PC),A0 jmp NewOpenLibrary ; don't optimise/change this !!! BaseWBEnd Init movem.l D2/D6/D7/A3-A6,-(SP) move.l A6,A5 ; exec base moveq #4,D0 ; dos library jsr -$32A(A6) ; TaggedOpenLibrary move.l D0,D7 ; dos base beq.b Error lea LIBSworkbench.MSG(PC),A0 move.l A0,D1 moveq #-2,D2 move.l D7,A6 ; dos base jsr -$54(A6) ; Lock move.l D0,D6 beq.b AllocVec move.l D6,D1 jsr -$5A(A6) ; UnLock move.l A5,A6 bra.b Close AllocVec moveq #$64+(BaseWBEnd-BaseWB),D0 move.l #$10001,D1 ; cleared chip mem move.l A5,A6 jsr -$2AC(A6) ; AllocVec tst.l D0 beq.b Close move.l D0,A3 move.l D0,A1 lea BaseWB(PC),A0 moveq #(BaseWBEnd-BaseWB),D0 jsr -$270(A6) ; CopyMem jsr -$27C(A6) ; CacheClearU moveq #9,D1 move.l D7,A6 ; dos base jsr -$28E(A6) ; LockDosList move.l D0,A4 bra.b Next Free move.l A3,A1 move.l A5,A6 jsr -$2B2(A6) ; FreeVec Close move.l D7,A1 jsr -$19E(A6) ; CloseLibrary moveq #0,D0 Error movem.l (SP)+,D2/D6/D7/A3-A6 rts Loop lea BaseWBEnd-BaseWB(A3),A1 ; destination move.l A1,D1 ; for Lock move.l $28(A4),A0 add.l A0,A0 add.l A0,A0 moveq #0,D0 move.b (A0)+,D0 ; source bra.b DoCopy CopyName move.b (A0)+,(A1)+ DoCopy dbf D0,CopyName lea libsworkbench.MSG(PC),A0 Copy move.b (A0)+,(A1)+ bne.b Copy moveq #-2,D2 jsr -$54(A6) ; Lock move.l D0,D6 beq.b Next move.l D6,D1 jsr -$5A(A6) ; UnLock Next move.l A4,D1 moveq #9,D2 jsr -$2B2(A6) ; NextDosEntry tst.l D0 beq.b Unlock move.l D0,A4 tst.l D6 beq.b Loop Unlock moveq #9,D1 jsr -$294(A6) ; UnLockDosList tst.l D6 beq.b Free move.l A5,A6 ; exec base jsr -$84(A6) ; Forbid lea -552.W,A0 ; funcOffset A0.W move.l A3,D0 addq.l #4,D0 ; funcEntry D0 move.l A5,A1 ; library A1 jsr -$1A4(A6) ; SetFunction move.l D0,(A3) jsr -$8A(A6) ; Permit bra.b Close ; D0 - input (lib version) ; A0 - input (BaseWB) ; A1 - input (lib name) ; D0 - output (lib base) NewOpenLibrary movem.l D0/A0/A1,-(SP) move.l (A0),A0 jsr (A0) move.l D0,D1 beq.b Extra NoFound lea 12(SP),SP rts Extra moveq #17,D1 ; size of library name move.l 8(SP),A0 lea workbenchlibr.MSG(PC),A1 CheckName cmpm (A0)+,(A1)+ bne.b NoFound dbf D1,CheckName movem.l (SP)+,D0/A0/A1 lea BaseWBEnd-BaseWB(A0),A1 move.l (A0),A0 jmp (A0) LIBSworkbench.MSG dc.b 'LIBS:workbench.library',0 libsworkbench.MSG dc.b ':libs/' workbenchlibr.MSG dc.b 'workbench.library',0 wbfind4017693.MSG dc.b 'wbfind 41.0 (5.9.2012)',$D,$A,0 cnop 0,4 EndSkip Code:
; Resourced version of wbtask (39.1) from Amiga ROM 3.1 for Amiga68k ROM 1.0 ; For easy recognition all changes are done using lower cases and ";" signs ; Original code is removed with ";" signs ; New code is added using lower cases only ; We made it... ; OS Group: Bryce Nesbitt, Michael Sinz, Peter Cherna, Darren Greenwald, Randell Jesup, Jerry Horanoff ; GFX: Allan Havemose, Barry 'Bart' Whitebook, Spence Shanson, Steve Beats, Chris Green, Ray Brand, Jim Barkley ; Special Projects: Eric Cotton, Martin Hunt, Bill Koester, Martin Taillefer, Brian Jackson, Kaori Kuwata, David Junod, Palmyra Pawlik, Kevin Klop ; NET: Brian Jackson, Greg Miller, Kenneth Dyke ; GUI: Peter Cherna, Martin Taillefer, David Junod, Kaori Kuwata ; Others: Andy Finkel, Dale 'Duck' Luck, Jim 'Jimm' Mackraz, Bob 'Kodiak' Burns, Jeff Porter, Carolyn Scheppner, David Haynie, ; Lauren Brown, CATS (Commodore Amiga Technical Support), QA (Quality Assurance), SA (Software Assurance) ; Thanks to: Bill Hawes, Software Distillery ; Better than ever. ;MatchTag ; ILLEGAL ; match word ; dc.l MatchTag ; match tag ; dc.l EndSkip ; end skip ; dc.b 0 ; flags ; dc.b $27 ; version ; dc.b 1 ; type ; dc.b $88 ; priority ; dc.l workbenchtask.MSG ; name ; dc.l wbtag39120492.MSG ; id string ; dc.l Init ; init code ;Init ; dc.l 0 ; MOVEQ #0,D2 ; BRA.S lbC03FF4E ; dc.l 0 ; MOVEQ #1,D2 ; BRA.S lbC03FF4E ; dc.l 0 ; MOVEQ #2,D2 ;lbC03FF4E MOVEM.L D2/A2/A3/A6,-(SP) ; MOVEA.L 4.W,A6 ; MOVEA.L $114(A6),A2 ; LEA workbenchtask.MSG(PC),A0 ; MOVE.L A0,10(A2) ; CMPI.W #2,D2 ; BNE.S lbC03FF7A ; LEA $5C(A2),A0 ; JSR -$180(A6) ; WaitPort ; LEA $5C(A2),A0 ; JSR -$174(A6) ; GetMsg ; MOVEA.L D0,A3 ;lbC03FF7A MOVEQ #10,D0 ; workbench library ; JSR -$32A(A6) ; TaggedOpenLibrary ; TST.L D0 ; BEQ.S lbC03FFA8 ; MOVEA.L D0,A6 ; workbench library base ; CMPI.W #2,D2 ; BEQ.S lbC03FF92 ; MOVE.W D2,D0 ; MOVEQ #0,D1 ; BRA.S lbC03FF9A ;lbC03FF92 MOVE.L $18(A3),D0 ; MOVE.L $14(A3),D1 ;lbC03FF9A JSR -$2A(A6) ; workbench LVO's ; MOVEA.L A6,A1 ; workbench library base ; MOVEA.L 4.W,A6 ; JSR -$19E(A6) ; CloseLibrary ;lbC03FFA8 CMPI.W #2,D2 ; BNE.S lbC03FFB4 ; MOVEA.L A3,A1 ; JSR -$17A(A6) ; ReplyMsg ;lbC03FFB4 MOVEM.L (SP)+,D2/A2/A3/A6 ; RTS ;workbenchtask.MSG dc.b 'workbench.task',0 ;wbtag39120492.MSG dc.b 'wbtag 39.1 (20.4.92)',$D,$A,0 ;EndSkip MatchTag ILLEGAL ; match word dc.l MatchTag ; match tag dc.l EndSkip ; end skip dc.b 0 ; flags dc.b $28 ; version dc.b 1 ; type dc.b $88 ; priority dc.l workbenchtask.MSG ; name dc.l wbtag39120492.MSG ; id string dc.l Init ; init code ; The reason for the "NULL" bytes is that this is a "fake" segment list, ; which is because loadwb (at least up to v34) started ; the workbench via CreateProc(). Thus, the init pointer does not point to ; code to be executed in this case, but it is rather picked ; up by loadwb, divided by four and passed into CreateProc() for starting ; the workbench task (actually, process). An offset is added ; to this BPTR to implement various workbench parameters, i.e. "loadwb ; -debug" uses another entry point, loads d2 with a different ; value, and by that, configures the workbench differently through its ; init function. ; D2 is used as an input register to specify how the workbench is loaded, ; i.e. which options it was loaded with. Init dc.l 0 moveq #0,D2 bra.b TaskMe dc.l 0 moveq #1,D2 bra.b TaskMe dc.l 0 moveq #2,D2 TaskMe movem.l D2/D3/A2/A6,-(SP) move.l 4.W,A6 moveq #10,D0 ; workbench library jsr -$32A(A6) ; TaggedOpenLibrary move.l D0,D3 ; workbench lib base beq.b Quit move.l $114(A6),A2 lea workbenchtask.MSG(PC),A0 move.l A0,10(A2) move.l D2,D0 moveq #0,D1 subq.w #2,D2 bne.b Private lea $5C(A2),A0 jsr -$180(A6) ; WaitPort lea $5C(A2),A0 jsr -$174(A6) ; GetMsg move.l D0,A2 move.l $14(A2),D1 move.l $18(A2),D0 Private exg D3,A6 ; workbench lib base jsr -$2A(A6) ; wb private LVO move.l A6,A1 exg D3,A6 ; exec base jsr -$19E(A6) ; CloseLibrary tst.w D2 bne.b Quit move.l A2,A1 jsr -$17A(A6) ; ReplyMsg Quit movem.l (SP)+,D2/D3/A2/A6 rts workbenchtask.MSG dc.b 'workbench.task',0 wbtag39120492.MSG dc.b 'wbtag 40.0 (8.11.2012)',$D,$A,0 EndSkip |
10 November 2012, 12:06 | #14 |
R.I.P Smudge 18-08-16
Join Date: Aug 2005
Location: Leicester/UK
Age: 66
Posts: 3,968
|
Nice work
Any chance of carddisk.resource to include CF0: in the boot menu ? |
10 November 2012, 14:18 | #15 |
Paranoid Amigoid
Join Date: Mar 2008
Location: Athens/Greece
Age: 45
Posts: 1,978
|
Tested these modules as well and work like a charm
@Arnie It's not that simple mate. You also need a modified compactflash.device which certainly needs permissions from the author. |
10 November 2012, 18:40 | #16 |
Registered User
Join Date: Jan 2008
Location: Warsaw/Poland
Age: 55
Posts: 1,957
|
|
10 November 2012, 20:04 | #17 | |
R.I.P Smudge 18-08-16
Join Date: Aug 2005
Location: Leicester/UK
Age: 66
Posts: 3,968
|
Quote:
What's wrong with the compactflash.device... i.e., what needs to be altered? Messing around with the carddisk.resource in hex editor, I managed to get CF0: in the boot menu but the parameters for CF cards are for CC0: and I don't know how to change them? I could get the 3.9 rom to boot in WinUAE but not in my Amiga 600 so I couldn't test it to see if it booted CF0: Last edited by Arnie; 14 February 2013 at 22:44. |
|
11 November 2012, 23:03 | #18 | |
Registered User
Join Date: Sep 2008
Location: Germany
Posts: 331
|
Quote:
Better start helping aros68k ... |
|
17 November 2012, 16:59 | #19 |
Registered User
Join Date: Jan 2008
Location: Warsaw/Poland
Age: 55
Posts: 1,957
|
I know, both versions are identical except ID string. This ROM part is perhaps used by some programs to detect A3000 and A4000.
I know only 68K ASM, and don't want to learn C. Optimised version of wbfind is available. Code:
; Resourced version of wbfind (40.1) from Amiga ROM 3.1 for Amiga68k ROM 1.0 ; For easy recognition all changes are done using lower cases and ";" signs ; Original code is removed with ";" signs ; New code is added using lower cases only ; We made it... ; OS Group: Bryce Nesbitt, Michael Sinz, Peter Cherna, Darren Greenwald, Randell Jesup, Jerry Horanoff ; GFX: Allan Havemose, Barry 'Bart' Whitebook, Spence Shanson, Steve Beats, Chris Green, Ray Brand, Jim Barkley ; Special Projects: Eric Cotton, Martin Hunt, Bill Koester, Martin Taillefer, Brian Jackson, Kaori Kuwata, David Junod, Palmyra Pawlik, Kevin Klop ; NET: Brian Jackson, Greg Miller, Kenneth Dyke ; GUI: Peter Cherna, Martin Taillefer, David Junod, Kaori Kuwata ; Others: Andy Finkel, Dale 'Duck' Luck, Jim 'Jimm' Mackraz, Bob 'Kodiak' Burns, Jeff Porter, Carolyn Scheppner, David Haynie, ; Lauren Brown, CATS (Commodore Amiga Technical Support), QA (Quality Assurance), SA (Software Assurance) ; Thanks to: Bill Hawes, Software Distillery ; Better than ever. ;MatchTag ; ILLEGAL ; match word ; dc.l MatchTag ; match tag ; dc.l EndSkip ; end skip ; dc.b 4 ; flags ; dc.b $28 ; version ; dc.b 0 ; type ; dc.b $92 ; priority ; dc.l wbfind4017693.MSG ; name ; dc.l wbfind4017693.MSG ; id string ; dc.l Init ; init code ;wbfind4017693.MSG dc.b 'wbfind 40.1 (7.6.93)',$D,$A,0 ; dc.b 'Nq',0 ;lbL000034 dc.l 0 ; LEA lbL000034(PC),A0 ; JMP lbC0001CE ;lbW000042 dc.w 0 ;Init SUBA.W #12,SP ; MOVEM.L D2/D6/D7/A2-A6,-(SP) ; MOVEA.L A6,A5 ; exec base ; MOVE.L A6,$28(SP) ; exec base ; LEA doslibrary.MSG(PC),A1 ; MOVEQ #$25,D0 ; JSR -$228(A6) ; open library ; MOVEA.L D0,A4 ; dos base ; MOVE.L D0,$24(SP) ; dos base ; BEQ.L lbC000174 ; LEA lbW000042,A0 ; MOVE.L A0,D7 ; LEA lbL000034,A1 ; SUB.L A1,D7 ; LEA LIBSworkbench.MSG(PC),A0 ; MOVE.L A0,D1 ; MOVEQ #-2,D2 ; MOVEA.L A4,A6 ; dos library ; JSR -$54(A6) ; Lock ; MOVE.L D0,D6 ; BEQ.S lbC000092 ; MOVE.L D6,D1 ; JSR -$5A(A6) ; UnLock ; BRA.L lbC00016C ;lbC000092 LEA lbW000042,A0 ; MOVE.L A0,D0 ; LEA lbL000034,A1 ; SUB.L A1,D0 ; MOVEQ #$64,D1 ; ADD.L D1,D0 ; MOVE.L #$10001,D1 ; MOVEA.L A5,A6 ; JSR -$2AC(A6) ; AllocVec ; MOVE.L D0,$20(SP) ; BEQ.L lbC00016C ; MOVEA.L D0,A1 ; LEA lbL000034,A0 ; MOVE.L D7,D0 ; JSR -$270(A6) ; JSR -$27C(A6) ; MOVEQ #9,D1 ; MOVEA.L A4,A6 ; JSR -$28E(A6) ; LockDosList ; MOVEA.L D0,A2 ; BRA.S lbC00011C ;lbC0000D8 ADDA.L D7,A3 ; MOVEA.L A3,A5 ; MOVE.L $28(A2),D0 ; ASL.L #2,D0 ; MOVEA.L D0,A0 ; LEA 1(A0),A4 ; MOVE.B (A0),D6 ; EXT.W D6 ; EXT.L D6 ; BRA.S lbC0000F2 ;lbC0000F0 MOVE.B (A4)+,(A5)+ ;lbC0000F2 MOVE.L D6,D0 ; SUBQ.L #1,D6 ; TST.L D0 ; BNE.S lbC0000F0 ; LEA libsworkbench.MSG(PC),A4 ;lbC0000FE MOVE.B (A4)+,D0 ; MOVE.B D0,(A5)+ ; BNE.S lbC0000FE ; MOVEA.L $24(SP),A4 ; dos base ; MOVE.L A3,D1 ; MOVEQ #-2,D2 ; MOVEA.L A4,A6 ; JSR -$54(A6) ; Lock ; MOVE.L D0,D6 ; BEQ.S lbC00011C ; MOVE.L D6,D1 ; JSR -$5A(A6) ; UnLock ;lbC00011C MOVE.L A2,D1 ; MOVEQ #9,D2 ; MOVEA.L A4,A6 ; JSR -$2B2(A6) ; NextDosEntry ; MOVEA.L D0,A2 ; MOVEA.L $20(SP),A3 ; TST.L D0 ; BEQ.S lbC000134 ; TST.L D6 ; BEQ.S lbC0000D8 ;lbC000134 MOVEQ #9,D1 ; MOVEA.L A4,A6 ; JSR -$294(A6) ; UnLockDosList ; MOVEA.L $28(SP),A5 ; TST.L D6 ; BEQ.S lbC000164 ; MOVEA.L A5,A6 ; exec base ; JSR -$84(A6) ; Forbid ; LEA $FFFFFDD8,A0 ; funcOffset A0.W ; LEA 4(A3),A1 ; MOVE.L A1,D0 ; funcEntry D0 ; MOVEA.L A5,A1 ; library A1 ; JSR -$1A4(A6) ; SetFunction ; MOVE.L D0,(A3) ; JSR -$8A(A6) ; Permit ; BRA.S lbC00016C ;lbC000164 MOVEA.L A3,A1 ; MOVEA.L A5,A6 ; JSR -$2B2(A6) ; FreeVec ;lbC00016C MOVEA.L A4,A1 ; MOVEA.L A5,A6 ; JSR -$19E(A6) ; CloseLibrary ;lbC000174 MOVEQ #0,D0 ; MOVEM.L (SP)+,D2/D6/D7/A2-A6 ; ADDA.W #12,SP ; RTS ;doslibrary.MSG dc.b 'dos.library',0 ;LIBSworkbench.MSG dc.b 'LIBS:workbench.library',0,0 ;libsworkbench.MSG dc.b ':libs/workbench.library',0 ;workbenchlibr.MSG dc.b 'workbench.library',0 ;lbC0001CE SUBQ.W #4,SP ; MOVEM.L D6/D7/A2-A6,-(SP) ; MOVE.L D0,D7 ; MOVEA.L A1,A4 ; library name ; MOVEA.L A0,A5 ; MOVEA.L (A5),A3 ; MOVE.L A6,$1C(SP) ; JSR (A3) ; MOVE.L D0,D6 ; BNE.S lbC00021C ; LEA workbenchlibr.MSG(PC),A2 ; BRA.S lbC0001F0 ;lbC0001EC ADDQ.L #1,A4 ; ADDQ.L #1,A2 ;lbC0001F0 MOVE.B (A4),D0 ; BEQ.S lbC0001F8 ; CMP.B (A2),D0 ; BEQ.S lbC0001EC ;lbC0001F8 MOVE.B (A4),D0 ; CMP.B (A2),D0 ; BNE.S lbC00021C ; LEA lbW000042,A0 ; MOVE.L A0,D0 ; LEA lbL000034,A1 ; SUB.L A1,D0 ; MOVEA.L A5,A1 ; ADDA.L D0,A1 ; MOVE.L D7,D0 ; MOVEA.L $1C(SP),A6 ; JSR (A3) ; MOVE.L D0,D6 ;lbC00021C MOVE.L D6,D0 ; MOVEM.L (SP)+,D6/D7/A2-A6 ; ADDQ.W #4,SP ; RTS ; dc.w 0 ;EndSkip MatchTag ILLEGAL ; match word dc.l MatchTag ; match tag dc.l EndSkip ; end skip dc.b 4 ; flags dc.b $29 ; version dc.b 0 ; type dc.b $92 ; priority dc.l wbfind4017693.MSG ; name dc.l wbfind4017693.MSG ; id string dc.l Init ; init code Init movem.l D2/D6/D7/A3-A6,-(SP) move.l A6,A5 ; exec base moveq #4,D0 ; dos library jsr -$32A(A6) ; TaggedOpenLibrary move.l D0,D7 ; dos base beq.b Error lea LIBSworkbench.MSG(PC),A0 move.l A0,D1 moveq #-2,D2 move.l D7,A6 ; dos base jsr -$54(A6) ; Lock move.l D0,D6 beq.b AllocVec move.l D6,D1 jsr -$5A(A6) ; UnLock move.l A5,A6 bra.b Close AllocVec moveq #(32+24+4+NewOpenLibraryEnd-NewOpenLibrary),D0 moveq #1,D1 ; fast mem move.l A5,A6 jsr -$2AC(A6) ; AllocVec tst.l D0 beq.b Close move.l D0,A1 clr.l (A1)+ move.l A1,A3 lea NewOpenLibrary(PC),A0 moveq #(NewOpenLibraryEnd-NewOpenLibrary),D0 jsr -$270(A6) ; CopyMem jsr -$27C(A6) ; CacheClearU moveq #9,D1 move.l D7,A6 ; dos base jsr -$28E(A6) ; LockDosList move.l D0,A4 bra.b Next Free subq.l #4,A3 move.l A3,A1 move.l A5,A6 jsr -$2B2(A6) ; FreeVec Close move.l D7,A1 jsr -$19E(A6) ; CloseLibrary moveq #0,D0 Error movem.l (SP)+,D2/D6/D7/A3-A6 rts Loop lea NewOpenLibraryEnd-NewOpenLibrary(A3),A1 ; destination move.l A1,D1 ; for Lock move.l $28(A4),A0 add.l A0,A0 add.l A0,A0 moveq #0,D0 move.b (A0)+,D0 ; source bra.b DoCopy CopyName move.b (A0)+,(A1)+ DoCopy dbf D0,CopyName lea libsworkbench.MSG(PC),A0 Copy move.b (A0)+,(A1)+ bne.b Copy moveq #-2,D2 jsr -$54(A6) ; Lock move.l D0,D6 beq.b Next move.l D6,D1 jsr -$5A(A6) ; UnLock Next move.l A4,D1 moveq #9,D2 jsr -$2B2(A6) ; NextDosEntry tst.l D0 beq.b Unlock move.l D0,A4 tst.l D6 beq.b Loop Unlock moveq #9,D1 jsr -$294(A6) ; UnLockDosList tst.l D6 beq.b Free move.l A5,A6 ; exec base jsr -$84(A6) ; Forbid lea -552.W,A0 ; funcOffset A0.W move.l A3,D0 ; funcEntry D0 move.l A5,A1 ; library A1 jsr -$1A4(A6) ; SetFunction move.l D0,-(A3) jsr -$8A(A6) ; Permit bra.b Close ; D0 - input (lib version) ; A1 - input (lib name) ; D0 - output (lib base) NewOpenLibrary move.l D0,-(SP) move.l A1,-(SP) move.l NewOpenLibrary-4(PC),A0 jsr (A0) move.l (SP)+,A1 move.l D0,D1 beq.b Check NoWBlib addq.l #4,SP rts Check moveq #18-1,D1 ; size of library name lea workbenchlibr.MSG(PC),A0 CheckName cmpm (A0)+,(A1)+ bne.b NoWBlib dbf D1,CheckName move.l (SP)+,D0 ; version lea NewOpenLibraryEnd(PC),A1 move.l NewOpenLibrary-4(PC),A0 jmp (A0) NewOpenLibraryEnd LIBSworkbench.MSG dc.b 'LIBS:workbench.library',0 libsworkbench.MSG dc.b ':libs/' workbenchlibr.MSG dc.b 'workbench.library',0 wbfind4017693.MSG dc.b 'wbfind 41.0 (17.11.2012)',$D,$A,0 cnop 0,4 EndSkip |
20 November 2012, 12:56 | #20 |
Coder/webmaster/gamer
Join Date: Oct 2001
Location: Canberra/Australia
Posts: 2,629
|
So, as I read it, the ones which have been improved are:
filesystem.resource with DOS6/DOS7/DOS8 support battmem.resource bug fix misc.resource optimized potgo.resource optimized I am planning to incorporate these into the next version of BB4 if you don't object? |
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
Thread Tools | |
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Open-source scsi device | Don_Adan | Coders. System | 92 | 05 January 2024 01:48 |
Open-source dos.library | Don_Adan | Coders. System | 273 | 02 September 2020 00:42 |
Realistic Open Source Ports | fishyfish | Retrogaming General Discussion | 1 | 25 June 2013 08:10 |
NewsRog goes Open Source | Paul | News | 0 | 04 December 2004 16:37 |
BlitzBasic - Is now open source | Djay | Amiga scene | 2 | 08 February 2003 01:09 |
|
|