-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathOSKBasic.asm
226 lines (209 loc) · 7.76 KB
/
OSKBasic.asm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
;*******************************************************************************
;* OldSkoolCoder BASIC *
;* *
;* Written By John C. Dale *
;* *
;* Date 26th October 2020 *
;*******************************************************************************
;* *
;* Change History *
;* 26th Oct 2020 : Created new project for use in the new OSKBasic Twitch Sers*
;* 2nd Nov 2020 : Added BASIC Tokaniser and Lister functions for new commands*
;* 23rd Nov 2020 : Added BASIC Evaluator, Executioner, Graphic and Screen Code*
;* 7th Dec 2020 : Added Graphics Functions and BASIC Commands:PLOT and RPOINT*
;* 14th Dec 2020 : Added BASIC Commands:DRAW *
;* 29th Dec 2020 : Updated BASIC Commands:DRAW to not use any BASIC Functions *
;* 6th Jan 2021 : Addes BASIC Commands: CIRCLE, COLOUR, ERASE *
;* 24th Feb 2021 : Addes BASIC Commands: SHAPE *
;* 3rd Mar 2021 : Addes REVERSE, BOX and JOY *
;* 10th Mar 2021 : Added CHAR, HCHAR and SPRITE *
;* 17th Mar 2021 : Added MOB, MOBCOL, FILL *
;* 24th Mar 2021 : Added SPON,SPOFF,SPLACE, Redefine SPRITE, GDUMP, GLOAD, *
;* GSAVE *
;* 31th Mar 2021 : Added VOICE, SOUND, CHANNEL, OFF *
;* 14th Apr 2021 : Added TRIANGLE, SAW, PULSE and NOISE, redeveloped SPRON/OFF*
;* : Added CLG *
;* 21st Apr 2021 : Configure to be a Cartridge File *
;* cartconv -t normal -name "OSK Graphics Extension" *
;* -i oskbasic.prg -o oskbasic.crt *
;*******************************************************************************
* = $8000 ; Cartridge start Code
CARTSTART = *
;*******************************************************************************
;* Includes *
;*******************************************************************************
incasm "incCartInitiate.asm"
incasm "libROMRoutines.asm"
incasm "libBASICRoutines.asm"
incasm "libCharacterPETSCIIConst.asm"
incasm "libGraphicsRoutines.asm"
incasm "incBASICTokaniser.asm"
incasm "incBASICLister.asm"
incasm "incBASICEvalMy.asm"
incasm "incBASICByeBye.asm"
incasm "incVICChipLocations.asm"
incasm "incCIAChipLocations.asm"
*=$8400
dcb $0400, $01
;*******************************************************************************
;* Extra BASIC Graphic Command *
;*******************************************************************************
*=$8800
incasm "incBASICErrorHandler.asm"
incasm "incGRAPHICCommand.asm"
incasm "incSCREENCommand.asm"
incasm "incPLOTCommand.asm"
incasm "incUtilities.asm"
incasm "incRPOINTCommand.asm"
incasm "incDRAWCommand.asm"
incasm "incCIRCLECommand.asm"
incasm "incCOLOURCommand.asm"
incasm "incERASECommand.asm"
incasm "incSHAPECommand.asm"
incasm "incREVERSECommand.asm"
incasm "incBOXCommand.asm"
incasm "incJOYCommand.asm"
incasm "incCHARCommand.asm"
incasm "incHCHARCommand.asm"
incasm "incSPLACECommand.asm"
incasm "incSPRITECommand.asm"
incasm "incMOBCOLCommand.asm"
incasm "incFILLCommand.asm"
;incasm "incSPONCommand.asm"
;incasm "incSPOFFCommand.asm"
incasm "incSPCommand.asm"
incasm "incGSAVECommand.asm"
incasm "incGLOADCommand.asm"
incasm "incGDUMPCommand.asm"
incasm "incSOUNDCommand.asm"
incasm "incVOICECommand.asm"
incasm "incOFFCommand.asm"
incasm "incCHANNELCommand.asm"
incasm "incTRIANGLECommand.asm"
incasm "incSAWCommand.asm"
incasm "incPULSECommand.asm"
incasm "incNOISECommand.asm"
incasm "incCLGCommand.asm"
;*******************************************************************************
;* Variables *
;*******************************************************************************
Buffer = 512
SCROLX = $D016
RIBUF = $F7
STAL = $C1
MEMUSS = $C3
INDEX = $22
ROBUF = $F9
LINNUM = $14
SCREENRAM = $0400 ; $0400
SPRITE_POINTERS = $07F8
BITMAP_START = $A000 ; $A000
BITMAP_END = $C000 ; $C000
;*******************************************************************************
;* Code *
;*******************************************************************************
;*******************************************************************************
;* Storage Locations *
;*******************************************************************************
COMM_XLO = $02A8
;brk
COMM_XHI = COMM_XLO + 1
;brk
COMM_Y = COMM_XHI + 1
;brk
COMM_U = COMM_Y + 1
;brk
COMM_V = COMM_U + 1
;brk
COMM_SLO = COMM_V + 1
;brk
COMM_SHI = COMM_SLO + 1
;brk
COMM_R = COMM_SHI + 1
;brk
COMM_C = COMM_R + 1
;brk
COMM_X1LO = COMM_C + 1
;brk
COMM_X1HI = COMM_X1LO + 1
;brk
COMM_X2LO = COMM_X1HI + 1
;brk
COMM_X2HI = COMM_X2LO + 1
;brk
COMM_Y1 = COMM_X2HI + 1
;brk
COMM_Y2 = COMM_Y1 + 1
;brk
COMM_XDLO = COMM_Y2 + 1
;brk
COMM_XDHI = COMM_XDLO + 1
;brk
COMM_XXLO = COMM_XDHI + 1
;brk
COMM_XXHI = COMM_XXLO + 1
;brk
COMM_YY = COMM_XXHI + 1
;brk
COMM_YD = COMM_YY + 1
;brk
COMM_XLLO = COMM_YD + 1
;brk
COMM_XLHI = COMM_XLLO + 1
;brk
COMM_YL = COMM_XLHI + 1
;brk
COMM_AXLO = COMM_YL + 1
;brk
COMM_AXHI = COMM_AXLO + 1
;brk
COMM_AY = COMM_AXHI + 1
;brk
COMM_RXLO = COMM_AY + 1
;brk
COMM_RXHI = COMM_RXLO + 1
;brk
COMM_RY = COMM_RXHI + 1
;brk
COMM_XRLO = COMM_RY + 1
;brk
COMM_XRHI = COMM_XRLO + 1
;brk
COMM_YR = COMM_XRHI + 1
;brk
COMM_START = COMM_YR + 1
;text "aaaaaa
COMM_FINISH = COMM_START + 6
;text "aaaaaa
COMM_INCR = COMM_FINISH + 6
;text "aaaaaa
ResultFrac = COMM_INCR + 6
Result = ResultFrac + 1
ResultHi = Result + 1
Working = ResultHi + 1
WorkingHi = Working + 1
Estimate = WorkingHi + 1
EstimateHi = Estimate + 1
Number = EstimateHi + 1
NumberHi = Number + 1
Divisor = NumberHi + 1
DivisorHi = Divisor + 1
; xxxx 3210
DrawingExecutionDriver = DivisorHi + 1 ; xxxx YYXX
; XYXY 0 = Add, 1 = Subtract
;
COMM_XLFRAC = DrawingExecutionDriver + 1
COMM_YLFRAC = COMM_XLFRAC + 1
COMM_GRAPHIC_COLOUR = COMM_YLFRAC + 1
COMM_ERASE_ENABLED = COMM_GRAPHIC_COLOUR + 1
COMM_CXHI = COMM_ERASE_ENABLED + 1
COMM_CXLO = COMM_CXHI + 1
COMM_CY = COMM_CXLO + 1
COMM_VOICEGATES = COMM_CY + 1
COMM_NEXT_VAR = COMM_VOICEGATES + 4
BYTEMASK
BYTE $80, $40, $20, $10, $08, $04, $02, $01
*=$9FFF
brk
;*=$A000
;incbin "basic.bin"