These system variables are used in the NC100 Notepad, and it is assumed that they are also used for the NC150 and NC200 machines.
Address |
Name |
Size |
Comments |
&B000 |
copyofmmu0 |
&01 |
copy of MMU0 since it's a write-only port. |
&B001 |
copyofmmu1 |
&01 |
copy of MMU1 since it's a write-only port. |
&B002 |
copyofmmu2 |
&01 |
copy of MMU2 since it's a write-only port. |
&B003 |
copyofmmu3 |
&01 |
copy of MMU3 since it's a write-only port. |
&B004 |
gotcontext |
&01 |
|
&B005 |
__savepearlmmu |
&01 |
Extra variables needed in case not saving context. |
&B006 |
__saveaf |
&02 |
|
&B008 |
__savehl |
&02 |
|
&B00A |
saveaf |
&02 |
To save context, save all the registers... |
&B00C |
savebc |
&02 |
|
&B00E |
savede |
&02 |
|
&B010 |
savehl |
&02 |
|
&B012 |
saveix |
&02 |
|
&B014 |
saveiy |
&02 |
|
&B016 |
savepc |
&02 |
|
&B018 |
savesp |
&02 |
|
&B01A |
saveafdash |
&02 |
|
&B01C |
savebcdash |
&02 |
|
&B01E |
savededash |
&02 |
|
&B020 |
savehldash |
&02 |
|
&B022 |
savemmu0 |
&01 |
...and the memory state. |
&B023 |
savemmu1 |
&01 |
|
&B024 |
savemmu2 |
&01 |
|
&B025 |
savemmu3 |
&01 |
|
&B026 |
savecritpc |
&02 |
|
&B028 |
savecritsp |
&02 |
|
&B02A |
savingcontext |
&01 |
|
&B02B |
nmimagic |
&04 |
|
&B02F |
nmichksums |
&08 |
Checksum bytes of first 8 ROMs. |
&B037 |
criticalpc |
&02 |
Save PC and SP for recovery from NMI during IRQ. |
&B039 |
criticalsp |
&02 |
|
&B03B |
|
&50 |
A small stack which is only used in initialisation. It can't sensibly overlap with anything in case there is an NMI requiring immediate shutdown after saving context. A subsequent power on will have to restore the context. |
&B08B |
initstack |
|
|
&B08B |
diagnostics? |
&01 |
Flag used in start-up, non-zero to do diagnostics. |
&B08C |
saveprinstat |
&01 |
|
&B08D |
kbdstate1 |
&0A |
1 bit per key: 1=down, 0=up to correspond to the matrix. |
&B097 |
kbdstate2 |
&0A |
|
&B0A1 |
padkeybuf |
&40 |
|
&B0E1 |
padnextin |
&01 |
Offset into padkeybuf. |
&B0E2 |
padnextout |
&01 |
|
&B0E3 |
padbufempty |
&01 |
Non-zero if empty. |
&B0E4 |
lastkbdstate |
&02 |
|
&B0E6 |
thiskbdstate |
&02 |
|
&B0E8 |
caps.state |
&01 |
0=off, &FF=on |
&B0E9 |
savecaps |
&01 |
|
&B0EA |
justswitchedon? |
&01 |
|
&B0EB |
padserbuf |
&20 |
Variables above here are preserved after time-out. |
&B10B |
padsernextin |
&01 |
|
&B10C |
padsernextout |
&01 |
|
&B10D |
padserbufempty |
&01 |
|
&B10E |
padserin_xoff |
&01 |
Non-zero when XOFF has stopped inward transmission. |
&B10F |
padserout_xoff |
&01 |
Non-zero when XOFF has stopped outward transmission. |
&B110 |
disablexonxoff |
&01 |
Non-zero to disable software handshake. |
&B111 |
ackirq |
&01 |
Set non-zero when ACK interrupt occurs. |
&B112 |
rptdelay |
&01 |
Centiseconds. |
&B113 |
rptrate |
&01 |
Centiseconds. |
&B114 |
rpttimer |
&01 |
Count down timer for key repeat. |
&B115 |
keytorepeat |
&01 |
Key number. |
&B116 |
rptkeystates |
&01 |
Shift states. |
&B117 |
rtcbuf |
&0D |
|
&B124 |
d.alarmday |
&06 |
Alarm day, hour and minute - ready for RTC chip. |
&B12A |
alarmhappened |
&01 |
Non zero when alarm has gone off, message pending. |
&B12B |
alarmhappenedgotmsg |
&01 |
Non zero when alarm has gone off, got message & pending. |
&B12C |
soundcounter |
&01 |
Non-zero if playing a tune. |
&B12D |
soundptr |
&02 |
Pointer to array of frequency,duration. |
&B12F |
soundrepcount |
&01 |
|
&B130 |
soundrepptr |
&02 |
|
&B132 |
poweroffminutes |
&01 |
Configured time to power off. |
&B133 |
minutesleft |
&01 |
|
&B134 |
minutecounter |
&02 |
|
&B136 |
eventhappened |
&01 |
|
&B137 |
preservecontext |
&01 |
0=return to main screen at power on. |
&B138 |
dontpreservecontext |
&01 |
1=don't preserve (diagnostics/battery). |
&B139 |
mainprog |
&01 |
6=inbasic, 128=inexternal (foreground program id). |
&B13A |
currentprinter |
&01 |
0 for parallel, 1 for serial. |
&B13B |
currentmenu |
&02 |
Pointer to current menu. |
&B13D |
wasmenusel |
&01 |
After KMWAITCHAR this is 1 if menu used, 0 if not. |
&B13E |
lastsecond |
&01 |
Checked to see whether to update the time. |
&B13F |
clockon? |
&01 |
Used in Protext, non-zero when clock is enabled. |
&B140 |
sdumpname |
&04 |
File names s.a, s.b, s.c and so on - for screen dumps. Force d.workspace to an 8 byte boundary. |
&B148 |
d.workspace |
&08 |
For massaged copy of symbol data (for example, inverse/underline). |
&B150 |
d.datebuf |
&12 |
|
&B162 |
d.asciitime |
&0C |
hh:mm:ss |
&B16E |
currentcfg |
&4C |
|
&B1BA |
g.outstream |
&01 |
Bit 0 for screen, 1 for printer, 2 for file. |
&B1BB |
g.h.outfile |
&02 |
File handle for charout if bit 2 set. |
&B1BD |
g.pos |
&01 |
Current column number (charout). |
&B1CE |
def.fname |
&0F |
Name of current file being edited. First byte not zero if document open (yellow/red goes to edit mode, transfer from addrbook works). |
&B1DD |
def.first |
&01 |
|
&B1DE |
d.findinfobuf |
&24 |
|
&B202 |
d.row |
&01 |
0-based within window. |
&B203 |
d.col |
&01 |
|
&B204 |
d.wintop |
&01 |
|
&B205 |
d.winleft |
&01 |
|
&B206 |
d.winheight |
&01 |
Height -1. |
&B207 |
d.winwidth |
&01 |
Width -1. |
&B208 |
d.winset? |
&01 |
Non-zero if window. |
&B209 |
d.state |
&01 |
Bit 7 if inverse on. |
&B20A |
d.rowcount |
&01 |
|
&B20B |
d.colcount |
&01 |
How many more cols to print on this line. |
&B20C |
d.stream |
&01 |
Current stream number. |
&B20D |
d.fastpos |
&02 |
Needed for quick screen update. |
&B20F |
d.streamwsp |
&40 |
8 streams of 8 bytes each. |
&B24F |
d.dateptr |
&02 |
Non-null for expanding time/date. |
&B251 |
d.kmcharret |
&02 |
Returned character. |
&B253 |
d.kstate |
&02 |
Key locks state. |
&B255 |
d.caslocks |
&01 |
Shift states set by sticky key press. |
&B256 |
d.sticky |
&01 |
Non-zero in sticky key mode. |
&B257 |
d.yellow |
&01 |
Low byte of yellow/other key token stored. |
&B258 |
d.calcmode |
&01 |
Non-zero if keyboard in calculator mode. |
&B259 |
d.kmexplen |
&01 |
Expansion string length. |
&B25A |
d.kmexpptr |
&02 |
Expansion string pointer. |
&B25C |
d.expbuffer |
&02 |
Address of expansion key buffer. |
&B25E |
d.expbufptr |
&02 |
Pointer to free byte. |
&B260 |
d.expbufend |
&02 |
Last byte in buffer. |
&B2A1 |
macro_buf |
&100 |
|
&B3A7 |
|
|
File selector variables... |
&B3A7 |
fs_clicat |
&01 |
Non-zero if CAT command, not fsel. |
&B3A8 |
fs_showsizes |
&01 |
Non-zero if showing file sizes (pad default=off). |
&B3A9 |
fs_showsys |
&01 |
Non-zero if showing system files. |
&B3AA |
fs_curfile |
&01 |
Current file number offset from top left. |
&B3AB |
fs_topleftfile |
&01 |
File number displayed top left. |
&B3AC |
fs_numcols |
&01 |
|
&B3AD |
fs_colwidth |
&01 |
|
&B3AE |
fs_numshown |
&01 |
|
&B3AF |
fs_maxfiles |
&01 |
Max files that can be shown. |
&B3B0 |
fs_handle |
&02 |
|
&B3B2 |
fs_numfilerows |
&01 |
Rows of files in CAT command. |
&B3B3 |
fs_startlist |
&02 |
Start of file list. Zero if doing unsorted list. |
&B3B5 |
fs_startdir |
&02 |
Start of directory entries. |
&B3B7 |
fs_endlist |
&02 |
|
&B3B9 |
fs_numfiles |
&01 |
Number of files in directory. |
&B3BA |
fs_lastshown |
&01 |
Last file number currently shown. |
&B3BB |
tickcount |
&04 |
32 bit counter needed for basic. |
&B3BF |
ticksleftuntilevent |
&02 |
|
&B3C1 |
tickreloadvalue |
&02 |
|
&B3C3 |
tickeventpending |
&01 |
|
&B3C4 |
countdowntimer |
&02 |
|
&B3C6 |
savestream |
&01 |
|
&B3C7 |
password |
&05 |
Encrypted. |
&B3CC |
pwbuf |
&05 |
Clear. |
&B3D1 |
realpwbuf |
&05 |
The real password saved for encrypting. |
&B3D6 |
haspassword |
&01 |
Non-zero if has password. |
&B3D7 |
passwdlen |
&01 |
|
&B3D8 |
passwordlocked |
&01 |
Non-zero if locked (disallow soft reset). |
&B3D9 |
editingsecret |
&01 |
Non-zero when editing secret file (can't delete it). |
&B3DA |
inmenu? |
&01 |
Non-zero when inside menu - macros disabled. |
&B3DB |
macro_count |
&01 |
|
&B3DC |
recording? |
&01 |
|
&B3DD |
macro_token |
&02 |
|
&B3DF |
printfailed |
&01 |
Flag set by MCREADYPRINTER. |
&B3E0 |
wasmemoryerr |
&01 |
|
&B3E1 |
inprotext |
&01 |
Used in file selector, 0=was [Function][L], non-zero=was [Function][2]. |