Commit Diff


commit - b65cbaaa13e26cac781afe68528f103b1b389661
commit + eab8f179442969cf9097eec353e4e951e33e9d14
blob - 65e49d6b9cfc2cf28b98b4810ad613bbd5228aab
blob + fdd229461b56abd07b01db3eb09affb67d8fb986
Binary files BASASM,PRG and BASASM,PRG differ
blob - fa1faca8e3ff37ce869f28fe0df7d3407ad9f173
blob + 083aeb415b1cab0961df4053dbae5a31fdede2c1
--- BASASM.lst
+++ BASASM.lst
@@ -1,5 +1,5 @@
 0 REM BASASM - A SIMPLE ASSEMBLER MADE
-1 REM V.24     IN BASIC.  PESCO 2026
+1 REM V.25     IN BASIC.  PESCO 2026
 2 REM  10 VARIABLES    700 *SAVE TO PRG
 3 REM 100 LOAD OPCODES 720 *PRINT SEQ F
 4 REM 130 SUBROUTINES  740 *MEMSTAT
@@ -84,9 +84,7 @@
 188 REM
 189 REM SUB: WRITE OPERAND
 190 IF L% < 1 THEN RETURN
-191 IF M$ <> "R" THEN 194
-192 A = A - P - 1:  REM RELATIVE ADDR
-193 IF A < -128 OR A > 127 THEN END
+191 GOSUB 360:  REM VALIDATE/PREP A
 194 FOR J = 0 TO L% - 1
 195 R=A: A=INT(A/256): R=R-A*256 :REM/Q
 196 POKE P + J, R
@@ -150,7 +148,17 @@
 341 PRINT "P =";PP; TAB(12); "Q =";PQ;
 342 PRINT TAB(24); "Q-P ="; PQ-PP
 350 END
-368 REM
+358 REM
+359 REM SUB: VALIDATE & PREPARE OPERAND
+360 IF M$ <> "R" THEN 364
+361 A = A - P - 1:  REM RELATIVE ADDR
+362 IF A < -128 OR A > 127 THEN 367
+363 RETURN
+364 IF M$ <> "Z" THEN 366
+365 IF A < 0 OR A > 255 THEN 367
+366 RETURN
+367 PRINT:PRINT "OPERAND OUT OF RANGE"
+368 END
 369 REM SUB: PATCH FWD SYMBOL REFS
 370 IF PA% = 0 THEN RETURN
 371 FOR I = 0 TO PA% - 1
@@ -261,7 +269,7 @@
 718 REM *RUN 720* PRINT SEQ FILE
 719 REM
 720 GOSUB 760: REM GET D/F
-728 OPEN 1,D,2,F$ + ",SEQ,R"
+728 OPEN 1,D,2,F$ + ",SEQ,)"
 729 IF ST THEN CLOSE 1: END
 732 GET# 1, A$: PRINT A$;: GOTO 729
 737 REM