Skip to content

Commit 53d50d8

Browse files
committed
Now create Squanchy BASIC and Super Squanchy BASIC for the Color Computer 3
1 parent 45a18c6 commit 53d50d8

File tree

4 files changed

+47
-22
lines changed

4 files changed

+47
-22
lines changed

Makefile

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,35 @@
1-
all: calc_org bas13.bin install.asm SQUANCHY.DSK
1+
all: calc_org sb.bin ssb.bin install.asm SQUANCHY.DSK
22

33
calc_org: calc_org.c
44
cc -Wall -Werror $^ -o $@
55

6-
bas13.bin: equates.asm bas.asm calc_org bas13.bin.sym
6+
sb.bin: equates.asm bas.asm calc_org
77
# Determine length of ROM
88
lwasm -D BASIC_START=0 -o /dev/null equates.asm bas.asm [email protected]
99
# Assemble again with perfect offset
10-
lwasm -D BASIC_START=`./calc_org bas13.bin.sym` -o $@ equates.asm bas.asm [email protected] [email protected]
10+
lwasm -D BASIC_START=`./calc_org sb.bin.sym` -o $@ equates.asm bas.asm [email protected] [email protected]
1111

12-
install.bin: bas13.bin.sym install.asm
12+
ssb.bin: equates.asm bas.asm calc_org
13+
# Determine length of ROM
14+
lwasm -D COCO3 -D BASIC_START=0 -o /dev/null equates.asm bas.asm [email protected]
15+
# Assemble again with perfect offset
16+
lwasm -D COCO3 -D BASIC_START=`./calc_org ssb.bin.sym` -o $@ equates.asm bas.asm [email protected] [email protected]
17+
18+
instsb.bin: sb.bin.sym install.asm
19+
lwasm -o $@ $^ --list=$@.lst --symbol-dump=$@.sym
20+
21+
instssb.bin: ssb.bin.sym install.asm
1322
lwasm -o $@ $^ --list=$@.lst --symbol-dump=$@.sym
1423

15-
SQUANCHY.DSK: readme.bas s.bas squanchy.bas install.bin bas13.bin
24+
SQUANCHY.DSK: readme.bas s.bas squanchy.bas instsb.bin instssb.bin sb.bin ssb.bin
1625
decb dskini SQUANCHY.DSK
1726
decb copy -t readme.bas SQUANCHY.DSK,README.BAS
1827
decb copy -t s.bas SQUANCHY.DSK,S.BAS
1928
decb copy -t squanchy.bas SQUANCHY.DSK,SQUANCHY.BAS
20-
decb copy -2b install.bin SQUANCHY.DSK,INSTALL.BIN
21-
decb copy -2b bas13.bin SQUANCHY.DSK,BAS13.BIN
29+
decb copy -2b instsb.bin SQUANCHY.DSK,INSTSB.BIN
30+
decb copy -2b instssb.bin SQUANCHY.DSK,INSTSSB.BIN
31+
decb copy -2b sb.bin SQUANCHY.DSK,SB.BIN
32+
decb copy -2b ssb.bin SQUANCHY.DSK,SSB.BIN
2233

2334
clean:
2435
-rm -f *.bin *.lst *.sym SQUANCHY.DSK

bas.asm

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,14 +32,16 @@ LA00E LDS #LINBUF+LBUFMX+1 SET STACK TO TOP OF LINE INPUT BUFFER
3232
BNE BACDST NO - DO A COLD START
3333
JMP ,X YES, G0 THERE
3434
RESVEC LEAY <LA00E,PCR POINT Y TO WARM START CHECK CODE
35-
LA02A LDX #PIA1 POINT X TO PIA1
35+
*LA02A LDX #PIA1 POINT X TO PIA1
36+
LA02A LDX #PIA0+4 POINT X TO PIA0
3637
CLR -3,X CLEAR PIA0 CONTROL REGISTER A
3738
CLR -1,X CLEAR PIA0 CONTROL REGISTER B
3839
CLR -4,X SET PIA0 SIDE A TO INPUT
3940
LDD #$FF34 *
4041
STA -2,X * SET PIA0 SIDE B TO OUTPUT
4142
STB -3,X * ENABLE PIA0 PERIPHERAL REGISTERS, DISABLE
4243
STB -1,X * MPU INTERRUPTS, SET CA2, CA1 TO OUTPUTS
44+
LDX #PIA1 POINT X TO PIA1
4345
CLR 1,X CLEAR CONTROL REGISTER A ON PIA1
4446
CLR 3,X CLEAR CONTROL REGISTER B ON PIA1
4547
DECA A REG NOW HAS $FE
@@ -126,7 +128,7 @@ LA0B6 STX 3,U * SET EXBAS COMMAND INTERPRETATION
126128
ldx #rstpgm point x to rom source data
127129
ldu #RSTRAM point u to ram destination
128130
ldb #7 move 7 bytes
129-
jsr >LA59A move 28 bytes from rom to ram
131+
jsr >LA59A move 7 bytes from rom to ram
130132

131133
* place 64k RAM aware reset program vector
132134
* LDX #BAWMST WARM START ADDRESS
@@ -137,7 +139,8 @@ LA0E2 LDA #$55 WARM START FLAG
137139
BRA LA0F3 GO TO BASIC’S MAIN LOOP
138140
*BAWMST NOP NOP REQ’D FOR WARM START
139141
* This no longer needs a NOP
140-
BAWMST CLR DEVNUM SET DEVICE NUMBER TO SCREEN
142+
BAWMST
143+
CLR DEVNUM SET DEVICE NUMBER TO SCREEN
141144
JSR >LAD33 DO PART OF A NEW
142145
ANDCC #$AF ENABLE IRQ,FIRQ
143146
JSR >LA928 CLEAR SCREEN
@@ -200,7 +203,11 @@ LA145 FDB LAA29 POINTS TO SECONDARY FUNCTION JUMP TABLE
200203
* FCB '1'
201204
* FCC '.'
202205
* FCB '3'
206+
ifdef COCO3
207+
LA147 fcc 'SUPER SQUANCHY BASIC'
208+
else
203209
LA147 fcc 'SQUANCHY BASIC'
210+
endif
204211
LA156 FCB CR
205212
*LA157 FCC '(C) 1982 TANDY'
206213
LA165 FCB $00
@@ -4563,5 +4570,10 @@ LBFE1 FCB $83,$49,$0F,$DA,$A2 * 2*PI
45634570
*LBFFA FDB SWIVEC SWI
45644571
*LBFFC FDB NMIVEC NMI
45654572
*LBFFE FDB RESVEC RESET
4566-
4573+
ifdef COCO3
4574+
* The ROM reset routine in a CoCo 3 requires this byte to be $55
4575+
* if we want to warm start
4576+
fcb $55 ($FEED)
4577+
zmb 18
4578+
endif
45674579
BASIC_END equ *

readme.bas

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@
33
30 PRINT "REASSEMBLED TO BE AS HIGH IN"
44
40 PRINT "A 64K COLOR COMPUTER'S RAM AS"
55
50 PRINT "POSSIBLE."
6-
60 PRINT "THIS SHOULD PRODUCE A BASIC THATIS 100% COMPAITABLE, BUT ALLOWS"
6+
60 PRINT "THIS SHOULD PRODUCE A BASIC THATIS 100% COMPAITABLE, AND ALLOWS"
77
70 PRINT "LARGER PROGRAMS TO RUN."
88
70 PRINT "PROGRAMS THAT DEPEND ON ANY"
99
80 PRINT "INTERNAL ASPECT OF THE"
10-
90 PRINT "INTERRUPTER, EVEN THE"
10+
90 PRINT "INTERPRETER, EVEN THE"
1111
100 PRINT "DOCUMENTED ONES, WILL NOT"
1212
110 PRINT "WORK."
1313
120 PRINT

squanchy.bas

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1-
10 PCLEAR 1 : CLEAR 50, 8192
2-
20 PRINT "LOAD SQUANCHY BASIC ROM, OFFSET INTO LOWER RAM"
3-
30 LOADM "BAS13.BIN",33024
4-
40 PRINT "LOAD INSTALLER"
5-
50 LOADM "INSTALL.BIN"
6-
60 PRINT "TURN OFF DRIVE MOTOR"
7-
70 POKE 65344,0
8-
80 PRINT "EXECUTE"
9-
90 EXEC
1+
10 PCLEAR 1:CLEAR 50, 8192
2+
20 IF PEEK(58108)=77 THEN PRINT "COCO 3 DETECTED":A$="SSB.BIN":B$="INSTSSB.BIN":GOTO 40
3+
30 A$="SB.BIN":B$="INSTSB.BIN"
4+
40 PRINT "LOAD SQUANCHY BASIC ROM, OFFSET INTO LOWER RAM"
5+
50 LOADM A$,33024
6+
60 PRINT "LOAD INSTALLER"
7+
70 LOADM B$
8+
80 PRINT "TURN OFF DRIVE MOTOR"
9+
90 POKE 65344,0
10+
100 PRINT "EXECUTE"
11+
110 EXEC

0 commit comments

Comments
 (0)