8-Bit Software Online Conversion
                
             
        
        
    
Sideways Ram Loader - Listing
    
       10REM Simple loader program          
   20REM (C)1996 SPROW                  
   30MODE4:PRINT"Searching"             
   40DIMwriteable% 128                  
   50IFINKEY(-256)=253 THENPROCmaster:EN
D                                       
   60IFINKEY(-256)=255 THENPROCbbcorelk:
END                                     
   70IFINKEY(-256)=1 THENPROCbbcorelk:EN
D                                       
   80:                                  
   90DEFPROCmaster                      
  100FORS%=7TO4 STEP-1                  
  110IFFNoccupied(S%)=FALSE THENOSCLI"SR
LOAD SNAPIT 8000 "+STR$(S%):OSCLI"INSERT
 "+STR$(S%):PRINT:PRINT"Press CTRL-BREAK
 to initialise":ENDPROC                 
  120NEXT                               
  130PRINT:PRINT"No free sideways ram ba
nks":ENDPROC                            
  140:                                  
  150DEFPROCbbcorelk                    
  160FORS%=15TO0 STEP-1                 
  170IFFNanyswram(S%)=1 ANDFNoccupied(S%
)=FALSE THENOSCLI"LOAD R.SNAPIT 8000":PR
INT:PRINT"Press BREAK to intialise":ENDP
ROC                                     
  180NEXT                               
  190PRINT:PRINT"No free sideways ram ba
nks":ENDPROC                            
  200:                                  
  210DEFFNanyswram(socket)              
  220FORX=0TO2STEP2                     
  230P%=writeable%                      
  240IFINKEY(-256)=1 THENGOTO420        
  250IFINKEY(-256)=255 THENGOTO270      
  260:                                  
  270[OPTX:SEI:LDA&F4:PHA:LDA#socket:STA
&F4:STA&FE30:CLI:½Set ROM reg to socket#
                                        
  280LDA&8000:PHA:CLC:ADC#1:STAcopy     
  290.writeto                           
  300STA&8000:LDA&8000:CMPcopy          
  310BEQtrue                            
  320.false                             
  330PLA:PLA:STA&F4:STA&FE30:LDA#0:RTS  
  340.true                              
  350PLA:STA&8000:PLA:STA&F4:STA&FE30:LD
A#1:RTS                                 
  360.copy                              
  370EQUB0                              
  380]                                  
  390NEXT                               
  400=USRwriteable% AND&FF              
  410:                                  
  420[OPTX:SEI:LDA&F4:PHA:LDA#12:STA&FE0
5:LDA#socket:STA&F4:STA&FE05:CLI:½Dummy 
move takes out BASIC then set ROM reg to
 socket#                                
  430LDA&8000:PHA:CLC:ADC#1:STAcopy     
  440.writeto                           
  450STA&8000:LDA&8000:CMPcopy          
  460BEQtrue                            
  470.false                             
  480PLA:PLA:STA&F4:STA&FE05:LDA#0:RTS  
  490.true                              
  500PLA:STA&8000:PLA:STA&F4:STA&FE05:LD
A#1:RTS                                 
  510.copy                              
  520EQUB0                              
  530]                                  
  540NEXT                               
  550=USRwriteable% AND&FF              
  560:                                  
  570DEFFNoccupied(socket)              
  580A%=170:X%=0:Y%=255:R%=USR&FFF4:REM 
Read pointer to start of ROM info table 
  590X%=(R% AND &FF00)DIV&100           
  600Y%=(R% AND &FF0000)DIV&10000       
  610=?((256*Y%)+X%+socket)