summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian A. Weber <chris@gna.ch>2020-06-27 02:17:36 +0200
committerChristian A. Weber <chris@gna.ch>2020-06-27 02:17:36 +0200
commitda0299fc11263c63bf48d4d525718c2a58bec78a (patch)
tree304784c320f6d197bc2a6e054886df4d08874080
parente70f34444ab59e8a2e1ebc9d52dc5ce09827f64c (diff)
downloadgameexec-da0299fc11263c63bf48d4d525718c2a58bec78a.tar.gz
gameexec-da0299fc11263c63bf48d4d525718c2a58bec78a.tar.bz2
gameexec-da0299fc11263c63bf48d4d525718c2a58bec78a.zip
ReadFile, WriteFile, LoadFile Copy-Paste von SysCDisk und CDisk in FileIO ausgelagert
-rw-r--r--CDisk.S152
-rw-r--r--FileIO.S170
-rw-r--r--SysCDisk.S207
3 files changed, 206 insertions, 323 deletions
diff --git a/CDisk.S b/CDisk.S
index fce2e0f..60c959e 100644
--- a/CDisk.S
+++ b/CDisk.S
@@ -34,6 +34,7 @@
** 29-Dec-90 V3.24 Gecrunchte Files werden automatisch entcruncht **
** 06-May-91 V4.00 Tada! Schreibroutine eingebaut **
** 16-Apr-92 V4.01 PP_SAVEMARGIN added, PowerPacker jetzt 100% **
+** 27-Jun-20 V4.02 File-Routinen nach FileIO.S gegen CopyPasta **
** **
*****************************************************************************
@@ -42,7 +43,6 @@
CRUNCH
-;;DEBUG
;;LIGHTSHOW
IFD DEBUG
@@ -55,16 +55,17 @@ DERR_WRONGDISK: EQU $26
DERR_WRONGPRODUCT: EQU $27
ENDC
-CUSTOMOFFSET: EQU $19BE
INCLUDE "MyExec.i"
INCLUDE "relcustom.i"
- ;; INCLUDE "protcustom.i"
INCLUDE "hardware/intbits.i"
INCLUDE "hardware/cia.i"
+
+ XREF ReplyPacket
+
IFD RAMVERSION
XREF ProcessFFSPacket ; Für ramdrive.device
ENDC
@@ -73,13 +74,15 @@ CUSTOMOFFSET: EQU $19BE
XREF PPDecrunch
ENDC
- XDEF InitDiskFunc ; Disk-System initialisieren
- XDEF SetNoDiskHandlerFunc
- XDEF ReadFileFunc ; 'Datei' lesen
- XDEF LoadFileFunc ; Speicher reservieren & File lesen
- XDEF LoadFastFileFunc ; FAST alloc & File lesen
- XDEF WriteFileFunc ; 'Datei' schreiben
- XDEF SendPacketFunc ; Asynchronen Lese-Request schicken
+ XDEF InitDiskFunc ; Disk-System initialisieren
+ XDEF SetNoDiskHandlerFunc ; Wird aufgerufen für Diskchange
+
+ XDEF ProcessNextRequest ; Wird von SendPacket() aufgerufen
+
+ IFND SYSTEM
+ XDEF GetD7A4A5
+ ENDC
+
***************************************************************************
@@ -298,96 +301,6 @@ SetNoDiskHandlerFunc:
***************************************************************************
-** **
-** R E A D F I L E - Datei von Disk an angegebene Adresse laden **
-** **
-** Parameter : D0.L : DiskAdresse (Disk/Track/Offset) der Datei **
-** A0.L : Ladeadresse **
-** **
-** Resultat : nix **
-** **
-***************************************************************************
-
-ReadFileFunc: movem.l d1/a0-a1,-(SP)
- moveq #0|DPF_REPLYBYTE,d1 ; LESEN
- bra.s APost ; Paket aufgeben
-
-
-***************************************************************************
-** **
-** W R I T E F I L E - Existierende 'Datei' auf Disk überschreiben **
-** **
-** Parameter : D0.L : DiskAdresse (Disk/Track/Offset) der Datei **
-** A0.L : Adresse der Daten für das File **
-** **
-** Resultat : nix **
-** **
-***************************************************************************
-
-WriteFileFunc: movem.l d1/a0-a1,-(SP)
- move.b #DPF_WRITE|DPF_REPLYBYTE,d1 ; SCHREIBEN
- bra.s APost ; Paket aufgeben
-
-
-***************************************************************************
-** **
-** L O A D F I L E - Speicher reservieren, Datei von Disk lesen **
-** **
-** Parameter : D0.L : DiskAdresse (Disk/Track/Offset) der Datei **
-** **
-** Resultat : D0.L : Adresse des Files, 0 if error **
-** Z-Bit: gelöscht wenn OK, gesetzt wenn Error **
-** **
-***************************************************************************
-
-LoadFileFunc: movem.l d1/a0-a1,-(SP)
- moveq #DPF_REPLYBYTE|DPF_ALLOCMEM,d1 ; Packet Flags
- bra.s APost ; Paket aufgeben
-
-LoadFastFileFunc:
- movem.l d1/a0-a1,-(SP)
- moveq #DPF_REPLYBYTE|DPF_ALLOCFASTMEM,d1 ; Packet Flags
- ;; bra.s APost ; Paket aufgeben
-
-
-APost: lea -dp_SIZEOF-2(SP),SP ; DiskPacket erstellen
- move.l a0,dp_Address(SP) ; Ladeadresse eintragen
- movea.l SP,a0 ; A0 : Packet
- move.l d0,dp_FileName(a0) ; Dateinamen eintragen
- lea dp_SIZEOF(SP),a1 ; A1 : End-Flag
- clr.b (a1) ; löschen
- move.l a1,dp_Reply(a0)
- move.b d1,dp_Flags(a0) ; DPF_REPLYBYTE [|DPF_WRITE] usw.
- bsr.s SendPacketFunc
-1$: tst.b (a1) ; Warten bis File geladen/geschrieben
- beq.s 1$
- move.l dp_Address(SP),d0 ; Resultat: Adresse
- lea dp_SIZEOF+2(SP),SP ; DiskPacket freigeben
- movem.l (SP)+,d1/a0-a1
- rts
-
-
-***************************************************************************
-** **
-** S E N D P A C K E T - Asynchronen Read-Request aufgeben **
-** **
-** Parameter : A0.L : Zeiger auf struct DiskPacket **
-** **
-** Resultat : nix **
-** **
-***************************************************************************
-
-SendPacketFunc: movem.l d7/a0-a1/a4-a5,-(SP)
- bsr GetD7A4A5 ; Für ProcessNextRequest()
- movea.l a0,a1 ; Packet
- lea meb_DiskList(a6),a0
- jsr meb_AddTail(a6) ; Packet anhängen
- bsr.s ProcessNextRequest ; System ankicken
- movem.l (SP)+,d7/a0-a1/a4-a5
- rts
-
-
-***************************************************************************
*** Nächsten Request aus Diskliste verarbeiten
@@ -410,7 +323,7 @@ ProcessNextRequest:
movea.l meb_RAMDiskBase(a6),a1 ; Filename=RAM-Basis
cmpi.l #FFSMAGIC,(a1) ; RAM-Disk in Ordnung ?
beq.s 1$ ; ja --->
- MSG <"RAMDISK CORRUPT, A0=PACKET, A1=BASE">
+ SMSG <"RAMDISK CORRUPT, PACKET=$%08lx, BASE=$%08lx">,a0,a1
1$: bsr ProcessFFSPacket ; Packet (A0) bearbeiten (FFS)
bsr ReplyPacket ; Packet (A0) beantworten
bra .EndProcReq ; --->
@@ -518,37 +431,6 @@ StartUnit: move.l d0,-(SP)
move.l (SP)+,d0
rts
-***************************************************************************
-
- *** Packet (A0) beantworten
-
-ReplyPacket: movem.l a0-a2,-(SP)
- movea.l a0,a2 ; A2 : Packet
-
- IFD CRUNCH
- bclr.b #DPB_CRUNCHED,dp_Flags(a2)
- beq.s 1$
- movea.l dp_Address(a2),a0 ; A0 : Start der gecrunchten Daten
- move.l dp_FileSize(a2),d0 ; D0 : File-Länge gecruncht
- move.l (a0),dp_FileSize(a2) ; Echte Länge für User
- bsr PPDecrunch ; File decrunchen
-1$:
- ENDC
- movea.l dp_Reply(a2),a1 ; A1 : User's Reply-Adresse
- btst.b #DPB_REPLYHANDLER,dp_Flags(a2)
- beq.s 2$
- movea.l a2,a0 ; A0 : Packet für User
- jsr (a1) ; ReplyHandler aufrufen
- bra.s 99$ ; --->
-2$:
- btst.b #DPB_REPLYBYTE,dp_Flags(a2)
- beq.s 3$
- st.b (a1) ; ReplyByte setzen
- ;; bra.s 99$ ; --->
-3$:
-99$: movem.l (SP)+,a0-a2
- rts
-
***************************************************************************
** **
@@ -924,9 +806,9 @@ DoWaitDMA:
.ReadError:
IFD DEBUG
- movea.l du_ActPacket(a3),a0 ; Für MSG
- MSG <"Read Error D0=Error A0=Packet A2=MFM A3=Unit">
- ELSEIF
+ movea.l du_ActPacket(a3),a0 ; Für SMSG
+ SMSG <"Read Error %d, Packet=$%08lx MFM=$%08lx Unit=$%08lx">,d0,a0,a2,a3
+ ELSE
move.w #$fff,$dff180 ; Weiss=Failure
ENDC
clr.w du_DiskNumber(a3) ; Ungültige Diskette
diff --git a/FileIO.S b/FileIO.S
new file mode 100644
index 0000000..74cd21b
--- /dev/null
+++ b/FileIO.S
@@ -0,0 +1,170 @@
+
+ IDNT FileIO
+ SECTION text,CODE
+
+
+ INCLUDE "MyExec.i"
+
+ XREF ProcessNextRequest
+
+ IFND SYSTEM
+ XREF GetD7A4A5
+ ENDC
+
+ IFD RAMVERSION
+ XREF ProcessFFSPacket ; Für ramdrive.device
+ ENDC
+
+ XDEF ReadFileFunc ; 'Datei' lesen
+ XDEF WriteFileFunc ; 'Datei' schreiben
+
+ XDEF LoadFileFunc ; Speicher reservieren & File lesen
+ XDEF LoadFastFileFunc ; FAST alloc & File lesen
+
+ XDEF SendPacketFunc ; Asynchronen Lese-Request schicken
+
+ XDEF ReplyPacket ; Internal helper for CDisk.S/SysCDisk.S
+
+
+
+***************************************************************************
+** **
+** R E A D F I L E - Datei von Disk an angegebene Adresse laden **
+** **
+** Parameter : D0.L : DiskAdresse (Disk/Track/Offset) der Datei **
+** A0.L : Ladeadresse **
+** **
+** Resultat : nix **
+** **
+***************************************************************************
+
+ReadFileFunc: movem.l d1/a0-a1,-(SP)
+ moveq #0|DPF_REPLYBYTE,d1 ; LESEN
+ bra.s APost ; Paket aufgeben
+
+
+***************************************************************************
+** **
+** W R I T E F I L E - Existierende 'Datei' auf Disk überschreiben **
+** **
+** Parameter : D0.L : DiskAdresse (Disk/Track/Offset) der Datei **
+** A0.L : Adresse der Daten für das File **
+** **
+** Resultat : nix **
+** **
+***************************************************************************
+
+WriteFileFunc: movem.l d1/a0-a1,-(SP)
+ move.b #DPF_WRITE|DPF_REPLYBYTE,d1 ; SCHREIBEN
+ bra.s APost ; Paket aufgeben
+
+
+***************************************************************************
+** **
+** L O A D F I L E - Speicher reservieren, Datei von Disk lesen **
+** **
+** Parameter : D0.L : DiskAdresse (Disk/Track/Offset) der Datei **
+** **
+** Resultat : D0.L : Adresse des Files, 0 if error **
+** Z-Bit: gelöscht wenn OK, gesetzt wenn Error **
+** **
+***************************************************************************
+
+LoadFileFunc: movem.l d1/a0-a1,-(SP)
+ moveq #DPF_REPLYBYTE|DPF_ALLOCMEM,d1 ; Packet Flags
+ bra.s APost ; Paket aufgeben
+
+LoadFastFileFunc:
+ movem.l d1/a0-a1,-(SP)
+ moveq #DPF_REPLYBYTE|DPF_ALLOCFASTMEM,d1 ; Packet Flags
+ ;; bra.s APost ; Paket aufgeben
+
+APost: lea -dp_SIZEOF-2(SP),SP ; DiskPacket erstellen
+ move.l a0,dp_Address(SP) ; Ladeadresse eintragen
+ movea.l SP,a0 ; A0 : Packet
+ move.l d0,dp_FileName(a0) ; Dateinamen eintragen
+ lea dp_SIZEOF(SP),a1 ; A1 : End-Flag
+ clr.b (a1) ; löschen
+ move.l a1,dp_Reply(a0)
+ move.b d1,dp_Flags(a0) ; DPF_REPLYBYTE [|DPF_WRITE] usw.
+ bsr SendPacketFunc
+1$:
+ SMSG <"Waiting ...">
+ tst.b (a1) ; Warten bis File geladen/geschrieben
+ beq.s 1$
+ move.l dp_Address(SP),d0 ; Resultat: Adresse
+ lea dp_SIZEOF+2(SP),SP ; DiskPacket freigeben
+ SMSG <"LoadFile done">
+ movem.l (SP)+,d1/a0-a1
+ rts
+
+
+***************************************************************************
+** **
+** S E N D P A C K E T - Asynchronen Read-Request aufgeben **
+** **
+** Parameter : A0.L : Zeiger auf struct DiskPacket **
+** **
+** Resultat : nix **
+** **
+***************************************************************************
+
+SendPacketFunc:
+ IFD SYSTEM
+ movem.l a0-a1,-(SP)
+ ELSE
+ movem.l d7/a0-a1/a4-a5,-(SP)
+ bsr GetD7A4A5 ; Für ProcessNextRequest() in CDisk.S (nicht in SysCDisk.S)
+ ENDC
+ movea.l a0,a1 ; Packet
+ lea meb_DiskList(a6),a0
+ jsr meb_AddTail(a6) ; Packet anhängen
+ bsr ProcessNextRequest ; System ankicken
+ IFD SYSTEM
+ movem.l (SP)+,a0-a1
+ ELSE
+ movem.l (SP)+,d7/a0-a1/a4-a5
+ ENDC
+ rts
+
+
+***************************************************************************
+
+ *** Packet (A0) beantworten
+
+ReplyPacket: movem.l d0/a0-a2,-(SP)
+ movea.l a0,a2 ; A2 : Packet
+ moveq #0,d0
+ move.b dp_Flags(a2),d0
+
+ ;;; SMSG <"ReplyPacket($%08lx), flags=$%02ld">,a2,d0
+
+ IFD CRUNCH
+ btst #DPB_CRUNCHED,d0
+ beq.s 1$
+ movea.l dp_Address(a2),a0 ; A0 : Start der gecrunchten Daten
+ move.l dp_FileSize(a2),d0 ; D0 : File-Länge gecruncht
+ move.l (a0),dp_FileSize(a2) ; Echte Länge für User
+ SMSG <"Decrunching %ld to %ld bytes at $%08lx">,d0,(a0),a0
+ bsr PPDecrunch ; File decrunchen
+1$:
+ ENDC
+ movea.l dp_Reply(a2),a1 ; A1 : User's Reply-Adresse
+ btst #DPB_REPLYHANDLER,d0
+ beq.s 2$
+ SMSG <"Calling reply handler $%08lx">,a1
+ movea.l a2,a0 ; A0 : Packet für User
+ jsr (a1) ; ReplyHandler aufrufen
+ bra.s 99$ ; --->
+2$:
+ btst #DPB_REPLYBYTE,d0
+ beq.s 3$
+ SMSG <"Setting reply byte $%08lx">,a1
+ st.b (a1) ; ReplyByte setzen
+ ;; bra.s 99$ ; --->
+3$:
+99$: movem.l (SP)+,d0/a0-a2
+ rts
+
+
+ END
diff --git a/SysCDisk.S b/SysCDisk.S
index 2d56e30..9385e1b 100644
--- a/SysCDisk.S
+++ b/SysCDisk.S
@@ -11,17 +11,15 @@
;CRUNCH
XREF _RawPrintfFunc
+ XREF ReplyPacket
IFD CRUNCH
XREF PPDecrunch
ENDC
- XDEF InitDiskFunc ; Disk-System initialisieren
+ XDEF InitDiskFunc ; Disk-System initialisieren
XDEF SetNoDiskHandlerFunc
- XDEF ReadFileFunc ; 'Datei' lesen
- XDEF WriteFileFunc ; 'Datei' schreiben
- XDEF LoadFileFunc ; Speicher reservieren & File lesen
- XDEF LoadFastFileFunc ; FAST alloc & File lesen
- XDEF SendPacketFunc ; Asynchronen Lese-Request schicken
+
+ XDEF ProcessNextRequest ; Wird von SendPacket() aufgerufen
***************************************************************************
@@ -39,7 +37,7 @@ InitDiskFunc: movem.l d0/a0,-(SP)
*** DiskRequest-Liste initialisieren
lea meb_DiskList(a6),a0
- jsr meb_NewList(a6)
+ SYSJSR NewList
movem.l (SP)+,d0/a0
rts
@@ -59,91 +57,6 @@ SetNoDiskHandlerFunc:
**************************************************************************
-** **
-** R E A D F I L E - 'Datei' von Disk lesen & MFM-dekodieren **
-** **
-** Parameter : D0.L : DiskAdresse (Disk/Track/Offset) der Datei **
-** A0.L : Ladeadresse **
-** **
-** Resultat : D0.L : Fehlernummer, 0 if successful **
-** Z-Bit: gesetzt if OK, gelöscht wenn Fehler **
-** **
-**************************************************************************
-
-ReadFileFunc: movem.l a0-a1,-(SP)
- lea -dp_SIZEOF-2(SP),SP ; DiskPacket erstellen
- move.l d0,dp_FileName(SP)
- move.l a0,dp_Address(SP)
- movea.l SP,a0 ; A0 : Packet
- lea dp_SIZEOF(SP),a1 ; A1 : End-Flag
- clr.b (a1) ; löschen
- move.l a1,dp_Reply(a0)
- move.b #DPF_REPLYBYTE,dp_Flags(a0)
- bsr.s SendPacketFunc
-1$: tst.b (a1) ; Warten bis File geladen!
- beq.s 1$
- lea dp_SIZEOF+2(SP),SP ; DiskPacket freigeben
- moveq #0,d0 ; Success ** DEBUG **
- movem.l (SP)+,a0-a1
- rts
-
-
-**************************************************************************
-** **
-** L O A D F I L E - Speicher reservieren, Datei von Disk lesen **
-** **
-** Parameter : D0.L : DiskAdresse (Disk/Track/Offset) der Datei **
-** **
-** Resultat : D0.L : Adresse des Files, 0 if error **
-** Z-Bit: gelöscht wenn OK, gesetzt wenn Error **
-** **
-**************************************************************************
-
-LoadFileFunc: movem.l d1/a0-a1,-(SP)
- moveq #DPF_REPLYBYTE|DPF_ALLOCMEM,d1 ; Packet Flags
- bra.s DoLoadFile ; --->
-
-LoadFastFileFunc:
- movem.l d1/a0-a1,-(SP)
- moveq #DPF_REPLYBYTE|DPF_ALLOCFASTMEM,d1 ; Packet Flags
- ;; bra.s DoLoadFile ; --->
-
-DoLoadFile: lea -dp_SIZEOF-2(SP),SP ; DiskPacket erstellen
- movea.l SP,a0 ; A0 : Packet
- lea dp_SIZEOF(SP),a1 ; A1 : End-Flag
- move.l d0,dp_FileName(a0)
- clr.b (a1) ; End-Flag löschen
- move.l a1,dp_Reply(a0)
- move.b d1,dp_Flags(a0) ; ReplyType & MemoryType
- bsr.s SendPacketFunc
-1$: tst.b (a1) ; Warten bis File geladen!
- beq.s 1$
- move.l dp_Address(SP),d0 ; Resultat: Adresse
- lea dp_SIZEOF+2(SP),SP ; Doesn't change CCR
- movem.l (SP)+,d1/a0-a1
- rts
-
-
-**************************************************************************
-** **
-** S E N D P A C K E T - Asynchronen Read-Request aufgeben **
-** **
-** Parameter : A0.L : Zeiger auf struct DiskPacket **
-** **
-** Resultat : nix **
-** **
-**************************************************************************
-
-SendPacketFunc: movem.l d7/a0-a1/a4-a5,-(SP)
- movea.l a0,a1 ; Packet
- lea meb_DiskList(a6),a0
- jsr meb_AddTail(a6) ; Packet anhängen
- bsr.s ProcessNextRequest ; System ankicken
- movem.l (SP)+,d7/a0-a1/a4-a5
- rts
-
-
-**************************************************************************
*** Nächsten Request aus Diskliste verarbeiten
@@ -154,16 +67,11 @@ ProcessNextRequest:
jsr meb_RemHead(a6) ; setzt CCR
beq .EndProcReq ; Kein Request pending --->
movea.l d0,a2 ; A2 : Aktuelles Packet
-
- *** "Loading 'filename' (flags)" auf Debug-Konsole ausgeben
-
+ IFD DEBUG
moveq #0,d0
- move.b dp_Flags(a2),d0
- move.w d0,-(SP)
- move.l dp_FileName(a2),-(SP)
- pea LoadingFmt(PC)
- bsr _RawPrintfFunc
- lea 10(SP),SP
+ move.b dp_Flags(a2),d0 ; für SMSG
+ SMSG <"Loading '%s' (flags=$%02lx) ... ">,dp_FileName(a2),d0
+ ENDC
*** Packet bearbeiten
@@ -172,28 +80,24 @@ ProcessNextRequest:
movea.l dp_FileName(a2),a0
bsr @CheckFile
move.l d0,d2 ; D2 : File-Länge
- move.l d2,-(SP)
bne 1$ ; OK -->
- pea NotFoundText(PC)
- bsr _RawPrintfFunc
- addq.w #4,SP
+ SMSG <"'%s': file not found!">,dp_FileName(a2)
bra .Error
-1$
+1$:
btst.b #DPB_ALLOCMEM,dp_Flags(a2) ; CHIP-Alloc gewünscht ?
beq.s .NoChipAlloc ; nein --->
move.l d2,d0 ; File-Länge
movea.l a5,a6 ; MyExecBase
- jsr meb_AllocMem(a6)
+ SYSJSR AllocMem
bra.s .AllocCont ; --->
.NoChipAlloc:
btst.b #DPB_ALLOCFASTMEM,dp_Flags(a2) ; FAST-Alloc gewünscht?
beq.s .NoFastAlloc ; nein --->
move.l d2,d0 ; File-Länge
movea.l a5,a6 ; MyExecBase
- jsr meb_AllocFastMem(a6)
+ SYSJSR AllocFastMem
.AllocCont: move.l d0,dp_Address(a2) ; Adresse ins Packet
.NoFastAlloc:
-
move.l dp_FileName(a2),d1
move.l #MODE_OLDFILE,d2
movea.l _DOSBase,a6
@@ -201,89 +105,25 @@ ProcessNextRequest:
move.l d0,d7
bne.s 2$
- movea.l dp_FileName(a2),a0
- lea df0buf,a1
-.copy: move.b (a0)+,(a1)+
- bne.s .copy
+.Error: movea.l a5,a6 ; MyExecBase
+ jmp meb_ColdReboot(a6) ; Raus hier!
- move.l #buf,d1
- JSRLIB Open
- move.l d0,d7
- beq.s .Error
-2$
- move.l d7,d1
+2$: move.l d7,d1
move.l dp_Address(a2),d2
move.l #10000000,d3
JSRLIB Read
- move.l d0,-(SP)
- pea BytesFmt(PC)
- bsr _RawPrintfFunc
- lea 8(SP),SP
+ SMSG <"Loaded %ld bytes at $%08lx">,d0,d2
move.l d7,d1
JSRLIB Close
-
+.DoReply
movea.l a2,a0
movea.l a5,a6 ; MyExecBase
- bsr.s ReplyPacket ; Packet (A0) beantworten
-
+ bsr ReplyPacket ; Packet (A0) beantworten
.EndProcReq: movem.l (SP)+,d0-d7/a0-a5
rts
-.Error: movea.l a5,a6 ; MyExecBase
- jmp meb_ColdReboot(a6) ; Raus hier!
-
-
-***************************************************************************
-
- *** Packet (A0) beantworten
-
-ReplyPacket: movem.l a0-a2,-(SP)
- movea.l a0,a2 ; A2 : Packet
- movea.l dp_Reply(a2),a1 ; A1 : User's Reply-Adresse
-
- *** Text ausgeben
-
- move.l dp_Address(a2),-(SP)
- pea LoadedFmt(PC)
- bsr _RawPrintfFunc
- lea 8(SP),SP
-
- IFD CRUNCH
- bclr.b #DPB_CRUNCHED,dp_Flags(a2)
- beq.s 1$
- movea.l dp_Address(a2),a0 ; A0 : Decrunch-Start
- move.l dp_FileSize(a2),d0 ; D0 : File-Länge gecruncht
- move.l (a0),dp_FileSize(a2) ; Echte Länge für User
- bsr PPDecrunch
-1$:
- ENDC
- btst.b #DPB_REPLYHANDLER,dp_Flags(a2)
- beq.s 2$
- movea.l a2,a0 ; A0 : Packet für User
- jsr (a1) ; ReplyHandler aufrufen
- bra.s 99$ ; --->
-2$:
- btst.b #DPB_REPLYBYTE,dp_Flags(a2)
- beq.s 3$
- st.b (a1) ; ReplyByte setzen
- ;; bra.s 99$ ; --->
-3$:
-99$: movem.l (SP)+,a0-a2
- rts
-
-**************************************************************************
-** **
-** W R I T E F I L E - Existierende 'Datei' auf Disk überschreiben **
-** **
-** Parameter : D0.L : FN_-Konstante (von DiskMaker erzeugt) **
-** A0.L : Adresse der Daten für das File **
-** **
-**************************************************************************
-
-WriteFileFunc: rts
-
**************************************************************************
* D A T E N (auch im CODE-Segment wegen PC-relativ) *
@@ -291,13 +131,4 @@ WriteFileFunc: rts
InsertDiskRoutine: ds.l 1 ; User's InsertDisk handler
-
-LoadingFmt: dc.b "Loading '%s' (flags=$%02x) ... ",0
-BytesFmt: dc.b "%ld bytes ",0
-LoadedFmt: dc.b "at $%08lx",10,13,0
-NotFoundText: dc.b "file not found",10,13,0
-
-buf: dc.b "DF0:"
-df0buf: ds.b 64
-
END