Binary SAVE/LOAD: SAVE now writes tokenized binary by default (0xFF header format), matching original GW-BASIC behavior. SAVE "file",A for ASCII. LOAD auto-detects binary vs ASCII from the first byte. Command-line file loading also auto-detects, so binary .BAS files just work. INKEY$ extended keys: arrow keys, Home/End/PgUp/PgDn, Insert/Delete, and F1-F10 now return the correct CHR$(0) + scan_code two-byte sequences per the IBM PC convention. Refactored event trap key parsing to use tui_read_key() instead of duplicating escape sequence parsing. Golden-file regression tests: generated .expected output files for 55 of 58 test programs (3 timing-dependent tests excluded). The test runner now reports compat match status alongside pass/fail. Classic programs: added Hamurabi, Lunar Lander, Gunner, and Diamond from David Ahl's BASIC Computer Games (1978) in tests/classic/ for manual compatibility testing. Docs updated with compiler roadmap item and hardware I/O simulator plan.
28 lines
562 B
QBasic
28 lines
562 B
QBasic
1 PRINT TAB(33);"DIAMOND"
|
|
2 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY"
|
|
3 PRINT:PRINT:PRINT
|
|
4 PRINT "FOR A PRETTY DIAMOND PATTERN,"
|
|
5 INPUT "TYPE IN AN ODD NUMBER BETWEEN 5 AND 21";R:PRINT
|
|
6 Q=INT(60/R):A$="CC"
|
|
8 FOR L=1 TO Q
|
|
10 X=1:Y=R:Z=2
|
|
20 FOR N=X TO Y STEP Z
|
|
25 PRINT TAB((R-N)/2);
|
|
28 FOR M=1 TO Q
|
|
29 C=1
|
|
30 FOR A=1 TO N
|
|
32 IF C>LEN(A$) THEN PRINT "!";:GOTO 50
|
|
34 PRINT MID$(A$,C,1);
|
|
36 C=C+1
|
|
50 NEXT A
|
|
53 IF M=Q THEN 60
|
|
55 PRINT TAB(R*M+(R-N)/2);
|
|
56 NEXT M
|
|
60 PRINT
|
|
70 NEXT N
|
|
83 IF X<>1 THEN 95
|
|
85 X=R-2:Y=1:Z=-2
|
|
90 GOTO 20
|
|
95 NEXT L
|
|
99 END
|