Download super-extended-basic..
Transcript
APPENDIX I BASIC 1.2/EXTENDED 1.1 vs COLOR EXTENDED 2.0 DIFFERENCES SUPER EXTENDED BASIC UNRAVELLED II ORIGIN:SPECTRAL ASSOC REVISED:12/26/1999 WALTER K ZYDHEK BASIC 1.2/EXTENDED 1.1 vs COLOR EXTENDED 2.0 DIFFERENCES Listed below are all of the sections of code where the Basic 1.2 and Extended Basic 1.1 ROMs differ from the bottom half of the CoCo 3 ROM. If these changes are made in the Color Basic Unravelled and Extended Basic Unravelled books, those books can then be used with the new CoCo 3 ROM. The code below is CoCo 3 code. 80C0 * EXBAS WARM START ENTRY POINT PATCH1 XBWMST FCB $FF SET TO NOT ALLOW A RESET TO WARM START HERE 80E8 8100 8101 811C 811D 8139 L80E8 FCC FCB FCC FCB FCC FCB 'EXTENDED COLOR BASIC 2.0' CR 'COPR. 1982, 1986 BY TANDY ' CR 'UNDER LICENSE FROM MICROSOFT' CR 813A PATCH13 FCB CR,0 8C18 * DLOAD COMMAND DLOAD JSR LA429 CLOSE FILES 8C37 8C39 8C3B 8C3D 8C41 8C43 * PRESSING THE RESET WILL BRING YOU HERE INT.RSET ORCC #$50 DISABLE IRQ, FIRQ INTERRUPTS LDA #MC3+MC1 32K INTERNAL ROM, MMU DISABLED, NON COCO COMPATIBLE STA INIT0 CLR SAM+$1E JMP $C000 * FIRQ SERVICING ROUTINE ADDITIONS CLR INT.FLAG SET THE INTERRUPT FLAG TO NOT VALID CLR PIA1+3 DISABLE PIA 1. PORT B INTERRUPTS * NON SELF-STARTING ROM CARTRIDGE INITIALIZATION CODE LDA #COCO+MMUEN+MC3+MC2 ENABLE MMU, 16K INTERNAL/16K EXTERNAL ROM STA INIT0 ALSO ENABLE STANDARD SCS, CONSTANT RAM AT FE00 CLR SAM+$1E FORCE THE ROM MODE RTS * PUT A CHARACTER ON THE SCREEN PATCH PATCH22A L8C37 PSHS A,B,X SAVE REGISTERS LDX CURPOS POINT X TO THE CURRENT CHARACTER POSITION LDB HRWIDTH GET THE HI-RES TEXT MODE LBNE $F7AE BRANCH IF IN A HI-RES TEXT MODE (ALINK22) L8C41 LDB 1,S RESTORE ACCB TO ITS FORMER GLORY JMP LA30E GO BACK TO THE NON HI-RES CHARACTER DISPLAY ROUTINE 8C46 8C48 8C4A 8C4C 8C4F 8C51 8C54 * CLS PATCH PATCH23A L8C46 PSHS TST BEQ JMP L8C4F PULS JMP NOP A02A A02C A02F A032 A035 A037 A039 A03A A03C A03E A040 A042 A044 A046 A048 A04A A04C A04F A051 A053 A055 * NEW 2.0 INITIALIZATION CODE LA02A LDA #BLOCK7.2 STA MMUREG+2 LDX #PIA1 LDD #$FF34 CLR 1,X CLR 3,X DECA STA ,X LDA #$F8 STA 2,X STB 1,X STB 3,X CLR 2,X LDA #2 STA ,X LDA #$FF34 LDX #PIA0 CLR 1,X CLR 3,X CLR ,X STA 2,X 8C1B 8C1D 8C1F 8C22 8C25 8C28 8C2B 8C2E 8C30 8C33 8C36 CC HRWIDTH L8C4F $F6AD CC LA913 SAVE THE ZERO FLAG CHECK THE HI-RES TEXT MODE BRANCH IF NOT IN A HI-RES TEXT MODE GO DO A HI-RES CLS (ALINK23) RESTORE THE ZERO FLAG GO DO A NON HI-RES CLS * PUT THE 'NORMAL' BLOCK BACK INTO LOGICAL BLOCK 2; * THE INITIALIZATION CODE AT $C000 USES BLOCK 6.4. POINT X TO PIA1 * CLEAR CONTROL REGISTER A ON PIA1 CLEAR CONTROL REGISTER B ON PIA1 A REG NOW HAS $FE BITS 1-7 ARE OUTPUTS, BIT 0 IS INPUT ON PIA1 SIDE A = = BITS 0-2 ARE INPUTS, BITS 3-7 ARE OUTPUTS ON B SIDE * ENABLE PERIPHERAL REGISTERS, DISABLE PIA1 MPU * INTERRUPTS AND SET CA2, CB2 AS OUTPUTS SET 6847 MODE TO ALPHA-NUMERIC * * MAKE RS232 OUTPUT MARKING POINT X TO PIA0 CLEAR PIA0 CONTROL REGISTER A CLEAR PIA0 CONTROL REGISTER B SET PIA0 SIDE A TO INPUT * SET PIA0 SIDE B TO OUTPUT I1