line += ch
def htab(x):
- write(f'\x1b[{x:d}G')
- low_mem[ZP_CH] = x - 1
+ low_mem[ZP_CH] = (x - 1) & 0xff
+ write(ch())
def vtab(y):
- write(f'\x1b[{y:d}d')
- low_mem[ZP_CV] = y - 1
+ low_mem[ZP_CV] = (y - 1) & 0xff
+ write(cv())
def cleol():
write('\x1b[K')
addr = bascalc(i)
low_mem[addr:addr + 40] = [0xa0] * 40
+def ch():
+ return f'\x1b[{low_mem[ZP_CH] + 1:d}G'
+
+def cv():
+ return f'\x1b[{low_mem[ZP_CV] + 1:d}d'
+
def invflg():
return (
'\x1b[0;7;5m'
if y < 24:
x = (addr & 0x7f) % 40
gr_update(x, y, x + 1, y + 1)
+ elif addr == ZP_CH:
+ write(ch())
+ elif addr == ZP_CV:
+ write(cv())
elif addr == ZP_WNDTOP or addr == ZP_WNDBTM:
# save cursor, set scrolling region, restore cursor
write(
f'\x1b[s\x1b[{low_mem[ZP_WNDTOP] + 1:d};{low_mem[ZP_WNDBTM]:d}r\x1b[u'
)
+ elif addr == ZP_INVFLG:
+ write(invflg())
else:
mem[addr] = data
while len(sys.argv) >= 2:
if sys.argv[1][:7] == '--beep-style=':
apple_io.beep_style = beep_styles[sys.arg[1][7:]]
+ elif sys.argv[1][:24] == '--inter-statement-delay=':
+ t_def.inter_statement_delay = float(sys.argv[1][24:])
elif sys.argv[1][:11] == '--joystick=':
apple_joystick.input_path = sys.argv[1][11:]
else:
break
del sys.argv[1]
if len(sys.argv) < 2:
- print(f'usage: {sys.argv[0]:s} [--beep-style=alsa|vt100] [--joystick=/dev/input/eventNN] program.tok')
+ print(f'usage: {sys.argv[0]:s} [--beep-style=alsa|vt100] [--inter-statement-delay=secs] [--joystick=/dev/input/eventNN] program.tok')
sys.exit(EXIT_FAILURE)
program_bas = sys.argv[1]
# globals
random.seed(time.time())
last_random = random.random()
+ inter_statement_delay = 0.
%}
%%
statement = line.children[self.j]
self.j += 1
statement.execute(self)
+ if inter_statement_delay != 0:
+ time.sleep(inter_statement_delay)
else:
self.i += 1
self.j = 1
10 HOME
20 HTAB 10
-30 PRINT "MY PROGRAM"
+30 INVERSE:PRINT "MY PROGRAM":NORMAL
+35 FOR I=0 TO 31:POKE 1280+I,I*8:NEXT
40 VTAB 5
50 PRINT CHR$(7)"TYPE SOMETHING: ";
60 GET I$