* SimulBB
* Christophe LARATTE

; Ce source vous permet de tester vos programmes avant de les inclure
; sur un Bootbloc
; ATTENTION votre programme doit retourner *exec en A6
; SimulBB ne teste pas la validité des valeurs renvoyées par votre
; programme dans D0 et A0


FindTask        =       -294
RemPort         =       -360
AddPort         =       -354
OpenDevice      =       -444
CloseDevice     =       -450
DoIO            =       -456
AllocMem        =       -198
FindResident    =       -$60
FreeMem	        =       -210
CloseLibrary    =       -414
OldOpenLibrary  =       -408
OpenLibrary     =       -552
CMD_READ        =       2
TD_MOTOR        =       9
iotd_Command    =       28
iotd_Data       =       40
iotd_Length     =       36
iotd_Offset     =       44

        lea     TDError(pc),a0
        move.l  4.w,a6
        move.l  #0,a1
        jsr     FindTask(a6)
        lea     MyTask(pc),a0
        move.l  d0,(a0)
        lea     MsgPort(pc),a1
        jsr     AddPort(a6)
        lea     MsgPort(pc),a0
        lea     ReplyPort(pc),a1
        move.l  a0,(a1)
        moveq   #0,d0
        moveq   #0,d1
        lea     TrackdiskName(pc),a0
        lea     IOTrackdisk(pc),a1
        jsr     OpenDevice(a6)
        lea     IOTrackdisk(pc),a1
        lea     HEADER(pc),a4
        bsr     PROGRAM
        lea     IOTrackdisk(pc),a1
        jsr     CloseDevice(a6)
        lea     MsgPort(pc),a1
        jsr     RemPort(a6)
        rts

HEADER
        dc.l    'DOS',0
        dc.l    0
        dc.l    $370

PROGRAM
                                        ; a6 : *exec
                                        ; a1 : *IO request
                                        ; a4 : *HEADER

                                        ; mettez votre programme ici

        rts


**********       données pour le trackdisk         **********

IOTrackdisk     dc.l 0          ; *Succ         struct IOExtReq
                dc.l 0          ; *Pred
                dc.b 0          ; Type
                dc.b 0          ; Pri
                dc.l 0          ; *Name
ReplyPort       dc.l 0          ; *ReplyPort
                dc.w 0          ; Length
                dc.l 0          ; *device
                dc.l 0          ; Unit
                dc.w 0          ; Command
                dc.b 0          ; Flags
TDError         dc.b 0          ; Error
                dc.l 0          ; Actual
                dc.l 0          ; Length
                dc.l 0          ; Data
                dc.l 0          ; Offset
                dc.l 0          ; Count
                dc.l 0          ; SecLabel

MsgPort         dc.l 0          ; *succ                   struct MsgPort
                dc.l 0          ; *pred
                dc.b 0          ; type
                dc.b 0          ; pri
                dc.l 0          ; ad. du nom
                dc.b 0          ; Flags
                dc.b 0          ; SigBit
MyTask          dc.l 0          ; *SigTask
                dc.l 0          ; *lh_Head
                dc.l 0          ; *lh_Tail
                dc.l 0          ; *lh_TailPred
                dc.b 0          ; Type
                dc.b 0          ; Pad

TrackdiskName   dc.b "trackdisk.device",0

                END
