Mercurial > hg > Members > kono > nitros9-code
view level1/cmds/free.asm @ 1211:f54f04a78c54
Rodney Hamilton fixes
author | boisy |
---|---|
date | Mon, 23 Jun 2003 17:45:27 +0000 |
parents | bb618bed0bdc |
children | 84ea83668304 |
line wrap: on
line source
******************************************************************** * Free - Print disk free space * * $Id$ * * Ed. Comments Who YY/MM/DD * ------------------------------------------------------------------ * 6 From Tandy OS-9 Level One VR 02.00.00 * 7 Y2K fixed nam Free ttl Print disk free space * Disassembled 98/09/11 16:58:25 by Disasm v1.6 (C) 1988 by RML ifp1 use defsfile endc tylg set Prgrm+Objct atrv set ReEnt+rev rev set $00 edition set 7 mod eom,name,tylg,atrv,start,size org 0 u0000 rmb 1 u0001 rmb 1 u0002 rmb 1 devpath rmb 1 u0004 rmb 1 u0005 rmb 2 u0007 rmb 1 u0008 rmb 1 u0009 rmb 1 u000A rmb 1 u000B rmb 1 u000C rmb 1 u000D rmb 26 u0027 rmb 54 u005D rmb 4 u0061 rmb 2 u0063 rmb 1 u0064 rmb 19 u0077 rmb 5 u007C rmb 26 u0096 rmb 6 u009C rmb 2 u009E rmb 2 u00A0 rmb 4544 size equ . name fcs /Free/ fcb edition IFNE DOHELP HelpMsg fcb C$LF fcc "Use: free [/diskname]" fcb C$LF fcc " tells how many disk sectors are unused" fcb C$CR ENDC L0052 fcs /" created on:/ L005F fcs "Capacity:" L0068 fcs " sectors (" L0072 fcs "-sector clusters)" L0083 fcs " free sectors, largest block" L009F fcs " sectors" start leay $0D,u sty <u0001 cmpd #$0000 beq L00E0 lda ,x+ cmpa #C$CR beq L00E0 cmpa #PDELIM beq L00CC L00BC equ * IFNE DOHELP leax >HelpMsg,pcr point to help message ldy #64 max bytes lda #$02 stderr os9 I$WritLn write it ENDC lbra ExitOk and branch L00CC leax -$01,x pshs x os9 F$PrsNam parse the device name on cmd line puls x bcs L00BC branch if error L00D7 lda ,x+ lbsr L0218 * try decb here subb #$01 bcc L00D7 L00E0 lda #PENTIR we want the entire device lbsr L0218 lbsr L0216 leax u000D,u stx <u0001 lda #READ. read mode os9 I$Open open the device sta <devpath save the path bcs L00FF branch if error leax <u005D,u ldy #$003F os9 I$Read L00FF lbcs Exit lbsr L0222 lda #$22 lbsr L0218 leay <u007C,u lbsr L020C dec <u0002 leay >L0052,pcr lbsr L020C lbsr L0293 lbsr L0222 leay >L005F,pcr lbsr L020C leax <u005D,u lbsr L024F leay >L0068,pcr lbsr L020C dec <u0002 ldd <u0063 pshs b,a clr ,-s leax ,s lbsr L024F leas $03,s leay >L0072,pcr lbsr L020C lbsr L0222 clra clrb sta <u0004 std <u0005 sta <u000A std <u000B sta <u0007 std <u0008 lda <devpath ldx #$0000 pshs u ldu #256 os9 I$Seek seek to bitmap sector puls u L016A leax >u009E,u ldd #$1000 cmpd <u0061 bls L0178 ldd <u0061 L0178 leay d,x sty <u009C tfr d,y lda <devpath os9 I$Read bcs Exit L0186 lda ,x+ bsr L01D0 stb ,-s beq L019C L018E ldd <u0005 addd <u0063 std <u0005 bcc L0198 inc <u0004 L0198 dec ,s bne L018E L019C leas $01,s cmpx <u009C bcs L0186 ldd <u0061 subd #$1000 std <u0061 bhi L016A bsr L01ED leax u0004,u lbsr L024F leay >L0083,pcr bsr L020C leax u0007,u lbsr L024F leay >L009F,pcr bsr L020C bsr L0222 lda <devpath os9 I$Close bcs Exit ExitOk clrb Exit os9 F$Exit L01D0 clrb cmpa #$FF beq L01ED bsr L01D7 L01D7 bsr L01D9 L01D9 bsr L01DB L01DB lsla bcs L01ED incb pshs b,a ldd <u000B addd <u0063 std <u000B bcc L01EB inc <u000A L01EB puls pc,b,a L01ED pshs b,a ldd <u000A cmpd <u0007 bhi L01FE bne L0204 ldb <u000C cmpb <u0009 bls L0204 L01FE sta <u0007 ldd <u000B std <u0008 L0204 clr <u000A clr <u000B clr <u000C puls pc,b,a L020C lda ,y anda #$7F bsr L0218 lda ,y+ bpl L020C L0216 lda #C$SPAC L0218 pshs x ldx <u0001 sta ,x+ stx <u0001 puls pc,x L0222 pshs y,x,a lda #C$CR bsr L0218 leax u000D,u stx <u0001 ldy #80 lda #$01 standard output os9 I$WritLn write the line puls pc,y,x,a L0237 fcb $98,$96,$80 fcb $0f,$42,$40 fcb $01,$86,$a0 fcb $00,$27,$10 fcb $00,$03,$e8 fcb $00,$00,$64 fcb $00,$00,$0a fcb $00,$00,$01 L024F lda #$0A pshs y,x,b,a leay <L0237,pcr clr <u0000 ldb ,x ldx $01,x L025C lda #$FF L025E inca exg d,x subd $01,y exg d,x sbcb ,y bcc L025E bsr L02B9 exg d,x addd $01,y exg d,x adcb ,y leay $03,y dec ,s beq L0291 lda ,s cmpa #$01 bne L0281 sta <u0000 L0281 bita #$03 bne L025C dec ,s tst <u0000 beq L025C lda #$2C bsr L0218 bra L025C L0291 puls pc,y,x,b,a L0293 leax <u0077,u bsr L02C3 bsr L029A L029A lda #$2F lbsr L0218 clr <u0000 ldb ,x+ lda #$FF L02A5 inca subb #$64 bcc L02A5 bsr L02B9 L02AC lda #$0A sta <u0000 L02B0 deca addb #$0A bcc L02B0 bsr L02B9 tfr b,a L02B9 tsta beq L02BE sta <u0000 L02BE tst <u0000 bne L02D6 rts L02C3 ldb ,x+ lda #$AE L02C7 inca subb #$64 bcc L02C7 pshs b tfr a,b bsr L02AC puls b bra L02AC L02D6 adda #$30 lbra L0218 emod eom equ * end