home *** CD-ROM | disk | FTP | other *** search
- ; rdir.asm
- ;==========================================
- ; Command: directory of installed commands
- ;==========================================
-
- zrda = $0063
- index1 = $0024
- cr = $0026
- pntr = $00ec
- hexa = $b8c2
- chrout = $ffd2
- rdadr = $1bf5
- rdbnk = $1bf3
- rdmax = $1bf1
- rflag = $1bf0
- tx = $1bfe
- sw1 = $1bfc
- int21 = $1721
- enddsk = $1bf1
- primm = $ff7d
- getcfg = $ff6b
- stop = $ffe1
- int0e = $170e
-
-
- star = $0b00
- .wor star
- * = star
-
- jmp rdir
- dw Date
-
- rdir bit tx
- bvs cdir
- jsr lgreen
- jsr primm
- .asc 13,"RAM disk is off",13,0
- lda #1
- jmp int0e
-
- cdir ldy #4 ;function 4. Initialize to start of RAM disk
- jsr int21
- ldy #2
- cd00 lda zrda,y ;save start of RAM disk for summary
- sta rstrt,y
- dey
- bpl cd00
- iny
- sty ttf
- sty ttf+1
- sty flag
- cd0 ldy #5 ;fetch header
- jsr int21
- beq cd1 ;end of disk
- inc ttf
- bne gcd2
- inc ttf+1
- gcd2 jmp cd2 ;no. display it
-
- cd1 sta $ff00 ;bank 15
- lda #13
- jsr chrout
- jsr chrout
- jsr white
- sec
- lda zrda
- sbc rstrt
- sta len
- lda zrda+1
- sbc rstrt+1
- sta len+1
- lda zrda+2
- sbc rstrt+2
- sta len+2
- jsr h2a
- jsr lgreen
- jsr primm
- .asc " bytes used in ", 0
- jsr white
- lda ttf
- sta len
- lda ttf+1
- sta len+1
- lda #0
- sta len+2
- jsr h2a
- jsr lgreen
- jsr primm
- .asc " File(s). ", 0
- jsr white
- lda rdmax
- ldx rdmax+1
- ldy #0
- bit rflag
- bpl zzz
- pha
- txa
- tay
- pla
- tax
- lda #0
- zzz sec
- sbc zrda
- sta len
- txa
- sbc zrda+1
- sta len+1
- tya
- sbc zrda+2
- sta len+2
- jsr h2a
- jsr lgreen
- jsr primm
- .asc " bytes free.",13,0
- jsr white
- lda #"("
- jsr chrout
- bit rflag
- bpl xxx
- jsr in1750
- jmp ex0
-
- xxx lda #"$"
- jsr chrout
- lda rdadr+1
- jsr hexa
- lda rdadr
- jsr hexa
- lda #"-"
- jsr chrout
- clc
- lda zrda
- adc #2
- bcc tyr
- inc zrda+1
- tyr pha
- lda zrda+1
- jsr hexa
- pla
- jsr hexa
- jsr primm
- .asc " in bank ", 0
- lda #0
- ldx rdbnk
- jsr $8e32
- jsr primm
- .asc ")",13,0
- ex0 lda #0
- jmp int0e
-
- cd2 lda sw1
- cmp #"w"
- bne ccd2
- dec flag
- bpl psp
- lda #2
- sta flag
- bne ccd2
- psp lda #" "
- jsr chrout
- .byt $2c
- ccd2 lda #13
- jsr chrout
- jsr yellow
- ldy #2
- cd3 lda $1b60,y ;print command name
- beq cd4 ;end of name
- jsr chrout
- iny
- bne cd3
-
- cd4 iny
- lda $1b60,y ;get CR
- sta index1
- bit index1
- php ;save it (bmi if seq file)
- rol a ;convert to RAM bank 0-3
- rol a
- rol a
- and #3
- ora #$30
- sta ldbank
- iny ;point to load address
- sty index1 ;and save it
- cd5 lda #" "
- jsr chrout
- iny ;tab(16)
- cpy #19
- bne cd5
- jsr cyan
- plp ;seq file?
- bpl nprog ;no prog
- bvc batch
- jsr lgreen
- jsr primm
- .asc "(type) ", 0
- jmp nxt
-
- batch jsr dgreen
- jsr primm
- .asc "(batch) ", 0
- jmp nxt
-
- nprog ldy index1
- lda $1b60,y ;get load address
- tax
- stx ldad
- iny
- lda $1b60,y
- iny
- sta ldad+1
- cpx #1
- bne nnpr
- dec $f1
- nnpr sty index1+1 ;save length of header
- tay
- jsr prtx ;display start address
- lda #"-"
- jsr chrout
- ldy #0 ;calc end=start+len-len.of.header
- lda $1b60,y
- sec
- sbc index1+1
- tax
- iny
- lda $1b60,y
- sbc #0
- tay
- stx temp
- sty temp+1
- clc
- txa
- adc ldad
- tax
- tya
- adc ldad+1
- tay
- jsr prthex
- nxt ldy #0
- ;lda $1b60,y
- ;clc
- ;adc zrda
- ;pha
- ;iny
- ;lda $1b60,y
- ;adc zrda+1
- ;sta zrda+1
- ;pla
- ;sta zrda
- jsr stop
- bne gocd0
- lda #$ff
- jmp int0e
-
- gocd0 ldy #7 ;next file
- jsr int21
- bcc ggcd0 ;ok
- jsr white
- jsr primm
- .asc 13,"Ramdisk corrupt? Read past end.",13,0
- lda #4
- jmp int0e
-
- ggcd0 jmp cd0
-
- prtx lda #"$"
- jsr chrout
- prthex stx index1
- tya
- jsr hexa
- lda index1
- jmp hexa
-
- ldad .wor 0
- ldbank .byt 0
- temp .wor 0
- rstrt .byt 0, 0, 0 ;start of RAM disk
- rmax .byt 0, 0, 0 ;max size of RAM disk
-
-
- in1750 jsr primm
- .asc "RAM disk in 1750 bank", 0
- sec
- lda rdmax+1
- sbc rdadr+1
- cmp #1
- bne ms11
- lda rdadr+1
- ora #$30
- sta ms0+1
- jsr primm
- ms0 .asc " .)",13,0
- jmp int0e
-
- ms11 lda rdadr+1
- ora #$30
- sta ms2+2
- lda rdmax+1
- ora #$30
- sec
- sbc #1
- sta ms2+4
- ms1 jsr primm
- ms2 .asc "s a-b.)",13,0
- jmp int0e
-
- ;-------------------------------
- ;output a hex # in ascii decimal
- ;-------------------------------
- ; (3 byte number in 'len')
-
- h2a ldx #0 ;initialize indexes
- ldy #0
- sty h2atmp
- loop lda #"0" ;initialize digit
- sta ascii,x
- loop2 sec
- lda len
- sbc table,y
- pha ;increment the digit?
- lda len+1
- sbc table+1,y
- pha
- lda len+2
- sbc table+2,y
- bcc nxdigt ;branch if 'no'
- sta len+2
- pla
- sta len+1
- pla ;adjust the hex value
- sta len ;and increment the digit
- lda #$ff
- sta h2atmp
- inc ascii,x
- bne loop2
-
- nxdigt pla
- pla
- iny ;prepare for next digit
- iny
- iny
- iny
- inx
- bit h2atmp
- bmi nadj
- lda #" "
- sta ascii-1,x
- nadj cpx #8
- bcc loop
- npr nop
- ldy #0 ;prepare to send number
- loop3 cpy #2
- beq pcom
- cpy #5
- bne nocom
- pcom lda ascii-1,y
- cmp #" "
- beq nocom
- lda #","
- ppcom jsr chrout
- nocom lda ascii,y
- cmp #" "
- beq skpsp
- jsr chrout
- skpsp iny
- cpy #8
- bcc loop3
- rts ;done, return
-
-
- table .wor 38528, 152
- .wor 16960, 15
- .wor 34464, 1
- .wor 10000, 0
- .wor 1000, 0
- .wor 100, 0
- .wor 10, 0
- .wor 1, 0
-
-
- ascii .asc "00000000"
- ttf .wor 0
- len .byt 0, 0, 0
- flag .byt 0
- h2atmp .byt 0
-
- white lda #1
- .byt $2c
- lgreen lda #6
- .byt $2c
- dgreen lda #2
- .byt $2c
- cyan lda #3
- .byt $2c
- yellow lda #0
- sty sy+1
- tay
- lda $1bc8,y
- sta $f1
- sy ldy #0
- rts
-
- .end
-