mirror of
https://github.com/sehugg/8bitworkshop.git
synced 2025-04-04 05:30:20 +00:00
batari basic: more examples, more RAM, started syntax highlighting, online help
This commit is contained in:
parent
3018f27576
commit
eb01bdcea0
@ -75,6 +75,7 @@ TODO:
|
||||
- clean BOM from verilog
|
||||
- $readmemb/h
|
||||
- maybe don't have grey space with line numbers until inline ASM used?
|
||||
- batariBasic: proper line numbers, listing, syntax highlighting
|
||||
|
||||
|
||||
WEB WORKER FORMAT
|
||||
|
3909
help/bataribasic/manual.html
Normal file
3909
help/bataribasic/manual.html
Normal file
File diff suppressed because it is too large
Load Diff
@ -149,6 +149,7 @@ if (window.location.host.endsWith('8bitworkshop.com')) {
|
||||
<button id="dbg_profile" type="button" title="Show Profile" style="display:none"><span class="glyphicon glyphicon-stats" aria-hidden="true"></span></button>
|
||||
<button id="dbg_bitmap" type="button" title="Edit Bitmap"><span class="glyphicon glyphicon-camera" aria-hidden="true"></span></button>
|
||||
<button id="dbg_record" type="button" title="Start/Stop Replay Recording" style="display:none"><span class="glyphicon glyphicon-record" aria-hidden="true"></span></button>
|
||||
<button id="dbg_help" type="button" title="Help" style="display:none"><span class="glyphicon glyphicon-question-sign" aria-hidden="true"></span></button>
|
||||
</span>
|
||||
<span class="btn_group view_group" id="speed_bar" style="display:none">
|
||||
<button id="dbg_slowest" type="button" title="Slowest"><span class="glyphicon glyphicon-fast-backward" aria-hidden="true"></span></button>
|
||||
@ -281,6 +282,7 @@ if (window.location.host.endsWith('8bitworkshop.com')) {
|
||||
<script src="src/codemirror/codemirror.js"></script>
|
||||
<script src="codemirror/mode/clike/clike.js"></script>
|
||||
<script src="src/codemirror/6502.js"></script>
|
||||
<script src="src/codemirror/bataribasic.js"></script>
|
||||
<script src="codemirror/mode/z80/z80.js"></script>
|
||||
<script src="codemirror/mode/verilog/verilog.js"></script>
|
||||
<link rel="stylesheet" href="css/codemirror.css">
|
||||
|
194
presets/vcs/bb/FIFA1977.bas
Normal file
194
presets/vcs/bb/FIFA1977.bas
Normal file
@ -0,0 +1,194 @@
|
||||
rem **************************************************************************
|
||||
rem Fifa 1977 (1977 is when the Atari2600 came out)
|
||||
rem 1v1 soccer match between two players
|
||||
rem Players can move about using the joystick directions
|
||||
rem ball moves in front of the player currently in possesion of it
|
||||
rem Players cannot get too close to opponents goal
|
||||
rem Players can shoot the ball using joystick fire button
|
||||
rem Players can intercept the ball when it is kicked to gain posession
|
||||
rem Players can also steal the ball from the other player
|
||||
rem Reset game by pressing reset button
|
||||
rem **************************************************************************
|
||||
|
||||
set tv ntsc
|
||||
set romsize 4k
|
||||
rem **************************************************************************
|
||||
rem Playfield and players setup:
|
||||
rem - shape of the playfield and player sprites
|
||||
rem **************************************************************************
|
||||
playfield:
|
||||
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||
X....X...................X....X
|
||||
X.............................X
|
||||
X.............................X
|
||||
X.............................X
|
||||
X.............................X
|
||||
X.............................X
|
||||
X.............................X
|
||||
X.............................X
|
||||
X....X...................X....X
|
||||
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||
end
|
||||
|
||||
player0:
|
||||
%00100010
|
||||
%00010100
|
||||
%00001000
|
||||
%00111110
|
||||
%00001000
|
||||
%00011100
|
||||
%00011100
|
||||
%00011100
|
||||
end
|
||||
|
||||
player1:
|
||||
%01000100
|
||||
%00101000
|
||||
%00010000
|
||||
%01111100
|
||||
%00010000
|
||||
%00111000
|
||||
%00111000
|
||||
%00111000
|
||||
end
|
||||
|
||||
|
||||
rem **************************************************************************
|
||||
rem Setup:
|
||||
rem - set initial values
|
||||
rem **************************************************************************
|
||||
COLUBK = $0F
|
||||
NUSIZ0 = $30
|
||||
score = 00000 : scorecolor = $08
|
||||
a = 75
|
||||
b = 75
|
||||
c = 75
|
||||
d = 25
|
||||
z = 0
|
||||
p = 0
|
||||
player0x = a : player0y = b
|
||||
player1x = c : player1y = d
|
||||
ballx = x : bally = y
|
||||
|
||||
rem **************************************************************************
|
||||
rem Main loop:
|
||||
rem - set colors and record last coordinates of player sprites
|
||||
rem **************************************************************************
|
||||
main
|
||||
COLUP1 = $80
|
||||
COLUP0 = $40
|
||||
COLUBK = $C4
|
||||
COLUPF = $0E
|
||||
e = a
|
||||
f = b
|
||||
g = c
|
||||
h = d
|
||||
|
||||
rem **************************************************************************
|
||||
rem Draw loop:
|
||||
rem - Draws the screen and handles user input. Moves the sprites and
|
||||
rem - the ball's position and handles collisions
|
||||
rem **************************************************************************
|
||||
draw
|
||||
drawscreen
|
||||
|
||||
if joy0left then a = a - 1
|
||||
if joy0up then b = b - 1
|
||||
if joy0down then b = b + 1
|
||||
if joy0right then a = a + 1
|
||||
if joy1left then c = c - 1
|
||||
if joy1up then d = d -1
|
||||
if joy1down then d = d + 1
|
||||
if joy1right then c = c + 1
|
||||
if p = 0 && joy0fire then z = 1
|
||||
if p = 1 && joy1fire then z = 2
|
||||
if z = 0 && p = 0 then ballx = a + 5 : bally = b - 10
|
||||
if z = 0 && p = 1 then ballx = c + 4 : bally = d + 2
|
||||
if z = 1 then bally = bally - 1
|
||||
if z = 2 then bally = bally + 1
|
||||
player0x = a : player0y = b
|
||||
player1x = c : player1y = d
|
||||
if switchreset then goto hardReset
|
||||
if collision(ball, player0) then goto save0
|
||||
if collision(ball, player1) then goto save1
|
||||
if collision(player0, playfield) then goto player0HitWall
|
||||
if collision(player1, playfield) then goto player1HitWall
|
||||
if player0y < 30 then goto player0HitWall
|
||||
if player1y > 66 then goto player1HitWall
|
||||
if collision(ball, playfield) then goto shoot
|
||||
goto main
|
||||
|
||||
rem **************************************************************************
|
||||
rem Player collision:
|
||||
rem - moves player0 back to previous location entering invalid area
|
||||
rem **************************************************************************
|
||||
player0HitWall
|
||||
a = e
|
||||
b = f
|
||||
goto main
|
||||
|
||||
player1HitWall
|
||||
c = g
|
||||
d = h
|
||||
goto main
|
||||
|
||||
rem **************************************************************************
|
||||
rem Player and ball collision:
|
||||
rem - switches possession of the ball as well as making the ball
|
||||
rem - stop moving if it was shot
|
||||
rem **************************************************************************
|
||||
save0
|
||||
p = 0
|
||||
z = 0
|
||||
goto main
|
||||
|
||||
save1
|
||||
p = 1
|
||||
z = 0
|
||||
goto main
|
||||
|
||||
rem **************************************************************************
|
||||
rem Ball collides with playfield:
|
||||
rem - handles scoring based on where in the playfield the ball collided
|
||||
rem - as well as switching who possesses the ball after scoring
|
||||
rem **************************************************************************
|
||||
shoot
|
||||
if ballx > 41 && ballx < 119 then goto hit
|
||||
goto reset
|
||||
|
||||
hit
|
||||
if bally < 50 then goto player0Score
|
||||
if bally > 50 then goto player1Score
|
||||
goto reset
|
||||
|
||||
player0Score
|
||||
score = score + 1
|
||||
p = 1
|
||||
goto reset
|
||||
|
||||
player1Score
|
||||
score = score + 1000
|
||||
p = 0
|
||||
goto reset
|
||||
|
||||
rem **************************************************************************
|
||||
rem Variable reset:
|
||||
rem - resets player to initial positions
|
||||
rem **************************************************************************
|
||||
reset
|
||||
a = 75
|
||||
b = 75
|
||||
c = 75
|
||||
d = 25
|
||||
z = 0
|
||||
goto main
|
||||
|
||||
rem **************************************************************************
|
||||
rem Hard Reset:
|
||||
rem - resets the score to 0, players to initial positions, and possession
|
||||
rem - of the ball to player0
|
||||
rem **************************************************************************
|
||||
hardReset
|
||||
score = 000000
|
||||
p = 0
|
||||
goto reset
|
818
presets/vcs/bb/rblast106.bas
Normal file
818
presets/vcs/bb/rblast106.bas
Normal file
@ -0,0 +1,818 @@
|
||||
rem +-----------------------------------------+
|
||||
rem | Road Blaster | 386 bytes free |
|
||||
rem | for batariBasic | -> tested using |
|
||||
rem | by Steve Engelhardt | bleeding edge |
|
||||
rem | v0.65 (2/8/2006) | build 99a |
|
||||
rem +-----------------------------------------+
|
||||
rem
|
||||
rem Version Notes
|
||||
rem 0.42 working - car can now slow down by pressing down (Added 8.8 variables & fixed point math)
|
||||
rem 0.43 working - player car slows down when hitting side of road
|
||||
rem 0.44 working - slowdown when player car hits enemy car
|
||||
rem 0.45 working - enemy missile causes car to bouce sideways a little
|
||||
rem 0.46 testing - added some audio code - can't test it yet (.048 removed audio code to save ROM Space)
|
||||
rem 0.47 working - Bugfix in diff A switch - made it so it only doubles size of car - no speed increase.
|
||||
rem 0.48 working - car changes colors when hit - game pauses at the end.
|
||||
rem 0.49 working - missile now properly disappears when it hits an enemy car (missile0y=0 & q=0).
|
||||
rem 0.50 working - Saved 840 bytes by changing title screen pf data to data tables. :)
|
||||
rem 0.51 working - Audio Routines added and working.
|
||||
rem 0.52 working - Bugfix - if you held down on the joystick - enemy missiles would fire from the top
|
||||
rem of the screen before the cars appeared there. It's been fixed.
|
||||
rem 0.53 working - Bugfix - Setting difficulty to A - now the missile fires from the center of the
|
||||
rem double sized player car.
|
||||
rem 0.54 working - scoring change. 20pts every frame. -10 when you slow down, +10 when you speed up.
|
||||
rem 0.55 working - implementing difficulty level increase during game.
|
||||
rem cars start off in relatively straight track. (1st 4-7 scrolls)
|
||||
rem cars start zig zagging (scroll 8-21) - cars turn yellow
|
||||
rem cars start skidding l/r randomly (scroll 21+) - cars turn purple
|
||||
rem cars & missiles speed up (scroll 30+) - cars turn red
|
||||
rem 0.56 working - 2nd enemy car now turns into a powerup sprite when the other is hit.
|
||||
rem Powerup increases car's hitpoints by +1 per frame while it's touching it.
|
||||
rem 0.57 working - bugfix - left car doesn't disappear when shooting it at the beginning of the game.
|
||||
rem 0.58 working - bugfix - powerup code seems to be working correctly now.
|
||||
rem 0.59 working - revamping powerup code - now appears randomly, but stil causes damage to car.
|
||||
rem 0.60 working - random powerup code works. Shooting one car will sometimes change the other
|
||||
rem into a powerup, and sometimes it will remain a car. The powerup that appears does actually
|
||||
rem increase your health, and hitting the remaining car does damage...it seems to be working.
|
||||
rem 0.61 testing - Now back to trying to get that 2nd car to disappear when hit. :(. Widened the roadside.
|
||||
rem 0.62 testing - if you shoot the left car first, the cars dissappear individually now when you shoot them.
|
||||
rem if you shoot the right car first, the left car then shifts position to the left instead
|
||||
rem of disappearing.
|
||||
rem 0.63 working - you can now shoot each car individually, and they will both disappear individually.
|
||||
rem powerups now appear at random, and will increase your car's health.
|
||||
rem 0.64 working - powerups now won't fire at you - the missile resets to 0 when they appear.
|
||||
rem 0.65 testing - color tweaking - road changed to brown, 3rd level cars brighter purple
|
||||
rem
|
||||
rem
|
||||
rem Dev Notes/To Do List for future revisions:
|
||||
rem
|
||||
rem X-1. Make the cars "do something" when they're hit - move down, left or right a little, or shake. Right now
|
||||
rem enemy missiles and cars just pass right through you.
|
||||
rem :::--> Done.
|
||||
rem X-2. Scroll Speed Tweaking -- I'll try to add the ability to slow your car down by pressing down on the
|
||||
rem joystick make hitting the side of the road slow you down & hitting an enemy car should also slow you.
|
||||
rem :::--> Done.
|
||||
rem X-3. Change Human Player sprite so the tires move when you go left and right.
|
||||
rem :::--> Done.
|
||||
rem X-4. Variations on Enemy Car movement - it's pretty predictable right now.
|
||||
rem :::--> Done, although it may need tweaking.
|
||||
rem X-5. I may play with the enemy car shots a bit - I like the moving missile now, but I could provide the option for
|
||||
rem enemy car shots that don't move.
|
||||
rem :::--> I'm going to leave the enemy shots as they are.
|
||||
rem X-6. I need to add sound to the game.
|
||||
rem :::--> Done.
|
||||
rem X-7. I may try and implement a "pause" feature with the color/bw switch -- just to see if I can do it.
|
||||
rem :::--> I Changed my mind - this game doesn't really need that, and I'm running out of free bytes.
|
||||
rem X-8. Update Car Sprites - they're functional but could be better.
|
||||
rem :::--> Done.
|
||||
rem X-9. Increase scoring rate when driving faster; decrease when driving slower.
|
||||
rem :::--> Done.
|
||||
rem X10. Progressively increase difficulty
|
||||
rem :::--> It works, but may need to be tweaked later.
|
||||
rem X11. Add in a way to repair your car; perhaps by picking up an object off the road or something;
|
||||
rem or just repairing at certain point levels rem (evey 20,000 points? Every 50,000?)
|
||||
rem :::--> Cars are repaired by picking up powerups. A powerup appears in place of the 2nd car when one is hit.
|
||||
rem X12. If a powerup appears, make sure it doesn't fire at you.
|
||||
rem :::--> Done.
|
||||
rem 13. Make sure cars don't scroll off the road.
|
||||
rem :::--> Testing, testing, testing.
|
||||
rem
|
||||
rem
|
||||
rem V103 Changes
|
||||
rem Right Difficulty switch will now remove roadblocks
|
||||
rem Color/BW switch toggles between normal mode and invincible (practice) mode
|
||||
rem Title Screen Changed
|
||||
rem Road narrowed, the wide road caused the screen to roll on real hardware
|
||||
rem Erratic l/r movement removed on fastest enemy car speed
|
||||
rem
|
||||
rem V105 Changes
|
||||
rem Audio sound added to death
|
||||
rem Road flashes at death
|
||||
rem time screen pauses at death increased a little bit
|
||||
rem Powerups do not appear if you're pushing up on the joystick to go faster.
|
||||
rem scroll speed slows when you slow down, does not increase when you push up.
|
||||
rem
|
||||
init
|
||||
include fixed_point_math.asm
|
||||
set romsize 8k
|
||||
rem set debug cycles
|
||||
rem
|
||||
rem ** Use 8.8 variables for enemy car & missile scrolling
|
||||
rem
|
||||
dim scroll=m.n
|
||||
dim mis=k.j
|
||||
rem
|
||||
rem -------------
|
||||
rem Set Variables
|
||||
rem -------------
|
||||
a=0 : rem A = The Enemy Car's X Position + 8
|
||||
b=82 : rem X Position of Ball
|
||||
c=0 : rem Hitpoint Counter for Enemy Car Collision
|
||||
d=0 : rem
|
||||
rem e is not used
|
||||
f=0 : rem counter
|
||||
rem g is not used
|
||||
h=0 : rem H is used as a flag to know when NUSIZ1 has been changed to 0
|
||||
i=0 : rem Flag for Displaying Title Screen
|
||||
j=0 : rem part of mis 8.8 variable
|
||||
k=0 : rem part of mis 8.8 variable
|
||||
rem l=0 : rem l is a random number generator for choosing enemy car sprites
|
||||
m=0 : rem part of scroll 8.8 variable
|
||||
n=0 : rem part of scroll 8.8 variable
|
||||
o=0 : rem counter
|
||||
p=85 : rem Y Position of Player 0 (Human Car)
|
||||
q=0 : rem missile0 firing
|
||||
r=0 : rem pause timer
|
||||
s=30
|
||||
scroll=1.0 : rem Y Position of Player 1 (Enemy Car)
|
||||
t=0 : rem Scroll counter
|
||||
u=94 : rem X Position of Player 1 (Enemy Car)
|
||||
rem v=0 : rem V is random number generator for placing roadblocks
|
||||
W=0 : rem color flag
|
||||
x=75 : rem X Position of Player 0 (Human Car)
|
||||
y=16 : rem color cycler
|
||||
z=0 : rem Z is a flag - when it equals 1, an enemy car has been hit by a missile.
|
||||
mis=1.0
|
||||
missile0x=0:missile0y=0
|
||||
missile1x=0:missile1y=0
|
||||
COLUP1=208:COLUP0=0
|
||||
rem
|
||||
rem -------------
|
||||
rem Set Colors
|
||||
rem -------------
|
||||
COLUPF=160: rem was 144
|
||||
COLUBK=0
|
||||
CTRLPF=$35
|
||||
scorecolor=246
|
||||
rem
|
||||
rem -----------------------------
|
||||
rem Draw RoadBlaster Title Screen
|
||||
rem -----------------------------
|
||||
intro
|
||||
g=g+1
|
||||
if g=2 then pfscroll down :g=0
|
||||
y=y+1
|
||||
if y<17 then y=16
|
||||
if y>29 then y=16
|
||||
rem
|
||||
rem -----------------------------
|
||||
rem Draw RoadBlaster Title Screen
|
||||
rem -----------------------------
|
||||
pfpixel 7 1 on : pfpixel 25 1 on
|
||||
pfpixel 7 2 on : pfpixel 25 2 on
|
||||
pfpixel 7 3 on : pfpixel 25 3 on
|
||||
pfpixel 7 4 on : pfpixel 25 4 on
|
||||
pfpixel 7 5 on : pfpixel 25 5 on
|
||||
pfpixel 7 6 on : pfpixel 25 6 on
|
||||
pfpixel 7 7 on : pfpixel 25 7 on
|
||||
pfpixel 7 8 on : pfpixel 25 8 on
|
||||
pfpixel 7 9 on : pfpixel 25 9 on
|
||||
COLUP0=64
|
||||
COLUP1=y:rem was 46
|
||||
NUSIZ1=$05
|
||||
NUSIZ0=$27
|
||||
AUDV0=0:AUDV1=0
|
||||
player1:
|
||||
%00100011
|
||||
%00100100
|
||||
%00111110
|
||||
%00100001
|
||||
%00111110
|
||||
%00000000
|
||||
%00000000
|
||||
%00011111
|
||||
%00100000
|
||||
%00111100
|
||||
%00100000
|
||||
%00011111
|
||||
%00000000
|
||||
%00000000
|
||||
%00000100
|
||||
%00000100
|
||||
%00000100
|
||||
%00111111
|
||||
%00000000
|
||||
%00000000
|
||||
%00111111
|
||||
%00000001
|
||||
%00111111
|
||||
%00100000
|
||||
%00111111
|
||||
%00000000
|
||||
%00000000
|
||||
%00100001
|
||||
%00111111
|
||||
%00100001
|
||||
%00011110
|
||||
%00000000
|
||||
%00000000
|
||||
%00111111
|
||||
%00100000
|
||||
%00100000
|
||||
%00100000
|
||||
%00000000
|
||||
%00000000
|
||||
%00111110
|
||||
%00100001
|
||||
%00111110
|
||||
%00100001
|
||||
%00111110
|
||||
%00000000
|
||||
%00000000
|
||||
%00000000
|
||||
%00000000
|
||||
%00000000
|
||||
%00000000
|
||||
%00111110
|
||||
%00100001
|
||||
%00100001
|
||||
%00111110
|
||||
%00000000
|
||||
%00000000
|
||||
%00100001
|
||||
%00111111
|
||||
%00100001
|
||||
%00011110
|
||||
%00000000
|
||||
%00000000
|
||||
%00111111
|
||||
%00100001
|
||||
%00100001
|
||||
%00111111
|
||||
%00000000
|
||||
%00000000
|
||||
%00100011
|
||||
%00100100
|
||||
%00111110
|
||||
%00100001
|
||||
%00111110
|
||||
end
|
||||
player0:
|
||||
%00000000
|
||||
%01000010
|
||||
%01111110
|
||||
%01111110
|
||||
%00111100
|
||||
%00011000
|
||||
%00011000
|
||||
%00011000
|
||||
%10011001
|
||||
%10011001
|
||||
%11111111
|
||||
%11111111
|
||||
%10011001
|
||||
%10011001
|
||||
%00011000
|
||||
%00011000
|
||||
%00011000
|
||||
%00011000
|
||||
%10011001
|
||||
%10011001
|
||||
%11111111
|
||||
%11111111
|
||||
%10011001
|
||||
%10011001
|
||||
%00011000
|
||||
%00011000
|
||||
%00000000
|
||||
%00000000
|
||||
%00000000
|
||||
%00000000
|
||||
%00000000
|
||||
%00000000
|
||||
%00000000
|
||||
%00000000
|
||||
%00000000
|
||||
%00000000
|
||||
%00000000
|
||||
%00000000
|
||||
%00000000
|
||||
%00000000
|
||||
%00000000
|
||||
%00000000
|
||||
%00000000
|
||||
%00000000
|
||||
%00000000
|
||||
%00000000
|
||||
%00000000
|
||||
%00000000
|
||||
%00000000
|
||||
%00000000
|
||||
%00011000
|
||||
%00011000
|
||||
%10111101
|
||||
%10111101
|
||||
%11111111
|
||||
%11111111
|
||||
%10111101
|
||||
%10111101
|
||||
%00111100
|
||||
%00111100
|
||||
%00111100
|
||||
%10111101
|
||||
%10100101
|
||||
%11100111
|
||||
%11100111
|
||||
%11100111
|
||||
%10111101
|
||||
%10111101
|
||||
%00111100
|
||||
%00011000
|
||||
%01111110
|
||||
%01000010
|
||||
%01111110
|
||||
%01000010
|
||||
end
|
||||
drawscreen
|
||||
player1x=68:player1y=82
|
||||
player0x=88:player0y=83
|
||||
missile0height=2
|
||||
e=e+1
|
||||
missile0x=104:missile0y=s
|
||||
if s>52 then s=30
|
||||
if e=2 then s=s+1:e=0
|
||||
rem if s>52 then s=30
|
||||
t=0
|
||||
if i=1 then goto main
|
||||
rem
|
||||
rem ** when the game starts, flip the titlscreen off to clear the playfield
|
||||
rem
|
||||
if joy0down then i=1 : score=0 : g=0:i=0:goto intro2 : rem restart game if joystick is pushed down
|
||||
if switchreset then i=1 : score=0 : g=0:i=0:goto intro2 : rem restart game if the reset switch is pressed
|
||||
if joy0fire then i=1: score=0 : g=0:i=0:goto intro2
|
||||
goto intro
|
||||
intro2
|
||||
gosub MakeNewCar1
|
||||
s=0
|
||||
g=0
|
||||
e=0
|
||||
missile0x=0:missile0y=0
|
||||
rem --------------
|
||||
rem Main Game Loop
|
||||
rem --------------
|
||||
main
|
||||
y=y+1
|
||||
if y>250 then y=1
|
||||
rem if u>120 then u=u-1
|
||||
rem if u<64 then u=u+1
|
||||
if c<1 then c=1
|
||||
if switchbw then c=0 : rem if c=0, invincible mode
|
||||
if joy0up then goto audskip
|
||||
if joy0down then goto audskip
|
||||
AUDF0=18:AUDC0=14:AUDV0=10
|
||||
rem if scroll counter goes over 240, reset it back to highest speed level.
|
||||
if t>240 then t=31
|
||||
audskip
|
||||
if scroll > 90 then o=0
|
||||
if scroll > 96 then w=0 : h=0
|
||||
if scroll > 96 then u=94
|
||||
rem
|
||||
rem ** scroll is the Y Position of Enemy Car -- If the Y Position is less than 94, Scroll car down.
|
||||
rem ** T is a scroll counter. Every time the cars scroll through the screen once, t is incremented.
|
||||
rem
|
||||
e=e+1
|
||||
if e=2 && t < 10 then e=0:goto skipscroll
|
||||
if scroll < 97 then scroll=scroll+1.0 else scroll=0.0 : t=t+1
|
||||
if scroll < 97 && t > 35 then scroll=scroll+0.9 : mis=mis+0.9 : rem incr speed after 30 scrolls (Level 4)
|
||||
skipscroll
|
||||
gosub CarCreate
|
||||
rem
|
||||
rem -------------------------------------
|
||||
rem Random Enemy Car & Roadblock Behavior
|
||||
rem -------------------------------------
|
||||
rem
|
||||
rem if framecounter is less than 8, the cars will follow a straight track.
|
||||
v=rand
|
||||
if t > 30 then skipmv
|
||||
if t < 8 then goto skipmv : rem if framecounter is less than eight, skip l/r bouncing. (Level 1->2)
|
||||
rem if t > 20 && v > 215 then u=u-1 : rem randomly 'skids' computer car to the Left after 21 frames (Level 3)
|
||||
if t > 20 && v < 35 then u=u+1 : rem randomly 'skids' computer car to the Right after 21 frames
|
||||
skipmv
|
||||
rem
|
||||
rem ** The following will randomly generate the roadblock at 9 different X Positions.
|
||||
rem ** B is the X Position of the Ball
|
||||
rem
|
||||
if v=2 && scroll > 86 then b = 75 : rem Create Roadblock at X Position 75
|
||||
if v=234 && scroll > 86 then b = 105 : rem Create Roadblock at X Position 105
|
||||
if v=112 && scroll > 86 then b = 89 : rem Create Roadblock at X Position 89
|
||||
if v=50 && scroll > 86 then b = 81 : rem Create Roadblock at X Position 81
|
||||
if v=188 && scroll > 86 then b = 115 : rem Create Roadblock at X Position 115
|
||||
if v=166 && scroll > 86 then b = 79 : rem Create Roadblock at X Position 79
|
||||
if v=132 && scroll > 86 then b = 95 : rem Create Roadblock at X Position 95
|
||||
if v=176 && scroll > 86 then b = 111 : rem Create Roadblock at X Position 111
|
||||
rem if v=209 && scroll > 86 then b = 120: rem Create Roadblock at X Position 120
|
||||
if v < 10 then u=u+1 : rem cars start out in relatively straight track
|
||||
if v > 245 then u=u-2 : rem as soon as they hit a wall, they will start zig zagging
|
||||
if d>0 then COLUP1=22 : rem level 2 car color is yellow (if d is over 0, car is zigzagging)
|
||||
if t>20 && t<36 then COLUP1=104 : rem level 3 car color is purple
|
||||
if t>35 then COLUP1=68 : rem level 4 car color is red
|
||||
rem
|
||||
rem D is the left/right movement flag, set when the enemy car collides with playfield (side of road)
|
||||
rem
|
||||
if d=1 then u=u+1
|
||||
if d=2 then u=u-1
|
||||
skiplr
|
||||
rem
|
||||
rem ** Player 1 is the Computer Controlled Car
|
||||
rem
|
||||
rem ** Rem D will only equal zero once - when the game first starts.
|
||||
rem ** The next line is there to make sure a car is created when the game first starts.
|
||||
rem
|
||||
rem if d=0 then gosub MakeNewCar3
|
||||
rem
|
||||
rem ** Go to subroutine that randomly picks an enemy car sprite.
|
||||
rem
|
||||
rem gosub CarCreate
|
||||
rem
|
||||
rem ** Z is a flag - when it equals 1, an enemy car has been hit by a missile.
|
||||
rem ** If the cars have scrolled off the screen (scroll>94), this flag is reset to 0.
|
||||
rem ** W is a color flag set in the carhit subroutine
|
||||
rem
|
||||
if scroll > 96 then z=0
|
||||
rem
|
||||
rem ** Z Flag is set to 1 when collision occurs and Reset to Zero when cars scroll off the bottom of the screen.
|
||||
rem
|
||||
if z=0 then NUSIZ1=$01
|
||||
rem
|
||||
rem ** If Left Difficulty is set to A, the human car is twice as wide
|
||||
rem
|
||||
if switchleftb then NUSIZ0=$00 else NUSIZ0=$05
|
||||
rem
|
||||
rem ** W Flag is set during the carhit subroutine
|
||||
rem ** if w is 1 Change Player1 Car Color to Black
|
||||
rem
|
||||
rem if w=1 then COLUP1=0 else COLUP1=52
|
||||
rem
|
||||
rem ** Player1's X and Y Position.
|
||||
rem
|
||||
player1y=scroll : player1x=u
|
||||
skiplrm
|
||||
rem
|
||||
rem ** player0 is the Human car
|
||||
rem
|
||||
if joy0left then goto TurnCar1
|
||||
if joy0right then goto TurnCar2
|
||||
player0:
|
||||
%01111110
|
||||
%01000010
|
||||
%00111100
|
||||
%10100101
|
||||
%11100111
|
||||
%10111101
|
||||
%00111100
|
||||
%10011001
|
||||
%11111111
|
||||
%10011001
|
||||
end
|
||||
turned
|
||||
rem
|
||||
rem ** Set Playfield to scroll down
|
||||
rem
|
||||
if joy0down then skipscrl
|
||||
pfscroll down
|
||||
skipscrl
|
||||
g=g+1
|
||||
if g=2 then pfscroll down:g=0
|
||||
skipsc
|
||||
rem
|
||||
rem ** Set Human Car's Color and X/Y Position
|
||||
rem
|
||||
if c < 11 then COLUP0=128
|
||||
if c > 10 && c < 21 then COLUP0=60
|
||||
if c > 20 && c < 31 then COLUP0=30
|
||||
if c > 30 && c < 41 then COLUP0=64
|
||||
if c > 40 && c < 61 then COLUP0=y
|
||||
player0x=x : player0y=p
|
||||
rem
|
||||
rem ** Create the 2 sides of the Road
|
||||
rem
|
||||
pfpixel 7 1 on : pfpixel 25 1 on
|
||||
pfpixel 7 3 on : pfpixel 25 3 on
|
||||
pfpixel 7 5 on : pfpixel 25 5 on
|
||||
pfpixel 7 7 on : pfpixel 25 7 on
|
||||
pfpixel 7 9 on : pfpixel 25 9 on
|
||||
drawscreen
|
||||
rem
|
||||
rem ** Create Roadblock
|
||||
rem
|
||||
if switchrightb then ballx=0:bally=0:goto skipb
|
||||
ballx=b : bally=scroll+15 : ballheight=2
|
||||
skipb
|
||||
rem
|
||||
rem ** Move Human Car (Player0)
|
||||
rem
|
||||
if joy0left then x=x-1
|
||||
if joy0right then x=x+1
|
||||
if joy0up then scroll=scroll+0.3 : mis=mis+0.5 : score=score+10 : AUDF0=12:AUDC0=14:AUDV0=10
|
||||
if joy0down && scroll >=1 then scroll=scroll-0.3 : mis=mis-0.5 : score=score-10: AUDF0=24:AUDC0=14:AUDV0=10
|
||||
rem
|
||||
rem ** Detect Joystick Button press - fire missile
|
||||
rem
|
||||
if joy0fire && q<1 then AUDF1=8:AUDC1=1:AUDV1=15 : goto playerfires
|
||||
if q>0 then q=q-2 : missile0y=q
|
||||
if q>50 then AUDV1=0
|
||||
rem
|
||||
rem ** Enemy Cars fire back
|
||||
rem
|
||||
if scroll >35 && t<10 then goto fireskip : rem when car is really slow, don't fire twice
|
||||
if scroll >50 && t<36 then goto fireskip : rem in invincible mode, if cars are stuck together at bottom, don't fire again.
|
||||
if scroll >60 && t>35 then goto fireskip : rem let bullets get all the way to the bottom before resetting
|
||||
if h=1 then goto fireskip : rem if powerup is activated, don't fire.
|
||||
if scroll<=1 then mis=1.0 : AUDF1=13:AUDC1=1:AUDV1=9
|
||||
if mis > 18 then AUDV1=0
|
||||
missile1y=mis : missile1x=u : missile1height=6
|
||||
mis=mis+2.0
|
||||
goto pskip
|
||||
fireskip
|
||||
missile1y=0: missile1x=0
|
||||
pskip
|
||||
rem
|
||||
rem ---------------------------
|
||||
rem Collision Routines
|
||||
rem ---------------------------
|
||||
rem
|
||||
rem
|
||||
rem ** Don't allow Human car to drive off the road
|
||||
rem
|
||||
if collision(playfield,player0) && x > 75 then x=x-2
|
||||
if collision(playfield,player0) && x < 75 then x=x+2
|
||||
rem
|
||||
rem ** When Computer Controlled car hits the playfield, bounce the other direction
|
||||
rem
|
||||
if collision(player1,playfield) && u > 100 then d=2
|
||||
if collision(player1,playfield) && u < 80 then d=1
|
||||
rem
|
||||
rem ** When Human Controlled car hits the playfield, slow the car down.
|
||||
rem
|
||||
if collision(player0,playfield) && scroll >=1 then scroll=scroll-0.5 : mis=mis-0.5
|
||||
rem
|
||||
rem ** If Player Car hits Computer Car, increase hitpoint counter. At 60, end Game
|
||||
rem ** C is increased by more than 1 during a collision - Don't know why.
|
||||
rem
|
||||
if collision(player1,player0) && w=1 then gosub addhitpoints
|
||||
if w=1 then goto damageskip
|
||||
if collision(player1,player0) then c=c+1 : if c=60 then r=120: goto thisisit
|
||||
if collision(player1,player0) && scroll >=1 then scroll=scroll-1.5 : mis=mis-1.5
|
||||
rem
|
||||
rem ** If Player missile hits computer car, increase score by 1000
|
||||
rem
|
||||
if collision(player1,missile0) then missile0y=1 : goto carhit
|
||||
rem
|
||||
rem ** If Enemy missile hits player car, add damage to player car
|
||||
rem
|
||||
if collision(player0,missile1) && x > 75 then c=c+1 : x=x-2 : if c=60 then r=160: goto thisisit
|
||||
if collision(player0,missile1) && x < 75 then c=c+1 : x=x+2 : if c=60 then r=160: goto thisisit
|
||||
damageskip
|
||||
rem
|
||||
rem ** If Player car hits roadblock bouce away from it
|
||||
rem
|
||||
if collision(player0,ball) && u > 90 then x=x-6
|
||||
if collision(player0,ball) && u < 90 then x=x+6
|
||||
rem
|
||||
rem ** Increase score by 20 (Just for staying alive)
|
||||
rem
|
||||
score=score+20
|
||||
rem
|
||||
rem ** Loop Back to Main
|
||||
rem
|
||||
goto main
|
||||
rem
|
||||
rem -----------------------
|
||||
rem Fire Missile Subroutine
|
||||
rem -----------------------
|
||||
rem
|
||||
playerfires
|
||||
if !switchleftb then missile0x=x+10 else missile0x=x+4
|
||||
q=80 : missile0y=75
|
||||
missile0height=6
|
||||
rem
|
||||
goto main
|
||||
rem
|
||||
thisisit
|
||||
rem
|
||||
rem -----------------------------
|
||||
rem 'Game Over' Screen Subroutine
|
||||
rem -----------------------------
|
||||
rem
|
||||
rem ** This subroutine is kind of a leftover from a previous revision -
|
||||
rem ** It changes some colors when the game ends.
|
||||
AUDV0=0
|
||||
rem COLUP0=0
|
||||
rem COLUP1=0
|
||||
rem scorecolor=208
|
||||
goto eog
|
||||
end
|
||||
rem -----------------------------------
|
||||
rem Enemy Car hit by Missile Subroutine
|
||||
rem -----------------------------------
|
||||
carhit
|
||||
a=u
|
||||
rem ** Score is increased by 1000 when the missile hits the enemy car
|
||||
rem
|
||||
rem ** I originally set missle0x=60 to hide the missile behind the side of the road
|
||||
rem ** I changed this to missiley=0 to jump it up to the top of the screen when a car is hit.
|
||||
z=1 : score = score + 1000 : missile0y=0 : q=0
|
||||
rem
|
||||
rem ** A = The Enemy Car's X Position + 8
|
||||
rem
|
||||
a=u+8
|
||||
rem
|
||||
rem ** A = X Posiiton of Player1 (+8)
|
||||
rem ** If X Position of Missile0 Hit is less than (X+8) from Player1, set Nusiz1 to 0 to erase car
|
||||
rem
|
||||
if o<1 then goto skipblank
|
||||
if o>0 then goto blankcar
|
||||
skipblank
|
||||
if missile0x < a then NUSIZ1=0 : o=o+1 : u=u+16
|
||||
if missile0x > a then NUSIZ1=0 : o=o+1
|
||||
199 l=rand:if l>215 then 199
|
||||
l=l/8:l=l+1
|
||||
if joy0up then goto main : rem skip powerups if you're travelling full speed
|
||||
if l < 10 && scroll > 1 then gosub powerup : w=1
|
||||
goto main
|
||||
rem
|
||||
rem ----------------------------
|
||||
rem EOG (End of Game) Subroutine
|
||||
rem ----------------------------
|
||||
rem
|
||||
rem ** This routine turns all the "roadway" pixels off -- clearing the playfield for the title screen
|
||||
rem
|
||||
eog
|
||||
if r<1 then r=88:goto eog2
|
||||
r=r-1
|
||||
gosub explode
|
||||
COLUPF=r
|
||||
AUDF0=160-r:AUDC0=1:AUDV0=6
|
||||
drawscreen
|
||||
goto eog
|
||||
eog2
|
||||
COLUP0=68
|
||||
AUDV0=0
|
||||
r=r-1
|
||||
e=e+1
|
||||
if e=2 then pfscroll up:e=0
|
||||
player0y=r
|
||||
player1y=0
|
||||
missile0y=0
|
||||
missile1y=0
|
||||
COLUPF=160
|
||||
drawscreen
|
||||
if r<1 then pfclear:goto init
|
||||
ballx=0:bally=0
|
||||
scroll=0
|
||||
t=0
|
||||
goto eog2
|
||||
CarCreate
|
||||
if scroll<96 then return
|
||||
200 l=rand:if l>215 then 200
|
||||
l=l/8:l=l+1
|
||||
if l>1 && l<6 then gosub MakeNewCar1 : return
|
||||
if l>5 && l<11 then gosub MakeNewCar2 : return
|
||||
if l>10 && l<16 then gosub MakeNewCar3 : return
|
||||
if l>15 && l<21 then gosub MakeNewCar4 : return
|
||||
if l>20 && l<28 then gosub MakeNewCar5 : return
|
||||
return
|
||||
MakeNewCar1
|
||||
player1:
|
||||
%10011001
|
||||
%11111111
|
||||
%10011001
|
||||
%00011000
|
||||
%10111101
|
||||
%11111111
|
||||
%10011001
|
||||
%00111100
|
||||
end
|
||||
return
|
||||
MakeNewCar2
|
||||
player1:
|
||||
%10111101
|
||||
%11111111
|
||||
%10111101
|
||||
%00100100
|
||||
%11100111
|
||||
%10111101
|
||||
%01000010
|
||||
%01111110
|
||||
end
|
||||
return
|
||||
MakeNewCar3
|
||||
player1:
|
||||
%10011001
|
||||
%11111111
|
||||
%10011001
|
||||
%00011000
|
||||
%11011011
|
||||
%11111111
|
||||
%11011011
|
||||
%00100100
|
||||
end
|
||||
return
|
||||
MakeNewCar4
|
||||
player1:
|
||||
%10011001
|
||||
%11111111
|
||||
%10011001
|
||||
%00011000
|
||||
%00011000
|
||||
%10011001
|
||||
%11111111
|
||||
%10011001
|
||||
|
||||
end
|
||||
return
|
||||
MakeNewCar5
|
||||
player1:
|
||||
%10011001
|
||||
%11111111
|
||||
%10011001
|
||||
%00111100
|
||||
%10100101
|
||||
%11111111
|
||||
%10011001
|
||||
%00100100
|
||||
|
||||
end
|
||||
return
|
||||
TurnCar1
|
||||
player0:
|
||||
%01111110
|
||||
%01000010
|
||||
%00111100
|
||||
%10100101
|
||||
%11100111
|
||||
%10111101
|
||||
%00111100
|
||||
%01011001
|
||||
%11111111
|
||||
%10011010
|
||||
end
|
||||
goto turned
|
||||
TurnCar2
|
||||
player0:
|
||||
%01111110
|
||||
%01000010
|
||||
%00111100
|
||||
%10100101
|
||||
%11100111
|
||||
%10111101
|
||||
%00111100
|
||||
%10011010
|
||||
%11111111
|
||||
%01011001
|
||||
end
|
||||
goto turned
|
||||
powerup
|
||||
h=1
|
||||
missile0y=0: q=0
|
||||
player1:
|
||||
%11111111
|
||||
%10000001
|
||||
%10011001
|
||||
%10011001
|
||||
%10111101
|
||||
%10111101
|
||||
%10011001
|
||||
%10011001
|
||||
%10000001
|
||||
%11111111
|
||||
end
|
||||
return
|
||||
addhitpoints
|
||||
if h=1 then c=c-1
|
||||
return
|
||||
rem
|
||||
blankcar
|
||||
u=94
|
||||
player1:
|
||||
%00000000
|
||||
end
|
||||
goto main
|
||||
|
||||
explode
|
||||
COLUPF=70
|
||||
COLUP0=64
|
||||
player0:
|
||||
%01111110
|
||||
%01000010
|
||||
%00111100
|
||||
%10100101
|
||||
%11110111
|
||||
%00111000
|
||||
%10001100
|
||||
%10011001
|
||||
%01101110
|
||||
%00000000
|
||||
end
|
||||
return
|
||||
|
||||
player0:
|
||||
%10000001
|
||||
%00100100
|
||||
%00000000
|
||||
%00011001
|
||||
%10011000
|
||||
%00000000
|
||||
%00100100
|
||||
%10000001
|
||||
end
|
99
src/codemirror/bataribasic.js
Normal file
99
src/codemirror/bataribasic.js
Normal file
@ -0,0 +1,99 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: http://codemirror.net/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
mod(require("../../lib/codemirror"));
|
||||
else if (typeof define == "function" && define.amd) // AMD
|
||||
define(["../../lib/codemirror"], mod);
|
||||
else // Plain browser env
|
||||
mod(CodeMirror);
|
||||
})(function(CodeMirror) {
|
||||
"use strict";
|
||||
|
||||
// bataribasic DASM syntax
|
||||
|
||||
CodeMirror.defineMode('bataribasic', function(_config, parserConfig) {
|
||||
var keywords1, keywords2;
|
||||
|
||||
var directives_list = [
|
||||
'rem','if','else','then','goto',
|
||||
//'end',
|
||||
'includesfile','include','inline','function',
|
||||
'bank','sdata','data',
|
||||
'on','off',
|
||||
'up','down',
|
||||
'const','dim','for','next','gosub',
|
||||
'pfpixel','pfhline','pfclear','pfvline','pfscroll',
|
||||
'drawscreen','asm','pop','set','return','reboot','vblank',
|
||||
'pfcolors','pfheights','playfield','lives',
|
||||
'player0','player1','player2','player3','player4','player5',
|
||||
'player0color','player1color',
|
||||
'let',
|
||||
"switchreset","switchselect","switchleftb","switchrightb","switchbw",
|
||||
"joy0up","joy0down","joy0left","joy0right","joy1up","joy1down","joy1left","joy1right","joy0fire","joy1fire",
|
||||
"size","2k","8k","8kSC","16k","16kSC","32k","32kSC","4k",
|
||||
"thisbank","otherbank","flip",
|
||||
"collision","missile0","missile1","ball",
|
||||
"stackpull","rand","score","scorec","Areg",
|
||||
"smartbranching","romsize","optimization","speed","size",
|
||||
"noinlinedata","inlinerand","none","kernal","kernel_options",
|
||||
"readpaddle","player1colors","playercolors","no_blank_lines",
|
||||
"kernel","multisprite","multisprite_no_include","debug",
|
||||
"cyclescore","cycles","legacy"
|
||||
];
|
||||
var directives = {};
|
||||
for (var s of directives_list)
|
||||
directives[s] = 'keyword';
|
||||
|
||||
var numbers = /^([$][0-9a-f]+|[%][01]+|[0-9.]+)\b/i;
|
||||
|
||||
return {
|
||||
startState: function() {
|
||||
return {
|
||||
context: 0
|
||||
};
|
||||
},
|
||||
token: function(stream, state) {
|
||||
if (!stream.column()) {
|
||||
state.context = 0;
|
||||
if (stream.eatWhile(/[\w.]/)) {
|
||||
if (stream.current().toLowerCase() == 'end')
|
||||
return 'keyword';
|
||||
else
|
||||
return 'tag';
|
||||
}
|
||||
}
|
||||
if (stream.eatSpace())
|
||||
return null;
|
||||
|
||||
var w;
|
||||
if (stream.eatWhile(/\w/)) {
|
||||
w = stream.current();
|
||||
var cur = w.toLowerCase();
|
||||
var style = directives[cur];
|
||||
if (cur == 'rem') {
|
||||
stream.eatWhile(/./);
|
||||
return 'comment';
|
||||
}
|
||||
if (style)
|
||||
return style;
|
||||
|
||||
if (state.context == 4 && numbers.test(w)) {
|
||||
return 'number';
|
||||
} else if (stream.match(numbers)) {
|
||||
return 'number';
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
} else {
|
||||
stream.next();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
};
|
||||
});
|
||||
|
||||
CodeMirror.defineMIME("text/x-bataribasic", "bataribasic");
|
||||
|
||||
});
|
@ -44,7 +44,9 @@ const VCS_PRESETS = [
|
||||
{id:'bb/helloworld.bas', name:'Hello World (batariBASIC)'},
|
||||
{id:'bb/draw.bas', name:'Playfield Draw (batariBASIC)'},
|
||||
{id:'bb/sample.bas', name:'Sprite Test (batariBASIC)'},
|
||||
{id:'bb/FIFA1977.bas', name:'2P Soccer Game (batariBASIC)'},
|
||||
{id:'bb/duck_chase.bas', name:'Duck Chase (batariBASIC)'},
|
||||
{id:'bb/rblast106.bas', name:'Road Blasters (batariBASIC)'},
|
||||
];
|
||||
|
||||
Javatari.AUTO_START = false;
|
||||
|
11
src/ui.ts
11
src/ui.ts
@ -47,6 +47,7 @@ var TOOL_TO_SOURCE_STYLE = {
|
||||
'verilator': 'verilog',
|
||||
'jsasm': 'z80',
|
||||
'zmac': 'z80',
|
||||
'bataribasic': 'bataribasic',
|
||||
}
|
||||
|
||||
function newWorker() : Worker {
|
||||
@ -873,6 +874,11 @@ function _toggleRecording() {
|
||||
}
|
||||
}
|
||||
|
||||
function _lookupHelp() {
|
||||
// TODO
|
||||
window.open("help/bataribasic/manual.html", "_help");
|
||||
}
|
||||
|
||||
function setupDebugControls(){
|
||||
|
||||
$("#dbg_reset").click(resetAndDebug);
|
||||
@ -941,6 +947,9 @@ function setupDebugControls(){
|
||||
$("#dbg_slowest").click(_slowestFrameRate);
|
||||
$("#dbg_fastest").click(_fastestFrameRate);
|
||||
}
|
||||
if (platform.getToolForFilename(main_file_id) == 'bataribasic') {
|
||||
$("#dbg_help").show().click(_lookupHelp);
|
||||
}
|
||||
updateDebugWindows();
|
||||
// setup replay slider
|
||||
if (platform.setRecorder && platform.advance) {
|
||||
@ -1133,9 +1142,9 @@ function startPlatform() {
|
||||
}
|
||||
// start platform and load file
|
||||
platform.start();
|
||||
setupDebugControls();
|
||||
initProject();
|
||||
loadProject(qs['file']);
|
||||
setupDebugControls();
|
||||
updateSelector();
|
||||
showBookLink();
|
||||
addPageFocusHandlers();
|
||||
|
@ -670,8 +670,15 @@ function assembleDASM(step:BuildStep) {
|
||||
listings[fn] = lst; // TODO: foo.asm.lst
|
||||
}
|
||||
}
|
||||
var aout = FS.readFile(binpath);
|
||||
var asym = FS.readFile(sympath, {'encoding':'utf8'});
|
||||
var aout, asym;
|
||||
aout = FS.readFile(binpath);
|
||||
try {
|
||||
asym = FS.readFile(sympath, {'encoding':'utf8'});
|
||||
} catch (e) {
|
||||
console.log(e);
|
||||
errors.push({line:0,msg:"No symbol table generated, maybe segment overflow?"});
|
||||
return {errors:errors}
|
||||
}
|
||||
putWorkFile(binpath, aout);
|
||||
putWorkFile(lstpath, alst);
|
||||
putWorkFile(sympath, asym);
|
||||
@ -1541,6 +1548,7 @@ function compileBatariBasic(step:BuildStep) {
|
||||
print:addasmout_fn,
|
||||
printErr:match_fn,
|
||||
noFSInit:true,
|
||||
TOTAL_MEMORY:64*1024*1024,
|
||||
});
|
||||
var FS = BB['FS'];
|
||||
populateFiles(step, FS);
|
||||
|
Loading…
x
Reference in New Issue
Block a user