Mercurial > hg > Members > kono > nitros9-code
view level1/cmds/mdir.asm @ 2898:28ed72477814 lwtools-port
Dummy merge of default branch into lwtools
hg -y merge --tool=internal:fail default
hg revert --all --no-backup --rev .
hg resolve -a -m
This dummy merge discards any changes from the default branch
so that the result is the same as what lwtools already had.
When merging back to default branch later, the discarded
changes will be discarded there also, so the result
will be that the default branch will contain what
the lwtools branch had before these merges.
Only scripts/burst was "rescued" from default branch.
author | Tormod Volden <debian.tormod@gmail.com> |
---|---|
date | Sat, 11 Jan 2014 18:40:44 +0100 |
parents | 4604b8d90bd5 |
children |
line wrap: on
line source
******************************************************************** * Mdir - Show module directory * * $Id$ * * Edt/Rev YYYY/MM/DD Modified by * Comment * ------------------------------------------------------------------ * 5 ????/??/?? * * 6 2003/01/14 Boisy G. Pitre * Changed option to -e, optimized slightly. * * 7 2003/08/25 Rodney V. Hamilton * Fixed leading zero supression, more optimizations. nam Mdir ttl Show module directory * Disassembled 02/04/05 12:49:18 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 stdout set 1 mod eom,name,tylg,atrv,start,size org 0 mdstart rmb 2 mdend rmb 2 parmptr rmb 2 zflag rmb 1 supress leading zeros flag bufptr rmb 1 u0008 rmb 1 datebuf rmb 3 timebuf rmb 3 u000F rmb 1 name field width u0010 rmb 1 last starting column narrow rmb 1 buffer rmb 80 rmb 450 stack & parameters size equ . name fcs /Mdir/ fcb edition tophead fcb C$LF fcs " Module directory at " ltitle fcb C$LF fcc "Addr Size Typ Rev Attr Use Module name" fcb C$LF fcc "---- ---- --- --- ---- --- ------------" fcb C$CR stitle fcb C$LF fcc "Addr Size Ty Rv At Uc Name" fcb C$LF fcc "---- ---- -- -- -- -- ---------" fcb C$CR start stx <parmptr clr <zflag clr <narrow assume wide output lda #stdout standard output ldb #SS.ScSiz we need screen size os9 I$GetStt get it bcc L00D2 branch if we got it cmpb #E$UnkSvc not a known service request error? lbne Exit if not, exit bra Do80 L00D2 cmpx #80 80 columns? blt Chk51 branch if less than Do80 ldd #$0C30 bra SetSize Chk51 cmpx #51 51 columns? blt Do32 Do51 ldd #$0C28 bra SetSize Do32 inc <narrow ldd #$0A15 SetSize std <u000F leay >tophead,pcr leax <buffer,u stx <bufptr lbsr copySTR leax datebuf,u os9 F$Time leax timebuf,u lbsr L0224 lbsr writeBUF ldx >D.ModDir MUST use ext addr for page 0 stx <mdstart ldd >D.ModDir+2 std <mdend leax -MD$ESize,x * Check for 'E' given as argument ldy <parmptr ldd ,y+ andb #$DF cmpd #$2D45 -E ? bne L015D leax >ltitle,pcr tst <narrow beq L012B leax >stitle,pcr L012B ldy #80 max. length to write lda #stdout os9 I$WritLn ldx <mdstart bra L01B9 loop ldy MD$MPtr,x beq L015D skip if unused slot ldd M$Name,y leay d,y lbsr copySTR L0141 lbsr outSP ldb <u0008 subb #$12 cmpb <u0010 bhi L0154 L014C subb <u000F bhi L014C bne L0141 bra L015D L0154 lbsr writeBUF L015D leax MD$ESize,x cmpx <mdend bcs loop lbsr writeBUF bra ExitOk * * A module entry is 2 two byte pointers. * If the first pointer is $0000, then the slot is unused L0168 ldy MD$MPtr,x ptr=0? beq gotonxt yes, skip unused slot ldd MD$MPtr,x address (faster than tfr) bsr out4HS ldd M$Size,y size bsr out4HS tst <narrow bne L0181 bsr outSP L0181 lda M$Type,y type/lang bsr out2HS tst <narrow bne L018B bsr outSP L018B lda M$Revs,y revision anda #RevsMask bsr out2HS ldb M$Revs,y attributes lda #'r bsr L01FE bit 7 (ReEnt) tst <narrow bne L01A7 lda #'w bit 6 (ModProt:1=writable) bsr L01FE lda #'3 bit 5 (ModNat:6309 Native mode) bsr L01FE lda #'? bit 4 undefined bsr L01FE L01A7 bsr outSP bsr outSP lda MD$Link,x user count bsr out2HS ldd M$Name,y leay d,y module name bsr copySTR bsr writeBUF gotonxt leax MD$ESize,x L01B9 cmpx <mdend bcs L0168 ExitOk clrb Exit os9 F$Exit out4HS inc <zflag supress leading zeros inc <zflag bsr Byt2Hex dec <zflag tfr b,a out2HS bsr Byt2Hex bra outSP Byt2Hex inc <zflag supress leading zero pshs a lsra lsra lsra lsra bsr L01DB puls a anda #$0F is this a zero? L01DB bne L01E8 no, print it tst <zflag still supressing zeros? bgt outZSP yes, count it and print space L01E8 clr <zflag nonzero, print all the rest adda #'0 cmpa #'9 bls ApndA adda #$07 Make it A-F bra ApndA outZSP dec <zflag countdown to last digit outSP lda #C$SPAC append a space * * append a char (in reg a) to buffer * ApndA pshs x ldx <bufptr sta ,x+ stx <bufptr puls pc,x * * process attribute flag bit * L01FE rolb bcs ApndA lda #'. bra ApndA * * Copy an FCS string to buffer * copySTR lda ,y anda #$7F bsr ApndA lda ,y+ bpl copySTR rts * * Append a CR to buffer and write it * writeBUF pshs y,x,a lda #C$CR bsr ApndA leax <buffer,u stx <bufptr ldy #80 lda #stdout os9 I$WritLn puls pc,y,x,a * Write the time to the buffer as HH:MM:SS L0224 bsr Byt2ASC bsr Colon Colon lda #': bsr ApndA Byt2ASC ldb ,x+ Hundreds subb #100 bcc Hundreds * code to print 100's digit removed - max timefield value is 59 Tens lda #'9+1 TensLoop deca addb #10 bcc TensLoop bsr ApndA tfr b,a adda #'0 bra ApndA emod eom equ * end