home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
GEMini Atari
/
GEMini_Atari_CD-ROM_Walnut_Creek_December_1993.iso
/
files
/
diskutil
/
bootinfo
/
bootinfo.s
< prev
Wrap
Text File
|
1990-07-26
|
8KB
|
352 lines
*********************************************
* Bootinfo.acc v4.00 *
* (C) J.B. Lancashire 1989 *
* assemble as 'BOOTINFO.ACC'. *
*********************************************
****************************************
* Initialisation only done at boot up. *
****************************************
start move.l #mystack,a7 Set up stack.
move.w #10,control Initialise application.
move.w #0,control+2
move.w #1,control+4
move.w #0,control+6
bsr aes
move.w d0,ap_id
move.w ap_id,int_in Register accessory in menu.
move.l #name,addr_in
move.w #35,control
move.w #1,control+2
move.w #1,control+4
move.w #1,control+6
bsr aes
move.w #17,d4 Convert main dialog coordinates.
move.l #tree1,addr_in
bsr obfix
bsr fcent
***************************************
* The start of the main program loop. *
***************************************
wait move.l #message,addr_in Wait for a menu call.
move.w #23,control
move.w #0,control+2
move.w #1,control+4
move.w #1,control+6
bsr aes
move.l #message,a0
move.w (a0),d0
cmpi.w #40,d0
bne wait Not a call for us, carry on waiting.
move.w #0,int_in Prepare to display dialog.
bsr fdial
move.l #tree1,addr_in Draw the dialog box.
move.w #0,int_in
move.w #3,int_in+2
bsr obdraw
*****************
* Info routine. *
*****************
info move.w #0,-(sp) Read bios parameter block.
move.w #7,-(sp)
trap #13
addq.l #4,sp
cmpi.l #0,d0
beq err Failed to find bios block etc.
move.l d0,a0 Save address of parameter block.
move.b #12,d1
lea drecsiz,a1 Convert bios info to text.
iloop move.w (a0)+,d0
bsr conv
adda.l #24,a1
dbra d1,iloop
draw move.l #tree1,addr_in Redraw dialog box.
move.w #7,int_in
move.w #1,int_in+2
bsr obdraw
wait1 move.l #tree1,addr_in Wait for event.
bsr formdo
cmpi #1,d0 Evaluate user input.
beq about
cmpi #5,d0
beq info
cmpi #6,d0
beq exit
bra wait1 Non valid input, return.
********************************
* Misc functions and routines. *
********************************
conv move.l #$30303000,(a1) Convert a hex word in D0 into
* an ascii decimal string.
coma cmp.w #100,d0 Calculate 100's.
blt comb
addi.b #1,0(a1)
sub.w #100,d0
bra coma
comb cmp.w #10,d0 Calculate 10's.
blt comc
addi.b #1,1(a1)
sub.w #10,d0
bra comb
comc add.b d0,2(a1) Whats left must be 1's.
cmp.b #48,0(a1) Supress leading zero.
bne econ
sub.b #16,0(a1)
cmp.b #48,1(a1) Supress next zero.
bne econ
sub.b #16,1(a1)
econ move.b #0,3(a1)
rts
****
exit move.w #3,int_in
bsr fdial
bra wait Return to the desktop.
*****
about move.w #1,int_in Show about alert box.
move.l #alert,addr_in#
bsr falert
bra wait1
*****
err move.w #1,int_in
move.l #error,addr_in
bsr falert
bra wait1
*******************************
* Operating system functions. *
*******************************
obdraw move.w #42,control Draw a dialog box.
move.w #6,control+2
move.w #1,control+4
move.w #1,control+6
move.w fcx,int_in+4
move.w fcx+2,int_in+6
move.w fcx+4,int_in+8
move.w fcx+6,int_in+10
bsr aes
rts
*****
obfix move.w #114,control Fix object tree1 coordinates.
move.w #1,control+2
move.w #1,control+4
move.w #1,control+6
fix move.w d4,int_in Repeat for all objects in tree.
bsr aes
dbra d4,fix
rts
******
formdo move.w #50,control Handle returns from dialog box.
move.w #1,control+2
move.w #1,control+4
move.w #1,control+6
move.w #0,int_in
bsr aes
rts
*****
fcent move.w #54,control Center a dialog box.
move.w #0,control+2
move.w #5,control+4
move.w #1,control+6
bsr aes
move.w int_out+2,fcx
move.w int_out+4,fcx+2
move.w int_out+6,fcx+4
move.w int_out+8,fcx+6
rts
*****
fdial move.w #51,control Prepare to draw a dialog box.
move.w #9,control+2
move.w #1,control+4
move.w #1,control+6
move.w #0,int_in+2
move.w #0,int_in+4
move.w #0,int_in+6
move.w #0,int_in+8
move.w fcx,int_in+10
move.w fcx+2,int_in+12
move.w fcx+4,int_in+14
move.w fcx+6,int_in+16
bsr aes
rts
******
falert move.w #52,control Display an alert box.
move.w #1,control+2
move.w #1,control+4
move.w #1,control+6
bsr aes
rts
***
aes move.w #0,control+8 Call aes routine.
move.l #aespb,d1
move.l #$c8,d0
trap #2
move.w int_out,d0
rts
**********************************
* The data arrays and variables. *
**********************************
* The name of the accessory.
name dc.b 32,14,15,' Bootinfo v4.00',0
* The alert boxes.
alert dc.b '[0][ Bootinfo v4.00 (C) 1989|'
dc.b ' by J.B. Lancashire.|'
dc.b '------------------------ |'
dc.b ' Disk analyzer.]'
dc.b '[ ok ]',0
error dc.b '[0][ Bootinfo v4.00 (C) 1989|'
dc.b ' by J.B. Lancashire.|'
dc.b '------------------------ |'
dc.b ' Error reading|'
dc.b ' bios parammeter block.]'
dc.b '[ abort ]',0
* General data and arrays.
even
aespb dc.l control,global,int_in,int_out,addr_in,addr_out
ap_id ds.w 1 Application I.D.
message ds.b 16 Message pipe.
ds.l 100
mystack ds.w 1 User defined stack (goes backwards).
global ds.w 15
control ds.w 5
int_in ds.w 16
addr_in ds.l 2
int_out ds.w 7
addr_out ds.l 1
*****************************
* Data for the dialog box. *
*****************************
even
fcx ds.w 4 Storage for form center.
* Data for main dialog.
tree1 dc.l $ffff0001,$00070014,$00000000
dc.l $000211a2
dc.l $00000000,$001e0011
dc.l $00050002,$00040014,$00400000
dc.l $00fe1033
dc.l $00020001,$00120003
dc.l $0003ffff,$ffff001c,$00000000
dc.l titstr
dc.l $00020000,$00000001
dc.l $0004ffff,$ffff001c,$00000000
dc.l titstr1
dc.l $00050001,$00000001
dc.l $0001ffff,$ffff001c,$00200000
dc.l titstr2
dc.l $00010002,$00000001
dc.l $0006ffff,$ffff001a,$00400000
dc.l infostr
dc.l $00160001,$00060001
dc.l $0007ffff,$ffff001a,$00420000
dc.l exitstr
dc.l $00160003,$00060001
dc.l $00000008,$00110014,$00000000
dc.l $000211a3
dc.l $00020005,$001a000b
dc.l $0009ffff,$ffff001c,$00200000
dc.l recsiz
dc.l $00020001,$001a0000
dc.l $000affff,$ffff001c,$00200000
dc.l clsiz
dc.l $00020002,$001a0000
dc.l $000bffff,$ffff001c,$00200000
dc.l rdlen
dc.l $00020003,$001a0000
dc.l $000cffff,$ffff001c,$00200000
dc.l fsiz
dc.l $00020004,$001a0000
dc.l $000dffff,$ffff001c,$00200000
dc.l fatrec
dc.l $00020005,$001a0000
dc.l $000effff,$ffff001c,$00200000
dc.l datrec
dc.l $00020006,$001a0000
dc.l $000fffff,$ffff001c,$00200000
dc.l numcl
dc.l $00020007,$001a0000
dc.l $0010ffff,$ffff001c,$00200000
dc.l sides
dc.l $00020008,$001a0000
dc.l $0011ffff,$ffff001c,$00200000
dc.l tracks
dc.l $00020009,$001a0000
dc.l $0007ffff,$ffff001c,$00200000
dc.l sectrk
dc.l $0002000a,$001a0000
* Text for dialog box.
titstr dc.b 'Bootinfo v4.00',0
titstr1 dc.b '(C) 1989',0
titstr2 dc.b 'J.B. Lancashire.',0
infostr dc.b 'info',0
exitstr dc.b 'exit',0
even
recsiz dc.b 'Bytes per sector. '
drecsiz ds.l 1
clsiz dc.b 'Secs per cluster. '
ds.l 7
rdlen dc.b 'Secs per dir. '
ds.l 1
fsiz dc.b 'Secs per FAT. '
ds.l 1
fatrec dc.b 'Sec No of 2nd FAT. '
ds.l 1
datrec dc.b 'First data sec. '
ds.l 1
numcl dc.b 'Data clusters. '
ds.l 7
tracks dc.b 'No of tracks. '
ds.l 1
sides dc.b 'No of sides. '
ds.l 7
sectrk dc.b 'Secs per track. '
ds.l 1