home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / enterprs / c128 / text / examples.arc / RDOFF.A < prev    next >
Encoding:
Text File  |  1989-12-01  |  3.1 KB  |  75 lines

  1. ; rdoff.asm
  2. ;================================================
  3. ; Command: disable RAM disk and free up that RAM
  4. ;================================================
  5.                                   
  6. maxm1       = $0039               ; top of RAM1 for BASIC
  7. maxm0       = $1212               ; top of RAM0 for BASIC
  8. rflag       = $1bf0               ; bit 7=1 if RAMdisk in the 1750
  9. rdmax       = $1bf1               ; top of RAM disk saved by SETRAM
  10. rdadr       = $1bf5               ; address where RAM disk begins
  11. rdbnk       = $1bf3               ; standard bank where RAM disk is
  12. tx          = $1bfe               ; bit 6 flags RAM disk on/off
  13. int0e       = $170e               ; terminate program
  14. clr         = $af81               ; BASIC clear
  15. primm       = $ff7d               ; print immediate
  16.                                   
  17. star        = $0b00               
  18.             .wor star             
  19.             * = star              
  20.  
  21.             jmp rdoff
  22.             dw  Date
  23.                       
  24. rdoff       bit tx                ; 1st check if its already off
  25.             bvs rdo               ; its on
  26.             jmp int0e             ; its off. just exit
  27.                                   
  28. rdo         lda tx                ; disable it
  29.             and #%10111111        
  30.             sta tx                
  31.             lda rdbnk             ; what bank is it in?
  32.             cmp #1                ; is it bank 1?
  33.             beq rdo1              ; yes. free up string RAM
  34.             cmp #0                ; bank 0?
  35.             beq rdo0              ; yes. free up program RAM
  36.             jmp rd1x              
  37.                                   
  38. rdo1        lda maxm1             ; check if something else has been installed
  39.             cmp rdadr             
  40.             bne rd1err            ; if so, then can't disable RAM disk
  41.             lda maxm1+1           
  42.             cmp rdadr+1           
  43.             bne rd1err            
  44.             lda rdmax             
  45.             sta maxm1             
  46.             lda rdmax+1           
  47.             sta maxm1+1           
  48.             lda #0                
  49.             jsr clr               
  50. rd1x        jsr primm             
  51.             .asc 13,"RAM disk is off",13,0
  52.             jmp int0e             
  53.                                   
  54. rd1err      jmp rd0err            
  55.                                   
  56. rdo0        lda maxm0             ; in bank 0, check for something new
  57.             cmp rdadr             
  58.             bne rd0err            
  59.             lda maxm0+1           
  60.             cmp rdadr+1           
  61.             bne rd0err            
  62.             lda rdmax             
  63.             sta maxm0             
  64.             lda rdmax+1           
  65.             sta maxm0+1           
  66.             jmp rd1x              
  67.                                   
  68. rd0err      jsr primm             
  69.             .asc 13,"RAM disk has been disabled",13,13
  70.             .asc "Unable to free RAM since top of RAM" 
  71.             .asc " pointer has been altered",13,0
  72.             jmp int0e             
  73.                                   
  74.             .end                  
  75.