; ********************************************************* ; *** Schema di apertura e chiusura della TrackDisk.. *** ; ********************************************************* LVOFindTask: equ -$0126 LVOAddPort: equ -$0162 LVOOpenDevice: equ -$01BC LVORemPort: equ -$0168 LVOCloseDevice: equ -$01C2 ; Apre una porta messaggi start: move.l 4,A6 ; ExecBase -> A6 sub.l A1,A1 ; 0 -> A1 per ricercare l' indirizzo del proprio jsr LVOFindtask(A6) ; Task nella lista dei Tasks di Exec. lea MSGPort(pc),A1 add.w #$0010,A1 move.l D0,(A1) ; ^Task -> MP_SIGTASK lea MSGPort(pc),A1 ; Aggiunge alle porte del sistema la propria! jsr LVOAddPort(A6) ; Apre il Trackdisk.Device lea ExtRequestIO(pc),A1 move.l #0,D0 ; Select which DRIVE clr.l D1 ; DF0: DF1: DF2: DF3: ; D0 = 0 1 2 3 lea Trackdisk(pc),A0 jsr LVOOpenDevice(A6) lea ExtRequestIO(pc),A1 lea MSGPort(pc),A5 move.l A5,14(A1) ; ^MSGPort -> IO_DEVICE move.l #$30000,$0028(A1) ; ^BUFFER DATI -> $0028(A1) move.l #$0000400,$0024(A1) ; LUNGHEZZA -> $0024(A1) move.l #0,$002c(A1) ; TRACCIA move.w #2,$001c(a1) ; Comando -> $001C(A1) jsr -$01c8(A6) ; Esegue la Do I/O move.w #$4,$001c(a1) ; Updated jsr -$01c8(a6) clr.l $0024(A1) ; Procedura per lo spegnimento move.w #$9,$001c(A1) ; del motore del drive jsr -$01c8(A6) lea MSGPort(pc),A1 ; Chiude la porta messaggi jsr LVORemPort(a6) lea ExtRequestIO(pc),A1 ; Chiude la Trackdisk.device jsr LVOCloseDevice(A6) Clr.l D0 ; Azzera D0 evitando gli errori del DOS rts ; Buffers per i dati !!!!!!! Trackdisk: dc.b 'trackdisk.device',0 align 4 MSGPort: blk.b 34,0 ; Porta messaggi : 34 Bytes pag 270 align 4 ExtRequestIO: blk.b 56,0 ; Trackdisk Buffer : 56 Bytes pag 316