home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CP/M
/
CPM_CDROM.iso
/
enterprs
/
c128
/
text
/
examples.arc
/
RSAVE.A
< prev
next >
Wrap
Text File
|
1989-12-01
|
5KB
|
123 lines
;rsave.asm
;==============================================
; Command: Copy RAM resident command to floppy
;==============================================
poker = $0016
index1 = $0024
parm = $0026
int04 = $1704
int05 = $1705
int08 = $1708
int09 = $1709
int0c = $170c
int0d = $170d
int0e = $170e
int13 = $1713
int21 = $1721
primm = $ff7d
chrout = $ffd2
rdmax = $1bf1
rdadr = $1bf5
rdbnk = $1bf3
tx = $1bfe
sw1 = $1bfc
getcfg = $ff6b
chkout = $ffc9
clrchn = $ffcc
close = $ffc3
star = $0b00
.wor star
* = star
jmp rsave
dw Date
rsave lda #13
jsr chrout
bit tx
bvs rdon
jsr primm
.asc 13,"RAM disk isn't enabled.",13,0
lda #2 ;return errorlevel 2
jmp int0e
rdon ldx #1 ;start with %1 and work up
stx parm
rm0 ldx parm
jsr int04 ;confirm that parameter exists
bcc rm1 ;ok. go on its there
cpx #1 ;1st parameter?
bne rmx ;no then ok
rms jsr primm
.asc 13,"Syntax: rsave d:command1 d:command2 ....",13
.asc 13,"Purpose: Copy resident command to disk",13,0
lda #1
.byt $2c
rmx lda #0
jmp int0e ;all done
rm1 ldy #6 ;locate %x in the RAM disk
jsr int21
php ;save found flag
ldy #0
ldx parm
jsr int04
rm2 jsr chrout ;echo filename
iny
jsr int05
bcc rm2
rm3 lda #" " ;tab(16)
jsr chrout
iny
cpy #18
bne rm3
plp ;was it found?
bcc rm4 ;yes. copy to floppy
jsr primm
.asc "Not found.",13,0
rmnx inc parm
jmp rm0
rm4 ldx parm ;scratch it first
jsr int13
ldy $1b7f ;offset to CR saved by int21
lda $1b63,y ;is it seq?
bpl prgfil ;no prg
lda #"s"
.byt $2c
prgfil lda #"p"
ldx parm
jsr int09 ;open %1 for write
stx svla ;save la
bcs rmerr ;error opening the file...exit
jsr chkout
bcs rmerr
ldy #10 ;setup RAMdisk fetch
jsr int21
rm5 ldy #11 ;fetch from RAM disk
jsr int21
php
jsr chrout
plp
bcc rm5
jsr clrchn
lda svla
jsr close
jsr primm
.asc "Saved.",13,0
jmp rmnx
rmerr jsr primm
.asc "Disk or parameter error",13,0
lda svla
jsr close
jmp rmnx
svd *=*+1 ;save default drive
svla *=*+1 ;save la
.end