Implement DEF SEG/PEEK/POKE, GET/PUT sprites, fix PRINT USING, update to v0.11.0

This commit is contained in:
Eremey Valetov
2026-03-01 13:07:28 -05:00
parent e7f35c21ff
commit 0743757029
22 changed files with 670 additions and 40 deletions
+27
View File
@@ -0,0 +1,27 @@
10 REM Test GET/PUT graphics sprites
20 SCREEN 1
30 DIM SP%(50)
40 REM Draw a small box
50 LINE (10,10)-(20,20), 1, BF
60 REM Capture it
70 GET (10,10)-(20,20), SP%
80 REM Check header (width in bits, height)
90 PRINT "WIDTH BITS="; SP%(0)
100 PRINT "HEIGHT="; SP%(1)
110 REM Clear screen and PUT it elsewhere with XOR
120 CLS
130 PUT (50,50), SP%, XOR
140 REM Check a pixel was placed
150 IF POINT(55,55) > 0 THEN PRINT "XOR PUT OK" ELSE PRINT "XOR PUT FAIL"
160 REM PUT again with XOR to erase
170 PUT (50,50), SP%, XOR
180 IF POINT(55,55) = 0 THEN PRINT "XOR ERASE OK" ELSE PRINT "XOR ERASE FAIL"
190 REM Test PSET mode
200 PUT (50,50), SP%, PSET
210 IF POINT(55,55) > 0 THEN PRINT "PSET PUT OK" ELSE PRINT "PSET PUT FAIL"
220 REM Test OR mode
230 CLS
240 PUT (50,50), SP%, OR
250 IF POINT(55,55) > 0 THEN PRINT "OR PUT OK" ELSE PRINT "OR PUT FAIL"
260 SCREEN 0
270 PRINT "DONE"
+27
View File
@@ -0,0 +1,27 @@
10 REM Test DEF SEG / PEEK / POKE
20 REM --- Default segment: PEEK returns 0 ---
30 PRINT "PEEK(0)="; PEEK(0)
40 REM --- BIOS data area: video mode ---
50 DEF SEG = &H40
60 PRINT "VIDEO MODE="; PEEK(&H49)
70 REM --- BIOS data area: columns ---
80 PRINT "COLUMNS="; PEEK(&H4A)
90 REM --- BIOS data area: timer ticks (low byte, just check it runs) ---
100 T! = PEEK(&H6C)
110 IF T! >= 0 THEN PRINT "TIMER TICKS OK" ELSE PRINT "TIMER TICKS FAIL"
120 REM --- CGA text buffer: POKE a character (no TUI in piped mode) ---
130 DEF SEG = &HB800
140 POKE 0, 65
150 REM In piped mode TUI is not active, so PEEK returns 0
160 P = PEEK(0)
170 PRINT "B800 PEEK="; P
180 REM --- DEF SEG reset ---
190 DEF SEG
200 PRINT "RESET PEEK="; PEEK(0)
210 REM --- Boundary values ---
220 DEF SEG = 0
230 PRINT "SEG 0 PEEK="; PEEK(0)
240 DEF SEG = 65535
250 PRINT "SEG FFFF PEEK="; PEEK(0)
260 REM --- Done ---
270 PRINT "DONE"
+32
View File
@@ -0,0 +1,32 @@
10 REM PRINT USING edge cases
20 REM --- Asterisk fill ---
30 PRINT USING "**###.##"; 1.5
40 PRINT USING "**###.##"; -1.5
50 PRINT USING "**###.##"; 12345.67
60 REM --- Asterisk fill + dollar ---
70 PRINT USING "**$##.##"; 1.5
80 PRINT USING "**$##.##"; -1.5
90 REM --- Dollar sign ---
100 PRINT USING "$$###.##"; 1.5
110 PRINT USING "$$###.##"; -1.5
120 REM --- Thousands separator ---
130 PRINT USING "###,###.##"; 1234.56
140 PRINT USING "###,###.##"; 123456.78
150 PRINT USING "$$#,###.##"; 1234.56
160 REM --- Scientific notation ---
170 PRINT USING "#.##^^^^"; 1234.5
180 PRINT USING "#.##^^^^"; 0.0001
190 PRINT USING "#.##^^^^"; -0.0001
200 PRINT USING "#.##^^^^"; 0
210 REM --- Trailing signs ---
220 PRINT USING "###.##-"; 123.45
230 PRINT USING "###.##-"; -123.45
240 PRINT USING "###.##+"; 123.45
250 PRINT USING "###.##+"; -123.45
260 PRINT USING "+###.##"; 123.45
270 PRINT USING "+###.##"; -123.45
280 REM --- Overflow ---
290 PRINT USING "##.##"; 123.45
300 REM --- Zero ---
310 PRINT USING "###.##"; 0
320 PRINT "DONE"