home *** CD-ROM | disk | FTP | other *** search
- ExecBase: EQU 4
- AllocSignal: EQu -$14a
- findtask: equ -$126
- freesignal: equ -$150
- allocmem: equ -$c6
- freemem: equ -$d2
- addport: equ -$162
- remport: equ -$168
- opendevice: equ -$1bc
- closedevice: equ -$1c2
- doio: equ -$1c8
- waitio: equ -$1d8
- alert: equ -$6c
- closelibrary: equ -$19e
- openlibrary: equ -$228
-
- open: equ -$1e
- close: equ -$24
- read: equ -$2a
- write: equ -$30
- input: equ -$36
- output: equ -$3c
- lock: equ -$54
- examine: equ -$66
-
- fibsize: equ 300
- filesize: equ 124
-
- CMD_reset: equ 1
- CMD_read: equ 2
- CMD_write: equ 3
- CMD_update: equ 4
- CMD_clear: equ 5
- CMD_stop: equ 6
- CMD_start: equ 7
- CMD_flush: equ 8
- TD_motor: equ 9
- TD_seek: equ 10
- TD_format: equ 11
- TD_remove: equ 12
- TD_changenum: equ 13
- TD_changestate: equ 14
- TD_protstatus: equ 15
-
- io_command: equ 28
- io_error: equ 30
- io_actual: equ 32
- io_lenght: equ 36
- io_data: equ 40
- io_offset: equ 44
-
- blocklongpos: equ $b8
-
- start:
- move.l execbase,a6
- move.l #dosname,a1
- clr.l d0
- jsr openlibrary(a6)
- move.l d0,dosbase
- beq nodos
- move.l #welcome,a0
- bsr print
- move.l #quest1,a0
- bsr print
- move.l bootname,a0
- bsr print
- move.l #quest2,a0
- bsr print
- bsr getchars
- move.b #0,-1(a0,d0) ;return loeschen
- cmp.w #1,d0
- bne default
- move.l bootname,a0
- default:
- move.l #1024,d1 ;minimalgr. wg. checksum
- bsr getfile
- move.l d0,fileort
- move.l d1,filelenght
- beq nofile
- add.w #511,d1
- lsr.l #8,d1
- lsr.l #1,d1
- sub.w #2,d1
- cmp.w #0,d1
- bgt ok
- move.w #0,d1
- ok:
- move.w d1,filesects
- move.l #quest3,a0
- bsr print
- bsr getchars
- move.l #0,d0
- bsr gettrackdisk
- move.l execbase,a6
- move.l #$0800,d0
- move.l #$10001,d1
- jsr allocmem(a6)
- move.l d0,tdbuffer
- bne goon1
- move.l #notdmem,a0
- bsr print
- bra cleanup3
- goon1:
- bsr motoron
- move.l tdbuffer,a0
- move.l #1024,d0
- move.l diskrequest,a1
- move.l #880,d1
- bsr dread
- move.l tdbuffer,a0
- add.l #$13c,a0
- move.l (a0),d1
- move.l d1,bitmapsektor
- add.l #$2c4,a0
- move.l diskrequest,a1
- move.l #$400,d0
- bsr dread
- move.l tdbuffer,a0
- add.l #$400,a0
- move.l 4(a0),d0
- move.w #0,d1
- clr.l d2
- move.l #2,d3
- move.l #3,d4
- move.w filesects,d5
- secloop:
- btst d1,d0
- beq nomore
- cmp.w d5,d2
- bhs hab_genug
- bclr d1,d0
- bset d3,d4
- hab_genug:
- add.l #1,d2
- nomore:
- addi.w #1,d1
- addi.w #1,d3
- cmp.w #20,d1
- blt secloop
- move.l d0,4(a0)
- move.w d2,tracksects
- move.l d4,blocklong
- move.l #mengemsg,a0
- bsr print
- clr.l d0
- move.w tracksects,d0
- bsr itoa
- bsr print
- move.l #menge2msg,a0
- bsr print
- move.w tracksects,d2
- cmp.w filesects,d2
- bhi goon2
- move.l #stillused,a0
- bsr print
- bra cleanup4
- goon2:
- move.l fileort,a0
- move.l blocklong,d4
- move.l d4,blocklongpos(a0)
- bsr bootblockchecksum
- move.l #$200,d0
- move.l #$0,d1
- clr.l d3
- wrloop:
- bclr d3,d4
- beq dontwrite
- bsr dwrite
- bne cleanup4
- add.l #$200,a0
- dontwrite:
- add.w #1,d3
- add.l #$200,d1
- tst.l d4
- bne wrloop
- jsr dupdate
- move.l tdbuffer,a0
- add.l #$400,a0
- bsr bitmapchecksum
- move.l bitmapsektor,d1
- move.l #512,d0
- lsl.l #8,d1
- lsl.l #1,d1
- bsr dwrite
- bne cleanup4
- bsr dupdate
- move.l #goodinstall,a0
- bsr print
- cleanup4:
- bsr motoroff
- cleanup3:
- move.l execbase,a6
- move.l tdbuffer,a1
- move.l #$0800,d0
- jsr freemem(a6)
- move.l execbase,a6
- move.l fileort,a1
- move.l filelenght,d0
- jsr freemem(a6)
- move.l diskrequest,a1
- bsr closetrackdisk
- nofile:
- move.l execbase,a6
- move.l dosbase,a1
- jsr closelibrary(a6)
- nodos:
- move.l oldcheck,d0
- move.l newcheck,a0
- ;illegal
- clr.l d0
- rts
- fileort: dc.l 0
- filelenght: dc.l 0
- filesects: dc.w 0
- tracksects: dc.w 0
- bitmapsektor: dc.l 0
- tdbuffer: dc.l 0
- blocklong: dc.l 0
- bootname: dc.l bn
- bn: dc.b "df1:boottrack",0
- even
-
- bootblockchecksum:
- movem.l d0-d3/a0-a1,-(a7)
- clr.l d0
- clr.l d2
- clr.l d3
- move.l #$ff,d1
- move.l a0,a1
- clr.l $4(a0)
- move.w #$4,ccr
- bo_checkloop:
- move.l (a0)+,d2
- addx.l d2,d0
- dbra d1,bo_checkloop
- move.l #-1,d1
- subx.l d0,d1
- move.l d1,$4(a1)
- move.l d1,test
- movem.l (a7)+,d0-d3/a0-a1
- rts
-
- bitmapchecksum:
- movem.l d0-d3/a0-a1,-(a7)
- clr.l d0
- clr.l d2
- clr.l d3
- move.l a0,a1
- move.l (a0),oldcheck
- clr.l (a0)
- move.w #$7f,d1
- bm_checkloop:
- move.l (a0)+,d2
- sub.l d2,d0
- dbra d1,bm_checkloop
- move.l d0,(a1)
- move.l d0,newcheck
- movem.l (a7)+,d0-d3/a0-a1
- rts
-
- itoa:
- move.l #ascii_zahl+6,a0
- move.l #0,-4(a0)
- move.w #0,-6(a0)
- w_loopi:
- divu #10,d0
- swap d0
- addi.w #"0",d0
- move.b d0,-(a0)
- clr.w d0
- swap d0
- cmp.w #0,d0
- bne w_loopi
- rts
- even
- ascii_zahl: blk.b 7,0
- even
- motoron:
- move.l diskrequest,a1
- move.w #td_motor,io_command(a1)
- move.l #1,io_lenght(a1)
- move.l execbase,a6
- jsr doio(a6)
- rts
- motoroff:
- move.l diskrequest,a1
- move.w #td_motor,io_command(a1)
- move.l #0,io_lenght(a1)
- move.l execbase,a6
- jsr doio(a6)
- rts
- dcheckwp:
- movem.l d0-d7/a0-a6,-(a7)
- move.l diskrequest,a1
- move.w #td_protstatus,io_command(a1)
- move.l execbase,a6
- jsr doio(a6)
- move.l diskrequest,a1
- move.l io_actual(a1),d0
- movem.l (a7)+,d0-d7/a0-a6
- rts
- dread:
- lsl.l #8,d1
- lsl.l #1,d1
- move.w #cmd_read,io_command(a1)
- move.l d1,io_offset(a1)
- move.l a0,io_data(a1)
- move.l d0,io_lenght(a1)
- move.l execbase,a6
- jsr doio(a6)
- rts
- even
- dwrite:
- movem.l d0-d7/a0-a6,-(a7)
- bsr dcheckwp
- beq notprotected
- move.l #wpon,a0
- bsr print
- move.b #1,d0
- bra endofwrite
- notprotected:
- move.l diskrequest,a1
- move.l d1,io_offset(a1)
- move.w #cmd_write,io_command(a1)
- move.l d0,io_lenght(a1)
- move.l a0,io_data(a1)
- move.l execbase,a6
- jsr doio(a6)
- move.b #0,d0
- endofwrite:
- movem.l (a7)+,d0-d7/a0-a6
- rts
- dupdate:
- movem.l d0-d7/a0-a6,-(a7)
- move.l diskrequest,a1
- move.w #cmd_update,io_command(a1)
- move.l execbase,a6
- jsr doio(a6)
- movem.l (a7)+,d0-d7/a0-a6
- rts
- gettrackdisk:
- move.l d0,unit
- move.l #0,a0
- move.b #0,d0
- bsr createport
- move.l a0,diskport
- beq gt_fail1
- move.l #56,d0
- bsr createextio
- move.l a0,diskrequest
- beq gt_fail2
- move.l execbase,a6
- move.l #diskname,a0
- move.l unit,d0
- move.l diskrequest,a1
- move.l #0,d1
- jsr opendevice(a6)
- tst.l d0
- bne gt_fail3
- move.l diskrequest,a1
- rts
- gt_fail1:
- move.l #0,a1
- rts
- closetrackdisk:
- move.l a1,diskrequest
- move.l execbase,a6
- move.l diskrequest,a1
- jsr closedevice(a6)
- gt_fail2:
- move.l diskrequest,a0
- bsr deleteextio
- gt_fail3:
- move.l diskport,a0
- bsr deleteport
- move.l #0,a1
- rts
- unit: dc.l 0
- diskport: dc.l 0
- diskrequest: dc.l 0
- diskname: dc.b "trackdisk.device",0
- even
- even
- createport:
- move.l a0,name
- move.b d0,prio
- move.l execbase,a6
- move.b #-1,d0
- jsr allocsignal(a6)
- move.b d0,sigbit
- bmi.l nosignal
- move.l execbase,a6
- move.l #$10001,d1
- move.l #34,d0
- jsr allocmem(a6)
- move.l d0,port
- beq nomemory
- move.l d0,a0
- move.l name,10(a0)
- move.b prio,9(a0)
- move.b #4,8(a0)
- move.b #0,14(a0)
- move.b sigbit,15(a0)
- move.l execbase,a6
- move.l #0,a1
- jsr findtask(a6)
- move.l d0,16(a0)
- cmpi.l #0,name
- beq donewlist
- move.l execbase,a6
- move.l port,a1
- jsr addport(a6)
- bra.s rts
- donewlist:
- lea 20(a0),a0
- bsr newlist
- rts:
- move.l port,a0
- rts
- nosignal:
- clr.l port
- bra.s rts
- nomemory:
- move.l execbase,a6
- clr.l d0
- move.b sigbit,d0
- jsr freesignal(a6)
- bra.s nosignal
- even
- port: dc.l 0
- sigbit: dc.b 0
- prio: dc.b 0
- name: dc.l 0
- deleteport:
- cmpi.l #0,10(a0)
- beq noremport
- move.l a0,-(a7)
- move.l execbase,a6
- move.l a0,a1
- jsr remport(a6)
- move.l (a7)+,a0
- noremport:
- move.b #$ff,8(a0)
- move.l #-1,20(a0)
- move.l a0,-(a7)
- move.l execbase,a6
- clr.l d0
- move.b 15(a0),d0
- jsr freesignal(a6)
- move.l execbase,a6
- move.l (a7)+,a1
- move.l #34,d0
- jsr freemem(a6)
- rts
- lh_tail: equ 4
- lh_tailpr©¾Ïã÷'$" #'-.ôÕóü'0 ÷öóð÷ÿú²ÊÙì'# #'-Ïçù5øöõðóÿЫ½Ñã÷
- %'" #) Ø×ôÿ2(üööòñü¢»ÉØìÿ+&!#'ôËê÷0 ÷öôð÷ ¯¿Óâõ*$ #ÈÛó4 úööñôÿ à»ÇÙëþ'(!ÜËë÷'* þööóñû ´ÄÏáó-' øÁÞñ1øõôð÷ »ÇÚéû,#ÈÍëû,$úõõñòÿ ÃÍáñ') ä¿ßï,
- ÿõôóðùÈÍ×çù.& »Îéÿ- øôôðô$ÃÏáïÿ,"нÞí(üôôòðü&ÊÕçö%(ð³Îæÿ,öôóðö!,ÐÔÞîü
- -$À»Üí"ûóôññþ
- *.ÇÖçó* âÍâ( õóóï÷%0ÒÛîù%& µ¹Úí#úóôðñÿ-4ØÛåòÿ, Ø©ËÞ$