0250 ; REV.B TO REV.C CONVERTER›0260 ; BY MATTHEW RATCLIFF›0270 ; (c) 1985, ANTIC PUBLISHING›0280 *= $0600›0290 .OPT OBJ›0300 ;›0310 ; PUT CODE INTO PAGE 6›0320 ;›0330 CASINI = $02 ;VECTOR WE WILL STEAL›0340 BOOT = $09 ;CASS/DISK BOOT FLAG›0350 ; SET BIT 1 AND SYSTEM LOOKS FOR›0360 ; POST RESET HANDLER CODE POINTED›0370 ; TO BY CASINI VECTOR. THIS IS›0380 ; HOW RESET ALWAYS GIVES YOU REV.C›0390 ; RAM-BASIC.›0400 GINTLK = $03FA ;EXTERNAL CART? DO NOTHING›0410 RMPNT = $D8 ;ROM/RAM POINTER›0420 COUNT = $DA ;BUG FIX COUNT LOC›0430 PORTB = $D301 ;CONTROL ROM/RAM THRU HERE›0440 BEGBAS = $A000 ;BASIC ROM STARTS HERE›0450 ;›0460 ; STEAL CASSETTE RESET VECTOR›0470 ; AND POINT HERE FOR NEXT RESET.›0480 ;›0490 STEAL LDA # STEAL ;EVERY TIME RESET IS PRESSED›0520 STA CASINI+1›0530 LDA GINTLK ;EXTERNAL CART?›0540 BEQ CNTNU ;IF YES, CONTINUE›0550 RTS ; IF NO, ABORT›0560 CNTNU LDA # BEGBAS›0590 STA RMPNT+1›0600 BCOPY LDY #0 ;COPY IT TO RAM›0610 LDA PORTB ;BASIC ROM ON PLEASE›0620 AND #$FD ;RESET CONTROL BIT=ON›0630 STA PORTB ;GOT IT›0640 LDA (RMPNT),Y ;GET ROM BYTE›0650 PHA ;SAVE IT›0660 LDA PORTB ;NOW ENABLE THE RAM INSTEAD›0670 ORA #$02 ;SET CONTROL BIT=OFF›0680 STA PORTB ;ROM OFF, RAM ON›0690 PLA ;GET ROM BYTE›0700 STA (RMPNT),Y ;RAM VERSION UPDATED›0710 INC RMPNT›0720 BNE BCOPY›0730 INC RMPNT+1›0740 LDA RMPNT+1 ;DONE COPYING?›0750 CMP #$C0 ;END OF BASIC?›0760 BNE BCOPY ;NOT YET!›0770 ; NOW GO FIX THE BUGS!›0780 FIXBUGS LDX #0 ;BUG TABLE INDEX›0790 LDA #12 ;12 BUGS TO FIX›0800 STA COUNT›0810 FXLOOP LDY #0 ;SETUP RAM POINTERS›0820 LDA FXTBL,X ;GET ADDR LO BYTE›0830 STA RMPNT ;SETUP RAM POINTER›0840 INX ›0850 LDA FXTBL,X ;GET ADDR HI BYTE›0860 STA RMPNT+1›0870 INX ›0880 LDA FXTBL,X ;GET CORRECT BYTE›0890 STA (RMPNT),Y ;TO FIX THE BUG›0900 INX ;POINT TO NEXT FIX›0910 DEC COUNT›0920 BNE FXLOOP›0930 LDA BOOT ;ALL DONE WITH FIXED RAM-BASIC›0940 ORA #$02 ;RE-HOOK INTO BOOT›0950 STA BOOT ;FOR NEXT RESET KEY-PRESS›0960 RTS ›0970 ;›0980 ; ADDRESS,BYTE FIXUP TABLE FOR›0990 ; REV.B TO REV.C CONVERSION!›1000 ;›1010 FXTBL .WORD $A8DF ;ADDRESS›1020 .BYTE 234 ;WAS 202, NOW 234 IN REV.C›1030 .WORD $A8E0›1040 .BYTE 240 ;WAS 208›1050 .WORD $A8E1›1060 .BYTE 17 ;WAS 10›1070 .WORD $A8E2›1080 .BYTE 234 ;WAS 96›1090 ;›1100 ; PEEK (43234)=96 FOR REV.B›1110 ; THAT IS ADDR $A8E2›1120 ;›1130 .WORD $BB29›1140 .BYTE 0 ;WAS 16›1150 .WORD $BFF3›1160 .BYTE 0 ;WAS 44›1170 .WORD $BFF4›1180 .BYTE 0 ;WAS 55›1190 .WORD $BFF5›1200 .BYTE 0 ;WAS 105›1210 .WORD $BFF6›1220 .BYTE 0 ;WAS 110›1230 .WORD $BFF7›1240 .BYTE 0 ;WAS 110›1250 .WORD $BFF8›1260 .BYTE 0 ;WAS 101›1270 .WORD $BFF9›1280 .BYTE 0 ;WAS 114›1290 ;›1300 ; ONLY 12 BYTES DIFFERENCE BETWEEN›1310 ; REV.B & REV.C!›1320 ;›1330 .END ›