home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Club Amiga de Montreal - CAM
/
CAM_CD_1.iso
/
files
/
336.lha
/
Devstat
/
Devstat.s
< prev
next >
Wrap
Text File
|
1990-01-09
|
8KB
|
329 lines
****************************************************************************
* DevStat by Fabrice LIENHARDT *
* written in October 1989 7, rue de Leicester *
* 67000 Strasbourg (France) *
* *
* Written 100 % in assembler with Hisoft's Devpac Assembler V2.12 *
****************************************************************************
opt d+ :Option debugging
incdir ":include/"
include exec/exec_lib.i
include libraries/dos_lib.i
include libraries/dos.i
include libraries/filehandler.i
include libraries/dosextens.i
move.l #dosname,a1
moveq #0,d0
CALLEXEC OpenLibrary :Open DOSlibrary
tst.l d0
beq devquitfast
move.l d0,_DOSBase :save DOSBase
CALLDOS Output
move.l d0,devwindhd :windowhandle
move.l _DOSBase,a0 :Search pointer of DeviceNodes------
move.l dl_Root(a0),a1 :search dl_Root
move.l rn_Info(a1),d0 :search rn_Info (BPTR)
asl.l #2,d0 :(convert BPTR in APTR)
move.l d0,a0 :
move.l di_DevInfo(a0),d0 :search di_DevInfo (BPTR)
asl.l #2,d0 :
move.l d0,devsavea5 :save pointer of Devicenodes
move.l d0,a5 :Result = a5
* List of all DLT_DEVICE ---------------------------------------------------
move.l devwindhd,d1
move.l #devclrscr,d2
move.l #1,d3
CALLDOS Write :clear screen
move.l #0,a3 :counter of line=0 (to stop screen
*scrolling)
move.l #devintrotxt,a0
bsr devafftxt :print "Printdevs by F.Lienhardt ..."
bsr devlfcr
bsr devlfcr : 2 * line feed, carriage return
move.l #devdevt1,a0
bsr devafftxt :print "List of all hardware devices"
move.l #devdevtext,d6 :prepare text (Name, Type, Unit...)
devDLT_DEVICE:
cmp.l #DLT_DEVICE,dn_Type(a5) :is it a harware device?
bne devdevcont
bsr devlfcr :if yes, line feed
bsr devdevtxt :print "Name :"
move.l dn_Name(a5),d0
asl.l #2,d0
move.l d0,a0
bsr devafftxt :and print the name of device
bsr devdevtxt
move.l dn_Type(a5),d0 :print the type
bsr devaffnum
move.l a5,a4 :save the pointer for Next DeviceNode
move.l dn_Startup(a5),d0 :is there a startup pointer
cmp.l #10000,d0 :to go to FileSysStartupMsg ?
bcs devdevcont
asl.l #2,d0 :if yes, put the pointer in a5
move.l d0,a5
bsr devdevtxt :and print all other parameters
move.l fssm_Unit(a5),d0 :fssm_Unit
bsr devaffnum
bsr devdevtxt
move.l fssm_Device(a5),d0 :fssm_Device
asl.l #2,d0
move.l d0,a0
bsr devafftxt
bsr devdevtxt
move.l fssm_Flags(a5),d0 :fssm_Flags
bsr devaffnum
move.l fssm_Environ(a5),d0
asl.l #2,d0
move.l d0,a5 :search pointer of Environ parameters
moveq #13,d5
devbcle:
bsr devdevtxt
move.l (a5)+,d0
bsr devaffnum :and print all his values
subq #1,d5
bne devbcle :(13 values in DosEnvec)
bsr devlfcr
move.l a4,a5 :Get the pointer of DeviceNode
devdevcont:
move.l dn_Next(a5),d7 :Search the next pointer
tst.l d7
beq devDLT_VOLUME :if no more, then list all dev.names
asl.l #2,d7
move.l d7,a5
move.l #devdevtext,d6
bra devDLT_DEVICE :else print the other devices
* List of all DLT_VOLUME ---------------------------------------------------
devDLT_VOLUME:
bsr devlfcr
bsr devlfcr :line feed, carriage return
move.l #devvol1,a0
bsr devafftxt :print "List of all device names"
move.l devsavea5,a5 :Get the original DeviceNode pointer
move.l #devdevtext,d6 :and prepare text "Name, type..."
devDLT_VOLUME2:
cmp.l #DLT_VOLUME,dn_Type(a5) :is it a device name?
bne devvolcont
bsr devlfcr :if yes, line feed
bsr devdevtxt :print "Name"
move.l dn_Name(a5),d0
asl.l #2,d0
move.l d0,a0
bsr devafftxt :the name
bsr devdevtxt
move.l dn_Type(a5),d0 :and the type
bsr devaffnum
devvolcont:
move.l dn_Next(a5),d7 :Search the next pointer
tst.l d7
beq devDLT_DIRECTORY :if no more, search all logical dev.
asl.l #2,d7
move.l d7,a5
move.l #devdevtext,d6
bra devDLT_VOLUME2 :else print all other names
* List of all DLT_DIRECTORY ------------------------------------------------
devDLT_DIRECTORY:
bsr devlfcr
bsr devlfcr :line feed
move.l #devdir1,a0
bsr devafftxt :print "List of all logical devices"
move.l devsavea5,a5 :Get the original pointer
move.l #devdevtext,d6 :prepare the text (Name, type...)
devDLT_DIRECTORY2:
cmp.l #DLT_DIRECTORY,dn_Type(a5) :is it a logical device?
bne devdircont
bsr devlfcr :if yes, line feed
bsr devdevtxt :print "Name :"
move.l dn_Name(a5),d0
asl.l #2,d0
move.l d0,a0
bsr devafftxt :the name
bsr devdevtxt
move.l dn_Type(a5),d0 :and the type
bsr devaffnum
devdircont:
move.l dn_Next(a5),d7 :search the next device
tst.l d7
beq devquit :no more? then quit
asl.l #2,d7
move.l d7,a5
move.l #devdevtext,d6
bra devDLT_DIRECTORY2 :if not print all other devices
devquit:
bsr devlfcr
bsr devlfcr :line feed
move.l _DOSBase,a1
CALLEXEC CloseLibrary :Close the DOS Library
devquitfast:
rts :The End
*** Routines ---------------------------------------------------------
devdevtxt:
bsr devlfcr :line feed, carriage return
move.l d6,a0
bsr devafftxt :print text before values
add.l #21,d6 :and prepare next text
rts
devlfcr:
move.l devwindhd,d1 :Routine to make a line feed and
move.l #devlr,d2 :a carriage return, stop the screen
move.l #2,d3 :scrolling and wait of mouse click
CALLDOS Write
addq #1,a3
cmp.l #22,a3 :are there 22 lines printed ?
bne devnomouse :if not, return
move.l #0,a3
move.l devwindhd,d1
move.l #devmouse,d2
move.l #38,d3
CALLDOS Write :else write"<<< Click Mouse..."
devwaitclick:
and.b #64,$bfe001
bne devwaitclick :and wait mouse click
move.l devwindhd,d1
move.l #devcr,d2
move.l #1,d3
CALLDOS Write
move.l devwindhd,d1
move.l #devdelete,d2
move.l #50,d3
CALLDOS Write :delete the line
move.l devwindhd,d1
move.l #devcr,d2
move.l #1,d3
CALLDOS Write
devnomouse:
rts :and return to the programm
devafftxt:
move.l devwindhd,d1 :Routine to write text on screen
move.b (a0)+,d3
move.l a0,d2 :adress of text with pointer = a0
CALLDOS Write
rts
devaffnum:
move.l #10000,d1 :convert numbers in ASCII
move.l #devnumber,a1 :input = d0
bsr devcalc :max = 100 000 decimal
move.l #1000,d1
bsr devcalc :and print the number
move.l #100,d1
bsr devcalc
move.l #10,d1
bsr devcalc
add.b #$30,d0
move.b d0,(a1)+
move.l devwindhd,d1
move.l #devnumber,d2
move.l #6,d3
CALLDOS Write :write the result
rts
devcalc:
divu d1,d0
cmp.b #0,d0
beq devcalczero :result = 0?
add.b #$30,d0 :if not, convert it in ASCII
bra devcalc2
devcalczero:
move.b #32,d0 :else write nothing (space)
devcalc2:
move.b d0,(a1)+
move.w #0,d0
swap d0
rts
*** Variables --------------------------------------------------------
_DOSBase dc.l 0
dosname DOSNAME :'dos.library'
even
devcr dc.w $0d00 :carriage return
devlr dc.w $0a0d :line feed, carriage return
devclrscr dc.w $0c00
devmouse dc.b "<<< Click mouse button to continue >>>"
even
devdelete dc.b " "
even
devwindhd dc.l 0 :windowhandle
devnumber ds.b 6 :number in ASCII
devsavea5 dc.l 0
devdevtext dc.b 20," Name : "
dc.b 20," Type : "
dc.b 20," Unit : "
dc.b 20," Device : "
dc.b 20," Flags : "
dc.b 20," TableSize : "
dc.b 20," SizeBlock : "
dc.b 20," SecOrg : "
dc.b 20," Surfaces : "
dc.b 20," SectorPerBlock : "
dc.b 20," SectorPerTrack : "
dc.b 20," Reserved : "
dc.b 20," PreAlloc : "
dc.b 20," Interleave : "
dc.b 20," LowCyl : "
dc.b 20," HighCyl : "
dc.b 20," NumBuffers : "
dc.b 20," BufMemType : "
even
devdevt1 dc.b 28,"List of all hardware devices"
even
devintrotxt dc.b 38,"DevStat by F.Lienhardt October 1989"
even
devvol1 dc.b 24,"List of all volume names"
even
devdir1 dc.b 27,"List of all logical devices"
even