ZP_SPNT = 0x49 # Stack pointer save
ZP_RNDL = 0x4E # Keybounce random number low
ZP_RNDH = 0x4F # Keybounce random number high
+ZP_LOMEM = 0x69 # current lomem (word variable)
+ZP_HIMEM = 0x73 # current himem (word variable)
VP_REENTER = 0x03D0 # Re-enter DOS
VP_RECONNECT = 0x03EA # Reconnect DOS I/O hooks
VP_BRKV = 0x03F0 # Break vector address
poll_in = select.poll()
poll_in.register(fd_in, select.POLLIN)
mem = {
+ # following values were taken from a 48K Apple after normal boot and NEW
ZP_WNDLFT: 0,
ZP_WNDWTH: 40,
ZP_WNDTOP: 0,
ZP_WNDBTM: 24,
ZP_CH: 0,
- ZP_CV: 0,
+ ZP_CV: 23, # just a likely value (depends on previous terminal activity)
+ ZP_LOMEM: 4,
+ ZP_LOMEM + 1: 8,
+ ZP_HIMEM: 0,
+ ZP_HIMEM + 1: 150,
TONE_PERIOD: 0,
TONE_DUR: 0,
NICK_DURL: 0,
assert False
def himem(addr):
- pass
+ addr &= 0xffff
+ mem[ZP_HIMEM] = addr & 0xff
+ mem[ZP_HIMEM + 1] = addr >> 8
def lomem(addr):
- pass
+ addr &= 0xffff
+ mem[ZP_LOMEM] = addr & 0xff
+ mem[ZP_LOMEM + 1] = addr >> 8
def peek(addr):
addr &= 0xffff
--- lemonade.bas 2022-05-20 00:21:16.340356477 +1000
-+++ lemonade_patched.bas 2022-05-21 18:30:34.828099790 +1000
-@@ -1,5 +1,8 @@
++++ lemonade_patched.bas 2022-05-22 16:49:59.180075298 +1000
+@@ -1,5 +1,3 @@
-1LOMEM:14080
-5GOSUB10000:GOSUB11000:GOSUB16000:GOTO135
-+1HIMEM:38272
-+2PRINT CHR$(4);"BLOAD LEMONADE TONE NICK.OBJ":RE=768:TN=776:DL=777:DH=779:FL=781:FH=788
-+3PRINT CHR$(4);"BLOAD LEMONADE FLASH PATCHED.OBJ":FE=38278:FI=38383
-+4IN#0:PR#0
-+5GOSUB11000
10REM <<< LEMONADE STAND >>>
15REM
20REM FROM AN ORIGINAL PROGRAM
-@@ -102,11 +105,11 @@
+@@ -10,6 +8,12 @@
+ 70REM MODIFIED FOR THE APPLE
+ 80REM FEBRUARY, 1979
+ 90REM BY CHARLIE KELLNER
++100IFPEEK(116)<150THENPRINT"48K REQUIRED":END
++105HIMEM:38272
++110PRINT CHR$(4);"BLOAD LEMONADE TONE NICK.OBJ":RE=768:TN=776:DL=777:DH=779:FL=781:FH=788
++115PRINT CHR$(4);"BLOAD LEMONADE FLASH PATCHED.OBJ":FE=38278:FI=38383
++120IN#0:PR#0
++125GOSUB11000
+ 135DIMA(30),L(30),H(30),B(30),S(30),P(30),G(30)
+ 150P9=10
+ 160S3=.15
+@@ -102,11 +106,11 @@
1120PRINT:IFSC=10ANDRND(1)<.25THEN2300
1130PRINT"$$ LEMONSVILLE DAILY FINANCIAL REPORT $$"
1135PRINT
1180REM CALCULATE PROFITS
1182IFR2=2THEN2290
1183IFR3=3THEN2350
-@@ -201,50 +204,44 @@
+@@ -201,50 +205,44 @@
5060GOSUB18000
5070REM
5090HOME:RETURN
11730GOTO11710
12000REM TITLE PAGE
12100TEXT:HOME:PRINTCHR$(7);
-@@ -318,7 +315,7 @@
+@@ -318,7 +316,7 @@
15151IFSC=2ORSC=7THEN15160
15152IFSC=10THENCOLOR=15
15157IFSC=5THENCOLOR=0
15160IFSC=7THENCOLOR=9
15162HLIN3,5AT1:HLIN2,6AT2:FORI=3TO6:HLIN1,7ATI:NEXT:HLIN2,6AT7:HLIN3,5AT8
15170VTAB22:HTAB8:PRINT" LEMONSVILLE WEATHER REPORT ":PRINT
-@@ -327,54 +324,74 @@
+@@ -327,54 +325,74 @@
15182IFSC=7THENHTAB15:PRINT" HOT AND DRY ";
15184IFSC=10THENHTAB17:PRINT" CLOUDY ";
15186IFSC=5THENHTAB14:PRINT" THUNDERSTORMS! ";:GOSUB17000