commit - b1c4e463441de909c2ef7022d47b3783eb025b53
commit + f83ac55a16dba9af0da8b587dcef0788671b93b3
blob - 4c078cb41d150a7936a424c36a0596041c1eec95
blob + b10cf3c98b03eae12a2e0e8b2d69456e0e69280e
Binary files BASASM,PRG and BASASM,PRG differ
blob - b5addadce71b1c4e3a06e6560b15404473040e78
blob + fa0095e20e57e8263d258547fa528098af04967a
--- BASASM.lst
+++ BASASM.lst
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
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
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)
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 REM BASASM README.
+1 REM BASASM MANUAL.
2 REM
9 REM SIMPLE TEXT VIEWER. PESCO 2026
10 P=0: RESTORE: L$ = ""
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
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
- 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
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
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