tlr wrote:You should be able to cut the JMP $C474
I just tried it out. Sadly, it doesn't quite work. Here's the remainder of SYS, when the return-address of the SYS call is preserved with JMP $C659:
Code: Select all
.E141 6C 14 00 JMP ($0014) ; call user routine with $E144 - 1 on stack
.E144 08 PHP ; <- re-entry point
.E145 8D 0C 03 STA $030C
.E148 8E 0D 03 STX $030D
.E14B 8C 0E 03 STY $030E
.E14E 68 PLA
.E14F 8D 0F 03 STA $030F
.E152 60 RTS
Normally, the RTS at $E152 would return to the end of the interpreter loop at $C7EA, which in turn executes JMP $C7AE to execute the next BASIC statement. Alas,
that RTS
has its return address being purged ...
Nevertheless, your other ideas avoid the problematic CHR$(34) code, which should result in a much shorter PRINT statement.
tokra wrote:I remember back in 1985/86 I found some OLD-command in a magazine which I found so useful I wrote it in my little notebook which I still have. This read:
Code: Select all
POKE BasicStart+2,1:SYS50483:POKE46,PEEK(35):POKE45,PEEK(781)+2:CLR
I even memorized this back then. Looks pretty close to what tlr wrote...
... and when it gives an ?ILLEGAL QUANTITY error, one can use this one instead:
Code: Select all
POKE BasicStart+2,1:SYS50483:POKE46,PEEK(35)+1:POKE45,PEEK(781)-254:CLR
Anyway, here's the updated version of the screen code version, which also doesn't need any abbreviations to fit on one logical line:
Code: Select all
PRINT"{CLR,RVS ON}){RVS OFF}A{RVS ON}(Q{RVS OFF}+{SPACE}3{RVS ON,SHIFT-E}J
{RVS OFF,SHIFT-POUND}B{RVS ON}E{RVS OFF}-{RVS ON}%{RVS OFF}#{SPACE,SHIFT-U,
RVS ON,SHIFT-F,RVS OFF,SHIFT-L,C=-H,RVS ON,SHIFT-D}":SYS256*PEEK(648)