changeset 1211:f54f04a78c54

Rodney Hamilton fixes
author boisy
date Mon, 23 Jun 2003 17:45:27 +0000
parents c04e954c87c6
children c2f6949523f6
files level1/cmds/dump.asm
diffstat 1 files changed, 354 insertions(+), 352 deletions(-) [+]
line wrap: on
line diff
--- a/level1/cmds/dump.asm	Wed Jun 11 23:17:40 2003 +0000
+++ b/level1/cmds/dump.asm	Mon Jun 23 17:45:27 2003 +0000
@@ -10,413 +10,415 @@
 * In addition it now allows dumping of memory modules and command modules
 * in the execution directory.
 *
-* Ed.    Comments                                       Who YY/MM/DD
+* Ed.   Comments                                        Who YY/MM/DD
 * ------------------------------------------------------------------
-*   5    From Tandy OS-9 Level One VR 02.00.00
-*   6    Incorporated R. Telkman's additions from 1987, BGP 02/12/23
-*        added -d option, added defs to conditionally
-*        assemble without help or screen size check
+*   5   From Tandy OS-9 Level One VR 02.00.00
+*   6   Incorporated R. Telkman's additions from 1987,  BGP 02/12/23
+*       added -d option, added defs to conditionally
+*       assemble without help or screen size check
 *
-*        Removed -d option                              BGP 03/01/17
-*        Narrow screen now shows properly, only dumps   BGP 03/01/21
-*        16 bits worth of address data to make room.
-*        Fixed bug where header would be shown even if  BGP 03/03/03
-*        there was no data in a file.
+*       Removed -d option                               BGP 03/01/17
+*       Narrow screen now shows properly, only dumps    BGP 03/01/21
+*       16 bits worth of address data to make room.
+*       Fixed bug where header would be shown even if   BGP 03/03/03
+*       there was no data in a file.
+*   7   Restored Rubout processing for terminals        RVH 03/06/06
 
-         nam   Dump
-         ttl   Show file contents in hex
+        nam     Dump
+        ttl     Show file contents in hex
 
-         ifp1
-         use   defsfile  
-         endc
+        ifp1
+        use     defsfile
+        endc
 
 * Tweakable options
-DOSCSIZ  set   1	1 = include SS.ScSiz code, 0 = leave out
-DOHELP   set   0	1 = include help message, 0 = leave out
-BUFSZ    set   80        
+DOSCSIZ set     1	1 = include SS.ScSiz code, 0 = leave out
+DOHELP  set     0	1 = include help message, 0 = leave out
+BUFSZ   set     80
 
-tylg     set   Prgrm+Objct
-atrv     set   ReEnt+rev
-rev      set   1         
-edition  set   6         
+tylg    set     Prgrm+Objct
+atrv    set     ReEnt+rev
+rev     set     1
+edition set     7
 
-         org   0         
-nonopts  rmb   1
-D.Prm    rmb   2         
-D.Hdr    rmb   1         
-D.Mem    rmb   1         
-         IFNE  DOSCSIZ
-narrow   rmb   1         
-         ENDC
-Mode     rmb   1         
-D.Opn    rmb   1         
-D.Beg    rmb   2         
-D.End    rmb   2         
-D.Adr    rmb   4         
-D.Len    rmb   2         
-D.Ptr    rmb   2         
-D.Txt    rmb   2         
-Datbuf   rmb   16        
-Txtbuf   rmb   BUFSZ     
-         rmb   128
-datsz    equ   .         
+        org     0
+nonopts rmb     1
+D.Prm   rmb     2
+D.Hdr   rmb     1
+D.Mem   rmb     1
+        IFNE    DOSCSIZ
+narrow  rmb     1
+        ENDC
+Mode    rmb     1
+D.Opn   rmb     1
+D.Beg   rmb     2
+D.End   rmb     2
+D.Adr   rmb     4
+D.Len   rmb     2
+D.Ptr   rmb     2
+D.Txt   rmb     2
+Datbuf  rmb     16
+Txtbuf  rmb     BUFSZ
+        rmb     128
+datsz   equ     .
 
-
-         mod   length,name,tylg,atrv,start,datsz
+        mod     length,name,tylg,atrv,start,datsz
 
-name     fcs   /Dump/    
-         fcb   edition   
+name    fcs     /Dump/
+        fcb     edition
 
-title    fcc   /Address   0 1  2 3  4 5  6 7  8 9  A B  C D  E F  0 2 4 6 8 A C E/
-titlelen equ   *-title
-caret    fcb   C$CR      
-flund    fcc   /-------- ---- ---- ---- ---- ---- ---- ---- ----  ----------------/
-         fcb   C$CR      
-         IFNE  DOSCSIZ
-short    fcc   /     0 1 2 3 4 5 6 7  0 2 4 6/
-         fcb   C$LF      
-         fcc   /Addr 8 9 A B C D E F  8 A C E/
-         fcb   C$CR      
-shund    fcc   /==== +-+-+-+-+-+-+-+- +-+-+-+-/
-         fcb   C$CR      
-         ENDC
+title   fcc     /Address   0 1  2 3  4 5  6 7  8 9  A B  C D  E F  0 2 4 6 8 A C E/
+titlelen equ    *-title
+caret   fcb     C$CR
+flund   fcc     /-------- ---- ---- ---- ---- ---- ---- ---- ----  ----------------/
+        fcb     C$CR
+        IFNE    DOSCSIZ
+short   fcc     /     0 1 2 3 4 5 6 7  0 2 4 6/
+        fcb     C$LF
+        fcc     /Addr 8 9 A B C D E F  8 A C E/
+        fcb     C$CR
+shund   fcc     /==== +-+-+-+-+-+-+-+- +-+-+-+-/
+        fcb     C$CR
+        ENDC
 
-start    stx   <D.Prm    
-         clra            
-         sta   <D.Hdr    
-         sta   <D.Mem    
-         sta   <nonopts		assume no non-opts
-         inca
-         sta   <Mode            READ.
+start   stx     <D.Prm
+        clra
+        sta     <D.Hdr
+        sta     <D.Mem
+        sta     <nonopts	assume no non-opts
+        inca
+        sta     <Mode		READ.
 
-         IFNE  DOSCSIZ
-         clr   <narrow          assume wide
+        IFNE    DOSCSIZ
+        clr     <narrow		assume wide
 
 * Check screen size
-         ldb   #SS.ScSiz
-         os9   I$GetStt
-         bcs   Pass1
+        ldb     #SS.ScSiz
+        os9     I$GetStt
+        bcs     Pass1
 
-         cmpx  #titlelen+1
-         bge   PrePass
+        cmpx    #titlelen+1
+        bge     PrePass
 
-         sta   <narrow
+        sta     <narrow
 
-PrePass  ldx   <D.Prm
-         ENDC
+PrePass ldx     <D.Prm
+        ENDC
 
 * Pass1 - process any options
 * Entry: X = ptr to cmd line
 Pass1
 * Skip over spaces
-         lda   ,x+
-         cmpa  #C$SPAC
-         beq   Pass1
+        lda     ,x+
+        cmpa    #C$SPAC
+        beq     Pass1
 
 * Check for EOL
-         cmpa  #C$CR
-         beq   Pass2
+        cmpa    #C$CR
+        beq     Pass2
 
 * Check for option
-         cmpa  #'-
-         bne   Pass1
+        cmpa    #'-
+        bne     Pass1
 
 * Here, X points to an option char
-OptPass  lda   ,x+
-         cmpa  #C$SPAC
-         beq   Pass1
-         cmpa  #C$CR
-         beq   Pass2
+OptPass lda     ,x+
+        cmpa    #C$SPAC
+        beq     Pass1
+        cmpa    #C$CR
+        beq     Pass2
 
-         anda  #$DF
+        anda    #$DF
 
-IsItH    cmpa  #'H
-         bne  IsItM
+IsItH   cmpa    #'H
+        bne     IsItM
 
 * Process H here
-         sta  <D.Hdr
-         bra  OptPass
+        sta     <D.Hdr
+        bra     OptPass
 
-IsItM    cmpa  #'M
-         bne   IsItX
+IsItM   cmpa    #'M
+        bne     IsItX
 
-* Process M here 
-         sta   <D.Mem
-         bra   OptPass
+* Process M here
+        sta     <D.Mem
+        bra     OptPass
 
-IsItX    cmpa  #'X
-         bne  ShowHelp
+IsItX   cmpa    #'X
+        bne     ShowHelp
 
 * Process X here
-         lda   <Mode
-         ora   #EXEC.
-         sta   <Mode
-         bra   OptPass
- 
-         IFNE  DOHELP
-ShowHelp leax  HelpMsg,pcr
-         lda   #2
-         ldy   #HelpLen
-         os9   I$Write
-         bra   ExitOk
-         ENDC
+        lda     <Mode
+        ora     #EXEC.
+        sta     <Mode
+        bra     OptPass
+
+        IFNE    DOHELP
+ShowHelp leax   HelpMsg,pcr
+        lda     #2
+        ldy     #HelpLen
+        os9     I$Write
+        bra     ExitOk
+        ENDC
 
 * Pass2 - process any non-options
 * Entry: X = ptr to cmd line
 Pass2
-         ldx   <D.Prm
+        ldx     <D.Prm
 Pass21
 * Skip over spaces
-         lda   ,x+
-         cmpa  #C$SPAC
-         beq   Pass21
-         cmpa  #'-
-         bne   Pass22
+        lda     ,x+
+        cmpa    #C$SPAC
+        beq     Pass21
+        cmpa    #'-
+        bne     Pass22
 
-EatOpts  lda   ,x+
-         cmpa  #C$SPAC
-         beq   Pass21
-         cmpa  #C$CR
-         bne   EatOpts
+EatOpts lda     ,x+
+        cmpa    #C$SPAC
+        beq     Pass21
+        cmpa    #C$CR
+        bne     EatOpts
 
 * Check for EOL
-Pass22   cmpa  #C$CR
-         beq   EndOfL
+Pass22  cmpa    #C$CR
+        beq     EndOfL
 
-Call     leax  -1,x
-         sta   nonopts,u
-         bsr   DumpFile
-         bra   Pass21
+Call    leax    -1,x
+        sta     nonopts,u
+        bsr     DumpFile
+        bra     Pass21
 
-EndOfL   tst   <nonopts		any non-options on cmd line?
-         bne   ExitOk
-         tst   <D.Mem           memory option specified?
-         bne   ShowHelp		yes, no module specified, show help
-         clra                   stdin
-         bsr   DumpIn
-         IFEQ  DOHELP
+EndOfL  tst     <nonopts	any non-options on cmd line?
+        bne     ExitOk
+        tst     <D.Mem		memory option specified?
+        bne     ShowHelp	yes, no module specified, show help
+        clra			stdin
+        bsr     DumpIn
+        IFEQ    DOHELP
 ShowHelp
-         ENDC
-ExitOk   clrb
-DoExit   os9   F$Exit
+        ENDC
+ExitOk  clrb
+DoExit  os9     F$Exit
 
-mlink    clra            
-         pshs  u         
-         os9   F$Link    
-         stu   <D.Beg    
-         puls  u         
-         bcc   DumpIn     
-         bra   DoExit
+mlink   clra
+        pshs    u
+        os9     F$Link
+        stu     <D.Beg
+        puls    u
+        bcc     DumpIn
+        bra     DoExit
 
-DumpFile tst   <D.Mem    
-         bne   mlink     
-         lda   <Mode
-opath    tfr   x,y
-         os9   I$Open    
-         bcc   DumpIn
-         tfr   y,x
-         ora   #DIR.		try directory mode
-         os9   I$Open		open it
-         bcs   DoExit		branch if error
-DumpIn   stx   <D.Prm    
-         sta   <D.Opn    
-         ldx   <D.Beg    
-         ldd   M$Size,x  
-         leax  d,x       
-         stx   <D.End    
-         clra            
-         clrb            
-         tfr   d,x       
-onpas    std   <D.Adr+2  
-         bcc   notbg     
-         leax  1,x       
-notbg    stx   <D.Adr    
-         tst   <D.Hdr    
-         bne   nohed     
-         IFNE  DOSCSIZ
-         tst   <narrow
-         beq   flpag     
-         aslb            
-         ENDC
-flpag    tstb            
-         bne   nohed     
-         lbsr  iseof
-         bcc   flpag2
-         ldx   <D.Prm    
-         rts
-flpag2   leax  caret,pcr
-         lbsr  print     
-         ldb   #16       
-         leax  title,pcr 
-         leay  flund,pcr 
-         IFNE  DOSCSIZ
-         tst   <narrow
-         beq   doprt     
-         ldb   #8        
-         leax  short,pcr
-         leay  shund,pcr
-         ENDC
-doprt    pshs  y         
-         clra            
-         std   <D.Len    
-         bsr   print     
-         puls  x         
-         bsr   print     
-nohed    leax  Txtbuf,u  
-         stx   <D.Ptr    
-         ldb   <D.Len+1  
-         lda   #3        
-         mul             
-         addd  #2        
-         IFNE  DOSCSIZ
-         tst   <narrow
-         beq   leayit
-         subd  #4
-         ENDC
-leayit   leay  d,x       
-         sty   <D.Txt    
-         lda   #C$SPAC   
-         ldb   #BUFSZ-1  
-clbuf    sta   b,x       
-         decb            
-         bpl   clbuf     
-         ldb   #D.Adr    
-         IFNE  DOSCSIZ
-         tst   <narrow
-         beq   adlop
-         incb				we skip first two bytes ...
-         incb				... if on a narrow screen
-         ENDC
-adlop    lda   b,u       
-         lbsr  onbyt     
-         incb            
-         cmpb  #D.Adr+4  
-         bne   adlop     
-         ldx   <D.Ptr    
-         leax  1,x       
-         stx   <D.Ptr    
-         bsr   readi     
-         bcs   eofck     
-onlin    lbsr  onchr     
-         decb
-         ble   enlin
-         lbsr  onchr     
-         decb
-         ble   enlin     
-         IFNE  DOSCSIZ
-         tst   <narrow
-         bne   onlin
-         ENDC
-         lda   #C$SPAC   
-         lbsr  savec     
-         bra   onlin     
-enlin    lda   #C$CR     
-         ldx   <D.Txt    
-         sta   ,x        
-         leax  Txtbuf,u  
-         bsr   print     
-         ldd   <D.Adr+2  
-         ldx   <D.Adr    
-         addd  <D.Len    
-         lbra  onpas     
-print    ldy   #BUFSZ    
-         lda   #1
-         os9   I$WritLn  
-         lbcs  DoExit
-         rts             
-readi    ldy   <D.Len    
-         clrb            
-         tst   <D.Mem    
-         bne   redad     
-         leax  Datbuf,u  
-         lda   <D.Opn    
-         os9   I$Read    
-         bcs   reded     
-         tfr   y,d       
-reded    rts             
+DumpFile tst    <D.Mem
+        bne     mlink
+        lda     <Mode
+opath   tfr     x,y
+        os9     I$Open
+        bcc     DumpIn
+        tfr     y,x
+        ora     #DIR.		try directory mode
+        os9     I$Open		open it
+        bcs     DoExit		branch if error
+DumpIn  stx     <D.Prm
+        sta     <D.Opn
+        ldx     <D.Beg
+        ldd     M$Size,x
+        leax    d,x
+        stx     <D.End
+        clra
+        clrb
+        tfr     d,x
+onpas   std     <D.Adr+2
+        bcc     notbg
+        leax    1,x
+notbg   stx     <D.Adr
+        tst     <D.Hdr
+        bne     nohed
+        IFNE    DOSCSIZ
+        tst     <narrow
+        beq     flpag
+        aslb
+        ENDC
+flpag   tstb
+        bne     nohed
+        lbsr    iseof
+        bcc     flpag2
+        ldx     <D.Prm
+        rts
+flpag2  leax    caret,pcr
+        lbsr    print
+        ldb     #16
+        leax    title,pcr
+        leay    flund,pcr
+        IFNE    DOSCSIZ
+        tst     <narrow
+        beq     doprt
+        ldb     #8
+        leax    short,pcr
+        leay    shund,pcr
+        ENDC
+doprt   pshs    y
+        clra
+        std     <D.Len
+        bsr     print
+        puls    x
+        bsr     print
+nohed   leax    Txtbuf,u
+        stx     <D.Ptr
+        ldb     <D.Len+1
+        lda     #3
+        mul
+        addd    #2
+        IFNE    DOSCSIZ
+        tst     <narrow
+        beq     leayit
+        subd    #4
+        ENDC
+leayit  leay    d,x
+        sty     <D.Txt
+        lda     #C$SPAC
+        ldb     #BUFSZ-1
+clbuf   sta     b,x
+        decb
+        bpl     clbuf
+        ldb     #D.Adr
+        IFNE    DOSCSIZ
+        tst     <narrow
+        beq     adlop
+        incb			we  skip first two bytes ...
+        incb			...  if on a narrow screen
+        ENDC
+adlop   lda     b,u
+        lbsr    onbyt
+        incb
+        cmpb    #D.Adr+4
+        bne     adlop
+        ldx     <D.Ptr
+        leax    1,x
+        stx     <D.Ptr
+        bsr     readi
+        bcs     eofck
+onlin   lbsr    onchr
+        decb
+        ble     enlin
+        lbsr    onchr
+        decb
+        ble     enlin
+        IFNE    DOSCSIZ
+        tst     <narrow
+        bne     onlin
+        ENDC
+        lda     #C$SPAC
+        lbsr    savec
+        bra     onlin
+enlin   lda     #C$CR
+        ldx     <D.Txt
+        sta     ,x
+        leax    Txtbuf,u
+        bsr     print
+        ldd     <D.Adr+2
+        ldx     <D.Adr
+        addd    <D.Len
+        lbra    onpas
+print   ldy     #BUFSZ
+        lda     #1
+        os9     I$WritLn
+        lbcs    DoExit
+        rts
+readi   ldy     <D.Len
+        clrb
+        tst     <D.Mem
+        bne     redad
+        leax    Datbuf,u
+        lda     <D.Opn
+        os9     I$Read
+        bcs     reded
+        tfr     y,d
+reded   rts
 
-redad    bsr   iseofm
-         bcc   setct
-         rts             
-setct    subd  <D.Len    
-         bcs   redof     
-         clra            
-         clrb            
-redof    addd  <D.Len    
-         clr   -1,s      
-         leay  d,x       
-         sty   <D.Beg    
-         rts             
+redad   bsr     iseofm
+        bcc     setct
+        rts
+setct   subd    <D.Len
+        bcs     redof
+        clra
+        clrb
+redof   addd    <D.Len
+        clr     -1,s
+        leay    d,x
+        sty     <D.Beg
+        rts
 
-eofck    cmpb  #E$EOF    
-         orcc  #Carry    
-         lbne  DoExit     
-         clrb            
-         ldx   <D.Prm    
-         rts
+eofck   cmpb    #E$EOF
+        orcc    #Carry
+        lbne    DoExit
+        clrb
+        ldx     <D.Prm
+        rts
 
-iseof    tst   <D.Mem    
-         bne   iseofm
-         lda   <D.Opn
-         ldb   #SS.EOF
-         os9   I$GetStt
-         cmpb  #E$EOF
-         beq   iseofex
-         clrb
-iseofok  rts
-iseofex  orcc  #Carry
-         ldb   #E$EOF
-         rts
-iseofm   ldd   <D.End
-         ldx   <D.Beg    
-         subd  <D.Beg    
-         beq   iseofex
-         andcc  #^Carry
-         rts             
+iseof   tst     <D.Mem
+        bne     iseofm
+        lda     <D.Opn
+        ldb     #SS.EOF
+        os9     I$GetStt
+        cmpb    #E$EOF
+        beq     iseofex
+        clrb
+iseofok rts
+iseofex orcc    #Carry
+        ldb     #E$EOF
+        rts
+iseofm  ldd     <D.End
+        ldx     <D.Beg
+        subd    <D.Beg
+        beq     iseofex
+        andcc   #^Carry
+        rts
 
-onibl    anda  #15       
-         cmpa  #9        
-         bls   nocom     
-         adda  #7        
-nocom    adda  #'0       
-savec    pshs  x         
-         ldx   <D.Ptr    
-         sta   ,x+       
-         stx   <D.Ptr    
-         puls  x,pc      
-onchr    lda   ,x+       
-         bsr   onbyt     
-         pshs  x,a       
-         anda  #127      
-         cmpa  #C$SPAC   
-         bcc   savet     
-         lda   #'.       
-savet    ldx   <D.Txt    
-         sta   ,x+       
-         stx   <D.Txt    
-         puls  a,x,pc    
-onbyt    pshs  a         
-         lsra            
-         lsra            
-         lsra            
-         lsra            
-         bsr   onibl     
-         lda   ,s        
-         bsr   onibl     
-         puls  a,pc      
+onibl   anda    #$0F
+        cmpa    #9
+        bls     nocom
+        adda    #7
+nocom   adda    #'0
+savec   pshs    x
+        ldx     <D.Ptr
+        sta     ,x+
+        stx     <D.Ptr
+        puls    x,pc
+onchr   lda     ,x+
+        bsr     onbyt
+        pshs    x,a
+        anda    #$7F
+        cmpa    #C$SPAC		control char?
+        blo     cntrl
+        cmpa    #$7F		rubout?
+        blo     savet
+cntrl   lda     #'.		make printable
+savet   ldx     <D.Txt
+        sta     ,x+
+        stx     <D.Txt
+        puls    a,x,pc
+onbyt   pshs    a
+        lsra
+        lsra
+        lsra
+        lsra
+        bsr     onibl
+        lda     ,s
+        bsr     onibl
+        puls    a,pc
 
-         IFNE  DOHELP
-HelpMsg  fcc   "Use: Dump [opts] [<path>] [opts]"
-         fcb   C$CR,C$LF
-         fcc   "  -h = no header"
-         fcb   C$CR,C$LF
-         fcc   "  -m = module in memory"
-         fcb   C$CR,C$LF
-         fcc   "  -x = file in exec dir"
-         fcb   C$CR,C$LF
-HelpLen  equ   *-HelpMsg
-         ENDC
+        IFNE    DOHELP
+HelpMsg fcc     "Use: Dump [opts] [<path>] [opts]"
+        fcb     C$CR,C$LF
+        fcc     "  -h = no header"
+        fcb     C$CR,C$LF
+        fcc     "  -m = module in memory"
+        fcb     C$CR,C$LF
+        fcc     "  -x = file in exec dir"
+        fcb     C$CR,C$LF
+HelpLen equ     *-HelpMsg
+        ENDC
 
-         emod            
-length   equ   *         
-         end             
+        emod
+length  equ     *
+        end