]> git.sesse.net Git - pistorm/blobdiff - platforms/amiga/piscsi/device_driver_amiga/bootrom.s
Map the default 128MB of Z3 Fast on Kick 1.3
[pistorm] / platforms / amiga / piscsi / device_driver_amiga / bootrom.s
index 23b0aefd35b2a0d6f8df5675fb075a90129b7b36..25721255083be884cc49a8aaaeaccca5ced572cb 100644 (file)
@@ -66,6 +66,7 @@ CloseLibrary    EQU -414
 OpenResource    EQU -$1F2
 AddResource     EQU -$1E6
 Enqueue         EQU -$10E
+AddMemList      EQU -$26A
 
 ; Expansion stuff
 MakeDosNode     EQU -144
@@ -261,8 +262,24 @@ Init:       ; After Diag patching, our romtag will point to this
             move.l  #3,PiSCSIDebugMe
             move.l a3,PiSCSIAddr4
 
-            move.l  #11,PiSCSIDebugMe
             movea.l 4,a6
+
+            move.l $10000040,d1
+            move.l #$feffeeff,$10000040
+            move.l $10000040,d0
+            cmp.l #$feffeeff,d0
+            bne.s NoZ3
+            move.l d1,$10000040
+
+            move.l #$8000000,d0         ; Add some Z3 fast RAM if it hasn't been moved (Kick 1.3)
+            move.l #$405,d1
+            move.l #10,d2
+            move.l #$10000000,a0
+            move.l #0,a1
+            jsr AddMemList(a6)
+
+NoZ3:
+            move.l  #11,PiSCSIDebugMe
             lea LibName(pc),a1
             jsr FindResident(a6)
             move.l  #10,PiSCSIDebugMe
@@ -389,17 +406,33 @@ FSResource:     dc.l    $0
 LoadFileSystems:
             movem.l d0-d7/a0-a6,-(sp)       ; Push registers to stack
             move.l #30,PiSCSIDebugMe
+ReloadResource:
             lea FileSysName(pc),a1
             jsr OpenResource(a6)
             tst.l d0
             bne FSRExists
 
             move.l #33,PiSCSIDebugMe        ; FileSystem.resource isn't open, create it
-            lea FSRes(pc),a1
-            move.l a1,-(a7)
-            jsr AddResource(a6)
-            move.l (a7)+,a0
-            move.l a0,d0
+                                            ; Code based on WinUAE filesys.asm
+
+            moveq #32,d0                    ; sizeof(FileSysResource)
+            move.l #$10001,d1
+            jsr AllocMem(a6)
+            move.l d0,a2
+            move.b #8,8(a2)                 ; NT_RESOURCE
+            lea FileSysName(pc),a0
+            move.l a0,10(a2)                ; node name
+            lea FileSysCreator(pc),a0
+            move.l a0,14(a2)                ; fsr_Creator
+            lea 18(a2),a0
+            move.l a0,(a0)                  ; NewList() fsr_FileSysEntries
+            addq.l #4,(a0)
+            move.l a0,8(a0)
+            lea $150(a6),a0                 ; ResourceList
+            move.l a2,a1
+            jsr -$f6(a6)                    ; AddTail
+            move.l a2,a0
+            bra.s ReloadResource
 
 FSRExists:  
             move.l d0,PiSCSIAddr2             ; PiSCSIAddr2 is now FileSystem.resource