Implement DEF SEG/PEEK/POKE, GET/PUT sprites, fix PRINT USING, update to v0.11.0
This commit is contained in:
@@ -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"
|
||||
@@ -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"
|
||||
@@ -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"
|
||||
Reference in New Issue
Block a user