Commit Diff


commit - b1c4e463441de909c2ef7022d47b3783eb025b53
commit + f83ac55a16dba9af0da8b587dcef0788671b93b3
blob - 4c078cb41d150a7936a424c36a0596041c1eec95
blob + b10cf3c98b03eae12a2e0e8b2d69456e0e69280e
Binary files BASASM,PRG and BASASM,PRG differ
blob - b5addadce71b1c4e3a06e6560b15404473040e78
blob + fa0095e20e57e8263d258547fa528098af04967a
--- BASASM.lst
+++ BASASM.lst
@@ -1,5 +1,5 @@
 0 REM BASASM - A SIMPLE ASSEMBLER MADE
-1 REM V.30     IN BASIC.  PESCO 2026
+1 REM V.31     IN BASIC.  PESCO 2026
 2 REM  10 VARIABLES    700 *SAVE ML PRG
 3 REM 100 LOAD OPCODES 720 *PRINT SEQ F
 4 REM 130 SUBROUTINES  740 *MEMSTAT
@@ -235,6 +235,7 @@
 410 PRINT P; TAB(12); M$; " ";
 420 IF M$ = ".DW" THEN 550
 430 IF M$ = ".DB" THEN 530
+435 IF M$ = ".BIT" THEN 600
 440 IF M$ = ".DS" THEN 570
 441 IF M$ = ".DSZ" THEN 570
 445 IF M$ = ".DZ" THEN 580
@@ -278,7 +279,7 @@
 567 REM
 568 REM .DS  - OUTPUT STRING
 569 REM .DSZ - OUTPUT ZERO-TERM. STR.
-570 READ A$
+570 PRINT CHR$(20);: READ A$
 571 IF A$ = "" THEN 575
 572 X = ASC(A$): PRINT STR$(X);
 573 POKE P,X: P=P+1: A$ = MID$(A$,2)
@@ -299,6 +300,19 @@
 591 PRINT MID$(STR$(A), 2)
 592 IF P <= A THEN 499: REM POS VALID
 593 PRINT "LIMIT VIOLATED": GOTO 999
+598 REM
+599 REM .BIT - OUTPUT BIT PATTERN
+600 READ A$: A$ = A$ + "0000000"
+601 A=0: N=0: L%=1: FOR I=1 TO LEN(A$)
+602 C$ = MID$(A$, I, 1)
+603 IF C$ = " " THEN 610
+604 A = A * 2
+605 IF C$ = "0" OR C$ = "." THEN 607
+606 A = A + 1
+607 N = N + 1
+608 IF N AND 7 THEN 610
+609 GOSUB 190: A=0:  REM WRITE BYTE
+610 NEXT: PRINT: GOTO 499
 697 REM
 698 REM *RUN 700* WRITE MEM TO PRG FILE
 699 REM
blob - c57019b0d4462c4e715f7983beb1c023857f6fb7
blob + 75009c2f6917e925d0e6660632707a70bf71966f
Binary files MANUAL,PRG and MANUAL,PRG differ
blob - cbfefef30516f56e72238dda1a4fa849d12a93c0
blob + dd421fc6587adefdbc865af1e9eef935f9ad8c86
--- MANUAL.lst
+++ MANUAL.lst
@@ -1,4 +1,4 @@
-1 REM BASASM README.
+1 REM BASASM MANUAL.
 2 REM
 9 REM SIMPLE TEXT VIEWER. PESCO 2026
 10 P=0: RESTORE: L$ = ""
@@ -21,7 +21,7 @@
 82 PRINT "                    ";
 83 PRINT "                   {91}{91}{91}"
 89 END
-1000 DATA "               {12} BASASM {92}           V.30
+1000 DATA "               {12} BASASM {92}           V.31
 1010 DATA "               {12} MANUAL {92}
 1020 DATA
 1030 DATA
@@ -74,20 +74,26 @@
 1280 DATA "AND LABELS,  {12}BASASM{92}  RECOGNIZES A  FEW
 1290 DATA "DIRECTIVES:
 1300 DATA
-1310 DATA "  {12}.DB, VAL...{92} INSERT BYTE VALUE(S)
-1320 DATA "  {12}.DW, VAL...{92} INSERT 16-BIT WORD(S)
-1330 DATA "  {12}.DZ, N{92}      INSERT N ZERO BYTES
-1340 DATA "  {12}.DS, STR{92}    INSERT STRING
-1350 DATA "  {12}.DSZ, STR{92}   INSERT ZERO-TERM. STRING
-1360 DATA "  {12}.LIM, POS{92}   ASSERT OUTPUT LIMIT
-1361 DATA "  {12}.=, POS{92}     MODIFY OUTPUT POSITION
-1365 DATA "  {12}.END{92}        SIGNAL END OF INPUT
+1310 DATA"  {12}.DB, VAL...{92} INSERT BYTE VALUE(S)
+1320 DATA"  {12}.DW, VAL...{92} INSERT 16-BIT WORD(S)
+1330 DATA"  {12}.DZ, N{92}      INSERT N ZERO BYTES
+1340 DATA"  {12}.DS, STR{92}    INSERT STRING
+1350 DATA"  {12}.DSZ, STR{92}   INSERT ZERO-TERM. STRING
+1355 DATA"  {12}.BIT, .X...{92} INSERT BIT PATTERN
+1360 DATA"  {12}.LIM, POS{92}   ASSERT OUTPUT LIMIT
+1361 DATA"  {12}.=, POS{92}     MODIFY OUTPUT POSITION
+1365 DATA"  {12}.END{92}        SIGNAL END OF INPUT
 1370 DATA
-1375 DATA "THE {12}.DB{92} AND {12}.DW{92} DIRECTIVES ACCEPT MUL-
-1376 DATA TIPLE VALUES. THESE MUST BE GIVEN IN A
-1377 DATA "SINGLE STRING ({12}DATA{92} ELEMENT),  SEPARA-
-1378 DATA TED BY SPACES.
-1379 DATA
+1371 DATA"THE {12}.DB{92} AND {12}.DW{92} DIRECTIVES ACCEPT MUL-
+1372 DATA"TIPLE VALUES. THESE MUST BE GIVEN IN A
+1373 DATA"SINGLE STRING ({12}DATA{92} ELEMENT),  SEPARA-
+1374 DATA"TED BY SPACES.  THE {12}.BIT{92} DIRECTIVE EX-
+1375 DATA"PECTS A  STRING WHEREIN  EACH ZERO (0)
+1376 DATA"OR FULL STOP (.) REPRESENTS A ZERO BIT
+1377 DATA"AND ANY OTHER A ONE,  IGNORING SPACES.
+1378 DATA"BYTES ARE FORMED FROM THE PATTERN MSB-
+1379 DATA"FIRST, THE LAST ZERO-PADDED IF NEEDED.
+1380 DATA
 1390 DATA "WHEN {12}RUN{92},  {12}BASASM{92} ASSEMBLES THE USER'S
 1391 DATA "PROGRAM, PRINTING IT TO THE SCREEN FOR
 1395 DATA "INFORMATION WHILE ALSO {12}POKE{92}ING IT INTO
blob - ddd6c6830a640bbb46770dc49789e8f178e507fd
blob + 5caf71a19651140fe7380f86d70165238e57b0c0
--- README
+++ README
@@ -35,6 +35,7 @@
         -  High-byte and successor (+1) operators.
         -  Directives to output arbitrary bytes, words, strings.
         -  Directives to alter and limit the output position.
+        -  String representation for bit pattern output (...XX...).
 
      About 70 more lines implement subprograms to save PRG files, issue
      drive commands, dump memory, and a few others. The opcode table
@@ -64,7 +65,7 @@
            MKALLTOK     write a PRG file that contains every possible BASIC
                         token (used for listprg)
            DISKCOPY     duplicate a disk block by block (incredibly slow)
-	   MKOPCODES	generate OPCODES file
+           MKOPCODES	generate OPCODES file
 
      Notes on encoding: Several (printable) characters in the Commodore
      character set differ from ASCII - arrows, for instance, in place of
blob - 24fdefd27ab385913c8aa4ecbfb0a4ff424b89d6
blob + 8818efbbfa7f818a9ca941f4670ae255bd8b750f
Binary files TEST.B,PRG and TEST.B,PRG differ
blob - dd61cc7a33a380716b0c85dfcd0559e558a787a4
blob + f9558aa5551d6eccc6588d233d2f6e4cc8c241f7
--- TEST.B.lst
+++ TEST.B.lst
@@ -6,6 +6,7 @@
 1005 DATA  PHA
 1006 DATA  STA, 2048:  REM OK, FULL RNG
 1007 REM   STAZ, 2048: REM ERR, >255
+1008 DATA .BIT, ...XX.. ... . 01
 1010 DATA  BMIR, 'L1, RTI
 1014 DATA ''L1
 1015 DATA  BITZ, 123