Undocumented 8.1 commands: Difference between revisions
No edit summary |
No edit summary |
||
| Line 12: | Line 12: | ||
|- | |- | ||
! Topic | ! Topic | ||
! | ! Notes | ||
|- | |- | ||
| <strong>Simple Addition</strong> | | <strong>Simple Addition</strong> | ||
| Line 25: | Line 25: | ||
|- | |- | ||
! Topic | ! Topic | ||
! | ! Notes | ||
|- | |- | ||
| <strong>Branch Shortcuts </strong> | |style="vertical-align: top;" | <strong>Branch Shortcuts </strong> | ||
| <strong>√bbs.init</strong> | | <strong>√bbs.init</strong> | ||
{| class="wikitable | {| class="wikitable | ||
| Line 62: | Line 62: | ||
|- | |- | ||
! Topic | ! Topic | ||
! | ! Notes | ||
|- | |- | ||
| <strong> | | style="vertical-align: top;" | <strong>"THEN" with IF </strong> | ||
| <strong>All Main Overlays</strong> | | <strong>All Main Overlays</strong> | ||
{| class="wikitable | {| class="wikitable | ||
| Line 81: | Line 81: | ||
|- | |- | ||
! Topic | ! Topic | ||
! | ! Notes | ||
|- | |- | ||
| <strong>.8</strong> | | style="vertical-align: top;" |<strong>.8</strong> | ||
| <strong>All Main Overlays</strong> | | <strong>All Main Overlays</strong> | ||
| Line 112: | Line 112: | ||
|- | |- | ||
! Topic | ! Topic | ||
! | ! Notes | ||
|- | |- | ||
| <strong>.9</strong> | | style="vertical-align: top;" |<strong>.9</strong> | ||
| <strong>All Main Overlays</strong> | | <strong>All Main Overlays</strong> | ||
Previously documented in 8.0 documentation as a "do not use" command that replaces "&" function, this appears to be repurposed for single key command input replacing the traditional "gosub110" routine. | Previously documented in 8.0 documentation as a "do not use" command that replaces "&" function, this appears to be repurposed for single key command input replacing the traditional "gosub110" routine. | ||
| Line 127: | Line 127: | ||
Previous iterations of Color 64 used <code>gosub110</code> in the same areas. | Previous iterations of Color 64 used <code>gosub110</code> in the same areas. | ||
---- | ---- | ||
When a key is pressed: | When a key is pressed: | ||
| Line 143: | Line 141: | ||
* <code>A$=""</code> (empty string) | * <code>A$=""</code> (empty string) | ||
* The command does not block execution | * The command does not block execution | ||
---- | |||
Examples (bbs.msgs): | |||
{| class="wikitable | |||
|- | |||
| Bare Poll | |||
| | |||
110 .9:RETURN | |||
995 .9:IF A$<>NU$ OR P=1 THEN 995:RETURN (loop until a key appears or abort) | |||
|- | |||
| Filtered Keys | |||
| | |||
1020 .9,"YN":RETURN (only accept Y/N) | |||
3715 .9,"12345"+CR$:IF P ... (menu choices plus Enter) | |||
|- | |||
| Space-as-abort convention | |||
| | |||
9132 .9:IF A$=" " THEN P=1 | |||
:(and several more spots do the same) | |||
|} | |||
So .9 is essentially the modern ML command that replaced the old sysc(4) “get typed character” behavior, with a nice extra: it can be told “only accept these characters”. | |||
|} | |} | ||
| Line 151: | Line 167: | ||
|- | |- | ||
! Topic | ! Topic | ||
! | ! Notes | ||
|- | |- | ||
| <strong>.31 and !55</strong> | | style="vertical-align: top;" |<strong>.31 and !55</strong> | ||
| <strong>√bbs.msgs</strong> | | <strong>√bbs.msgs</strong> | ||
{| class="wikitable | {| class="wikitable | ||
| Line 198: | Line 214: | ||
|- | |- | ||
! Topic | ! Topic | ||
! | ! Notes | ||
|- | |- | ||
| <strong>.36 </strong> | | style="vertical-align: top;" |<strong>.36 </strong> | ||
| <strong>√bbs.init</strong> | | <strong>√bbs.init</strong> | ||
{| class="wikitable | {| class="wikitable | ||
| Line 270: | Line 286: | ||
|- | |- | ||
! Topic | ! Topic | ||
! | ! Notes | ||
|- | |- | ||
| <strong>.38 / .39 / .40 / .41 and “;” variables</strong> | | style="vertical-align: top;" |<strong>.38 / .39 / .40 / .41 and “;” variables</strong> | ||
| <strong>√bbs.msgs</strong> | | <strong>√bbs.msgs</strong> | ||
{| class="wikitable | {| class="wikitable | ||
| Line 380: | Line 396: | ||
|- | |- | ||
! Topic | ! Topic | ||
! | ! Notes | ||
|- | |- | ||
| <strong>if...£</strong> | | style="vertical-align: top;" |<strong>if...£</strong> | ||
| <strong>√bbs.msgs</strong> | | <strong>√bbs.msgs</strong> | ||
{| class="wikitable | {| class="wikitable | ||
| Line 408: | Line 424: | ||
|- | |- | ||
! Topic | ! Topic | ||
! | ! Notes | ||
|- | |- | ||
| <strong>@ </strong> | | style="vertical-align: top;" |<strong>@ </strong> | ||
| <strong>√bbs.msgs</strong> | | <strong>√bbs.msgs</strong> | ||
{| class="wikitable | {| class="wikitable | ||
| Line 428: | Line 444: | ||
|- | |- | ||
! Topic | ! Topic | ||
! | ! Notes | ||
|- | |- | ||
| <strong>[var$] </strong> | | style="vertical-align: top;" |<strong>[var$] </strong> | ||
| <strong>√bbs.msgs</strong> | | <strong>√bbs.msgs</strong> | ||
{| class="wikitable | {| class="wikitable | ||
Revision as of 03:20, 20 February 2026
At the time of this revision for Color 64 v8.1a, there are notably several ML related commands and variables that are not documented as well as some basic shortcuts and appear to have been introduced from the 8.1 upgrade. I find that comparing 8.0 code with 8.1 helps you along in figuring out what these undocumented items perform. Below are some of my notes and observations of what the code was in 8.0 and the observed shortcuts implemented in 8.1 Please note it is a work-in-progress and I don’t have all the answers (yet), so some of this is just “observation” without any conclusion!
Getting to understand some of the modified BASIC can be easy. If you have the ML loaded into your system, you can write your own program to test out the modified BASIC by having your first line call the ML routine: SYS49923
10 SYS49923 20 #"Test of program" 30 etc....
Below are some of my observations.
| Topic | Notes |
|---|---|
| Simple Addition | All overlays
Color 64 allows simple addition without using < var >=< same var >+< value > So "a=a+12" can alternately just be: "a+12". This only works with numbers (not strings) and other times, this just fails completely. Buyer beware. |
| Topic | Notes | ||||
|---|---|---|---|---|---|
| "THEN" with IF | All Main Overlays
Conclusion: “then” statements are not required for “if/then” – if <condition> <action> is legal in most cases. |
| Topic | Notes | ||||
|---|---|---|---|---|---|
| .8 | All Main Overlays
.8 - Session/Input Poll) Previously documented in 8.0 documentation as "Equivalent of the "%" command…", this appears to be rewritten in version 8.1 - and is particularly noticeable in bbs.msgs where comparing the two show that
Polls for typed input (non-blocking, local or remote), normalizes transient input-status states, and refreshes session status. Typically used inside scrolling output/file display loops and before slow operations. Side effects include updating P (0 OK, 1 user abort, 255 carrier lost/timeout) and possibly the same underlying status/character registers used by .00. While further testing is required, theoretically this should fully replace use of |
| Topic | Notes | ||||||
|---|---|---|---|---|---|---|---|
| .9 | All Main Overlays
Previously documented in 8.0 documentation as a "do not use" command that replaces "&" function, this appears to be repurposed for single key command input replacing the traditional "gosub110" routine. .9 – Single-Key Command Input Poll Overview The Previous iterations of Color 64 used When a key is pressed:
When no key is pressed:
Examples (bbs.msgs):
So .9 is essentially the modern ML command that replaced the old sysc(4) “get typed character” behavior, with a nice extra: it can be told “only accept these characters”. |
| Topic | Notes | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| .31 and !55 | √bbs.msgs
Conclusion: .31 – Message-Aware Disk Input (Version 8.1) Earlier documentation listed the ML command .31 as "not used." Analysis of Version 8.1 confirms this is incorrect. In Color 64 v8.1, the Comparison: Version 8.0 vs Version 8.1
|
| Topic | Notes | ||||||
|---|---|---|---|---|---|---|---|
| .36 | √bbs.init
.36 – Prompt-Cycle Housekeeping (Behavior Unconfirmed) Category: ML Command Seen in: All Main Overlays (prompt printing routine) Overview The In testing within the live BBS environment, removing Observed Call Pattern
Testing Notes
Working Hypothesis
Summary
|
| Topic | Notes | ||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| .38 / .39 / .40 / .41 and “;” variables | √bbs.msgs
Message Relink Commands in v8.1
.38 – Relink Iterator Initialization (v8.1) The It is designed to be used as the first step in a command sequence:
This sequence replaces the more BASIC-driven record scanning logic found in v8.0. What .38 Does
In BBS.MSGS, this binding typically associates:
The ML iterator then uses internal scratch registers such as:
These are later examined by BASIC to determine loop control and branching. In v8.0, message scanning and linking logic was performed directly in BASIC, including character comparisons and explicit loop control. In v8.1, this logic was moved into machine language for speed and structural cleanliness. BASIC now acts primarily as a decision layer while ML handles the iteration mechanics. Important Notes
Summary The It should be understood as a setup command rather than an action command. |
| Topic | Notes | ||||||
|---|---|---|---|---|---|---|---|
| if...£ | √bbs.msgs
Observation: Observe the 8.1 authors reversed the checks in variable comparisons as the conditions, with end-result being the same. Conclusion: Serves as an “not” function “(lv is not less than cm%(2,2) and lv not less than cm%(29,2) and fr does not equal 1, then print (P)rivate)” Another example:
|
| Topic | Notes | ||||||
|---|---|---|---|---|---|---|---|
| @ | √bbs.msgs
Conclusion: Seems to serve as an “if” keyword - but testing this theory in a traditional sense resulted in a syntax error. |
| Topic | Notes | ||||||
|---|---|---|---|---|---|---|---|
| [var$] | √bbs.msgs
Conclusion: Can serve as an empty variable check (null) |




























