commit f83ac55a16dba9af0da8b587dcef0788671b93b3 from: Sven M. Hallberg date: Thu Jun 11 19:13:10 2026 UTC BASASM.31 - .BIT operator 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