home *** CD-ROM | disk | FTP | other *** search
- ; rdoff.asm
- ;================================================
- ; Command: disable RAM disk and free up that RAM
- ;================================================
-
- maxm1 = $0039 ; top of RAM1 for BASIC
- maxm0 = $1212 ; top of RAM0 for BASIC
- rflag = $1bf0 ; bit 7=1 if RAMdisk in the 1750
- rdmax = $1bf1 ; top of RAM disk saved by SETRAM
- rdadr = $1bf5 ; address where RAM disk begins
- rdbnk = $1bf3 ; standard bank where RAM disk is
- tx = $1bfe ; bit 6 flags RAM disk on/off
- int0e = $170e ; terminate program
- clr = $af81 ; BASIC clear
- primm = $ff7d ; print immediate
-
- star = $0b00
- .wor star
- * = star
-
- jmp rdoff
- dw Date
-
- rdoff bit tx ; 1st check if its already off
- bvs rdo ; its on
- jmp int0e ; its off. just exit
-
- rdo lda tx ; disable it
- and #%10111111
- sta tx
- lda rdbnk ; what bank is it in?
- cmp #1 ; is it bank 1?
- beq rdo1 ; yes. free up string RAM
- cmp #0 ; bank 0?
- beq rdo0 ; yes. free up program RAM
- jmp rd1x
-
- rdo1 lda maxm1 ; check if something else has been installed
- cmp rdadr
- bne rd1err ; if so, then can't disable RAM disk
- lda maxm1+1
- cmp rdadr+1
- bne rd1err
- lda rdmax
- sta maxm1
- lda rdmax+1
- sta maxm1+1
- lda #0
- jsr clr
- rd1x jsr primm
- .asc 13,"RAM disk is off",13,0
- jmp int0e
-
- rd1err jmp rd0err
-
- rdo0 lda maxm0 ; in bank 0, check for something new
- cmp rdadr
- bne rd0err
- lda maxm0+1
- cmp rdadr+1
- bne rd0err
- lda rdmax
- sta maxm0
- lda rdmax+1
- sta maxm0+1
- jmp rd1x
-
- rd0err jsr primm
- .asc 13,"RAM disk has been disabled",13,13
- .asc "Unable to free RAM since top of RAM"
- .asc " pointer has been altered",13,0
- jmp int0e
-
- .end
-