----------------------------------------------------------------------------- NEC PC-8201A/PC-8300 Memory Map/Hook table/Port map - Compiled by Gary Weber Rev 1.0 (05/13/1996) ----------------------------------------------------------------------------- * ROM ROUTINES * Name Hex Dec Description ------ ------ ------ ------------------------------------------------------- SNERR 0568 1384 Abort BASIC and issue syntax error message PCERR 056B 1387 Abort BASIC and issue pc8001 feature error DUERR 056E 1390 Abort BASIC and issue device unavailable error DVERR 0571 1393 Abort BASIC and issue divison by zero error NFERR 0574 1396 Abort BASIC and next without for error DDERR 0577 1399 Abort BASIC and double dimensioned array error REERR 057A 1402 Abort BASIC and issue resume without error message OVERR 057D 1405 Abort BASIC and issue overflow error message MOERR 0580 1408 Abort BASIC and issue missing operand error message TMERR 0583 1411 Abort BASIC and issue type mismatch error message ERROR 0585 1413 Abort BASIC and issue error message READY 062D 1581 Jmp vector to enter BASIC interpreter LINKER 0714 1812 Correct a BASIC program's links to run at it current Input: Address of program in [txttab] Output: [HL] end of BASIC program Alters: All registers LINKER1 0718 1816 Same as linker only start address is in de Input: [DE] beginning of BASIC program Output: [HL] end of BASIC program Alters: All registers FCERR 0B87 2951 Abort BASIC and issue illegal function call error LET 0CB0 3248 Parse and execute let statement Input: [HL] txtpnt Output: [variable] at txtpnt is assigned the value of the expression. [HL] points to next location past expression. Alters: Unknown, assume all Notes: Errors return to BASIC LETCN2 0CC9 3273 Do variable assignment Input: [HL] txtpnt [top of stack] descriptor of variable to assign [A] type byte for variable to assign [fac] contains new argument [valtyp] contains type of new argument Output: [HL] text pointer [new variable] contains FACLO argument Alters: Unknown, assume all Notes: This routine must be entered with a jump, not call. Errors return to BASIC. FINPNT 0F26 3878 Final open processing Alters: [A] and flags Notes: Must be done after nulopn FRMEVL 1091 4241 Evaluate an expression and store it to FAC Input: [HL] points to text of expression Output: Valtyp indicates answer in FAC Alters: All, [HL] points to next text position past expression. Notes: Errors return to BASIC MAKUPS 12B5 4789 Fetch the the character at [HL] and convert to Input: [HL] points to the character to fetch Output: [A] contains the uppercase value of (hl) Alters: [A] LCDISP 1462 5218 Display string starting at [HL] up to a NULL Input: [HL] points to the string Output: None Alters: ??? FRMQNT 15F3 5619 Evaluate an integer expression to [DE] Input: [HL] is a pointer to the text of expression Output: [HL] points to the first byte following the expression. [DE] contains the integer value of the expression Alters: Unknown, assume all Notes: Errors return to BASIC CHGET 174D 5965 Get a character Output: Character is in [A] Alters: [A] and flags Notes: Waits for input & honors time out CHSNS 183D 6205 See if a key press has been made Output: Zero flag set if character waiting else reset Alters: [A] and flags PWROFF 18BB 6331 Power down the machine DIOERR 18FC 6396 Abort BASIC and issue i/o error message LCDDSP 1942 6466 Dispatch table for lcd i/o GSXPOP 195A 6490 Clean stack and reset power off timer Output: Registers restored to values on stack Alters: All CRTDSP 1962 6498 Dispatch table for crt i/o RAMDSP 1974 6516 Dispatch table for ram file i/o RAMOPN 197E 6526 Open a ram file Input: [filnam] is name of .DO file [HL] = input, output, append, etc.. RAMCLS 1A05 6661 Close a ram file RAMWRT 1A24 6692 Write to a ram file RAMINP 1A3C 6716 Read from a ram file RAMBCK 1A93 6803 Back up to previous character for a ram file GETPRV 1AED 6893 Calculate backup character address for ram file Input: [filnum] is set to the file number Output: [HL] points to the appropriate xxxprv Alters: [HL] CASDSP 1AF7 6903 Dispatch table for cassette i/o LPTDSP 1BCC 7116 Dispatch table for lprinter i/o COMDSP 1BDA 7130 Dispatch table for com port i/o COMOPN 1BE4 7140 Open com: COMCLS 1C01 7169 Close the com: port COMWRT 1C1D 7197 Send a character to com: COMINP 1C28 7208 Get a byte from com: COMBCK 1C47 7239 Back up com: one character SETSER 1C4E 7246 Initializes serial port, with specs from MODE string. Input: [HL] Points to the mode string WNDDSP 1CEC 7404 Dispatch table for bar code reader i/o ADJFOR 1D4D 7501 Adjust for/next statements Input: [BC] value to add to all pointers (ie length of hole) Alters: Unknown, assume all FILLST 2127 8487 Display files listing to the screen KILASC 21A8 8616 Kill a .DO file Input: From srcnam call Filename to kill in filnam Alters: All KILCOM 21C2 8642 Kill a .CO file Input: From srcnam call Filename to kill in filnam Alters: All KILBAS 2200 8704 Kill a .BA file Input: From srcnam call Filename to kill in filnam Alters: All NAMEB 223B 8763 Rename a file [not change extention type] Input: Old filename in filnam New filename in filnm2 Alters: All except [HL] Notes: Error returns to BASIC CHKREG 226A 8810 Check if the current BASIC program is registered Output: Zero set means file not registered else reset Alters: Unknown, assume all SRCCOM 2272 8818 Search for a .CO file Input: Search filename in filnam Output: Same as SRCNAM Alters: All SRCBAS 2292 8850 Searches directory for a ".BA" file Input: File name should be set up in FILNAM Output: Same as SRCNAM Alters: All SRCNAM 229B 8859 Searches for a filename, returns its address. Input: File name should be setup in FILNAM Output: Zero set if the file does not exist If zero reset then the following is valid [A] type byte Bit 7 =1 Bit 6 =1 if .DO file Bit 6 =1 if .DO file Bit 5 =1 if .CO file Bit 4 =1 if rom 1 routine {BASIC, text, or telcom} Bit 3 =unk internal use Bit 2 =unk internal use Bit 1 =1 if file is currently open Bit 0=unk internal use [HL]=pointer to this file's directory entry [DE]=address of file start Alters: All SCNEMP 22D3 8915 Scan for an empty directory entry Output: [HL] points to an open directory entry Alters: [A], [BC], [HL] Notes: Error returns to BASIC LNKFIL 233A 9018 Fix up directory pointers Alters: All Notes: Must be done before a kill MAKBAS 23D0 9168 Make hole of two bytes at ASCTAB assigned to NULDIR Input: Unknown, assume nothing Output: Unknown, assume nothing Alters: All SETNAM 2435 9269 Fill a directory entry Input: Filename is in filnam [A] directory flag [DE] start of file [HL] points to the directory entry to set up Alters: [A], [B], [HL] REST00 280B 10251 Delete excess area created by makbat Input: [HL] start of area to reclaim [DE]-1 last address of the reclaim area Alters: Unknown, assume all RLOADM 28BB 10427 Load a .CO file Input: Filename in filnam Alters: [A], [BC], [DE] Notes: Does not execute the file FRETMP 2CDE 11486 Remove temporary string from string space Input: [DE] points to a pointer to a string descriptor Alters: Unknown, assume all SPACE2 2D54 11604 Create a string of [E] length, filled with [A] Input: [top of stack] dummy entry removed by this call [next on stack] txtpnt [next on stack] actual return address [A] contains the fill byte [E] contains the length of the string to be created Output: String created and descriptor in FACLO and dsctmp. [HL] txtpnt [A] is byte at txtpnt Alters: Unknown, assume all Notes: Space errors return to BASIC FADD 2EBB 11963 Compute the sum of two single precision numbers Input: [HL] points to the first argument [fac] contains the second argument Output: [fac]=[hlarg]+[fac] Alters: All Notes: Overflow returns to BASIC FSUB 2EC1 11969 Compute the dif of two single precision numbers Input: [HL] points to the first argument [fac] contains the second argument Output: [fac]=[hlarg]-[fac] Alters: All Notes: Overflow returns to BASIC LOG 2FFC 12284 Compute the natural logarithm of a single precision # Input: [fac] argument Output: [fac] result Alters: All Notes: Errors return to BASIC FMULT 3040 12352 Compute the product of two single precision numbers Input: [BC]_[DE] contains the first argument [fac] contains the second argument Output: [fac]=[BC]_[DE]x[fac] Alters: All Notes: Overflow returns to BASIC FDIV 30A5 12453 Compute the quotient of two single precision numbers Input: [BC]_[DE] contains the first argument [fac] contains the second argument Output: [fac]=[BC]_[DE]/[fac] Alters: All Notes: Overflow or /0 returns to BASIC CONIA 31AB 12715 Convert a to an integer and store in [fac] Input: [A] contains value to convert Output: [fac] contains integer representation of [A] Alters: Unknown, - assume all MOVFM 31D0 12752 Move from [HL] to FAC Input: [HL] points to single precision number Output: [fac] contains copy of number [HL]=[HL]+4 Alters: [BC], [DE], [HL] MOVFR 31D3 12755 Move from [BC]_[DE] to FAC Input: Number in [BC]_[DE] Output: [fac] contains copy of number Alters: [DE] MOVRF 31DE 12766 Move from FAC to [BC]_[DE] Input: Number in FAC Output: [BC]_[DE] contains copy of number Alters: [BC], [DE], [HL] MOVRM 31E1 12769 Move from memory to [BC]_[DE] Input: [HL] points to a single precision number Output: [BC]_[DE] contains a copy of the number [HL]=[HL]+4 Alters: All MOVMF 31EA 12778 Move from FAC to memory Input: [HL] points to area for number Output: Number is copied to area pointed to by [HL] [HL]=[HL]+4 Alters: All MOVE 31ED 12781 Move from [DE] to [HL] Input: [DE] points to a single precision number [HL] points to an area for a number Output: Number is copied to area pointed to by [HL] [DE]=[DE]+4 [HL]=[HL]+4 Alters: [A], [B], [DE], [HL] MOVVFM 31F2 12786 Move any type from [DE] to [HL] Input: [DE] points to a number [HL] points to a new area for the number [valtyp] is the type of the number Output: Number is copied to area pointed to by [HL] Alters: [A], [B], [DE], [HL] VMOVAF 3218 12824 Move any type from memory to [fac] Input: [HL] points to a number [valtyp] is the type of the number Output: Number is copied to [fac] Alters: [A], [B], [DE], [HL] VMOVMF 3221 12833 Move any type from [fac] to memory Input: [HL] points to a new area for the number [valtyp] contians the type of the number Output: Number is copied to area pointed to by [HL] Alters: [A], [B], [DE], [HL] FCOMP 322E 12846 Compare two single precision numbers Input: [BC]_[DE] first argument [fac] second argument Output: A=1 if firstsecond Alters: [A], [HL] ICOMP 3259 12889 Compare two integers Input: [DE] first argument [HL] second argument Output: A=1 if firstsecond Alters: [A] DCOMP 326F 12911 Compare two double precision numbers Input: [arg] first argument [dfac] second argument Output: A=1 if firstsecond Alters: All CONIS 32AD 12973 Convert single precision to an integer Input: [fac] single precision argument Output: [fac] integer argument Alters: All Notes: If overflow then return to BASIC CONSD 32DA 13018 Convert double precision to single precision Input: [dfac] double precision argument Output: [fac] single precision argument Alters: All CONSI 32ED 13037 Convert an integer to single precision Input: [fac] integer argument Output: [fac] single precision argument Alters: All CONDS 3304 13060 Convert single precision to double precision Input: [fac] single precision argument Output: [dfac] double precision argument Alters: [A], [HL] ISUB 33F7 13303 Compute the difference of two integers Input: [DE] first arg [HL] second arg Output: [DE]-[HL] value in FAC and [HL], If valtyp=sngtyp then overflow Alters: All IADD 3403 13315 Compute the sum of two integers Input: [DE] first arg [HL] second arg Output: [DE]+[HL] value in FAC and [HL], If valtyp=sngtyp then overflow Alters: All IMULT 3423 13347 Compute the product of two integers Input: [DE] first arg [HL] second arg Output: [DE]x[HL] value in FAC and [HL], If valtyp=sngtyp then overflow Alters: All IDIV 347A 13434 Compute the quotient and remainder of two integers Input: [DE] first arg [HL] second arg Output: [DE] remainder of [DE]/[HL] [HL] quotient of [DE]/[HL] Alters: All Notes: If [HL]=000 then BASIC error ?/0 occurs DSUB 34F1 13553 Subtract two double precision numbers Input: [dfac] first argument [arg] second argument Output: [dfac]=[dfac]-[arg] Alters: All Notes: Overflow returns to BASIC DADD 34F8 13560 Add two double precision numbers Input: [dfac] first argument [arg] second argument Output: [dfac]=[dfac]+[arg] Alters: All Notes: Overflow returns to BASIC DMULT 3639 13881 Multiply two double precision numbers Input: [dfac] first argument [arg] second argument Output: [dfac]=[dfac]x[arg] Alters: All Notes: Overflow returns to BASIC DDIV 3691 13969 Divide two double precision numbers Input: [dfac] first argument [arg] second argument Output: [dfac]=[dfac]/[arg] Alters: All Notes: Overflow or /0 returns to BASIC FIN 3726 14118 Convert a string to a number Input: [HL] points to the string representation of the number Output: [fac] contains value [valtyp] contains the type of the returned number [HL] points to the last character of the string Alters: All Notes: No sytax check is made Overflow returns to BASIC PRASC 3898 14488 Print a number to the screen in ASCII Input: [HL] contains number to be printed Alters: Unknown Notes: Number *** FOUT 38A8 14504 Convert a number to a formatted string Input: [fac] contains value [valtyp] is the type of the value [A] is a bit map Bit 7=1 output in fixed format, else free format Bit 6=1 format in groups of three digits with comma separators Bit 5=1 fill leading spaces with asterisks Bit 4=1 output with floating dollar sign Bit 3=1 output the sign of a positive number Bit 2=1 output sign after the number Bit 1=1 unused at this time Bit 0=1 output in floating point, else fixed point notation [B] number of places to the left of the decimal [C] number of places to the right of the decimal Includes decimal point, but not 4 positons for exponent Output: [fbuffr] contains the string representation Alters: All Notes: String is terminated by a nul (000) SQR 3D4D 15693 Compute the square root of a single precison # Input: [fac] argument Output: [fac] result Alters: All Notes: Errors return to BASIC FPWR 3D5E 15710 Raise a single precision number to a power Input: [BC]_[DE] exponent [fac] base Output: [fac] result Alters: All Notes: Errors return to BASIC EXP 3DAD 15789 Compute the base value of a single precision # to e Input: [fac] argument Output: [fac] result Alters: All Notes: Errors return to BASIC RND 3E4A 15946 Compute a random number between zero and one Input: [fac]<0 start a new sequence {reseed} [fac]=0 return the last value generated [fac]>0 return the next random number Output: [fac] result Alters: All Notes: Errors return to BASIC COS 3EBD 16061 Compute the cosine of an angle expessed in radians Input: [fac] argument Output: [fac] result Alters: All Notes: Errors return to BASIC SIN 3EC3 16067 Compute the sine of an angle expressed in radians Input: [fac] argument Output: [fac] result Alters: All Notes: Errors return to BASIC TAN 3F5E 16222 Compute the tangent of an angle expressed in radians Input: [fac] argument Output: [fac] result Alters: All Notes: Errors return to BASIC ATN 3F73 16243 Compute an angle in radians from its tangent Input: [fac] argument Output: [fac] result Alters: All Notes: Errors return to BASIC RUNC 3FF5 16373 Initialize BASIC to run a program Output: Unknown, assume nothing Alters: All including stack pointer CLEAR0 3FFC 16380 Reset BASIC's operating enviorment Alters: All ISLET 4141 16705 Determine if character at hl is a letter Input: [HL] is the txtpnt Output: [A]=character at hl Carry set = not a letter Alters: [A] and flags BEEP 4258 16984 Generate a BEEP CLRHOM 425D 16989 Moves cursor to home position - doesn't clear screen CLS 4250 16992 Clears the screen, returns cursor to home position NOSCRL 426E 17006 Inhibit screen scroll SCRL 4273 17011 Enable screen scroll CSRON 4278 17016 Turns cursor on CSROFF 427D 17021 Turns cursor off DELIN 4282 17026 Delete line cursor is on INSRT 4287 17031 Insert a line at cursor DELEOL 428C 17036 Delete from cursor to end of line STDCSR 4296 17046 Make cursor the standard "BLOCK" cursor ALTCSR 429B 17051 Make cursor the "UNDERLINE" cursor REVERS 42A2 17058 Start inverse character mode NORMAL 42A7 17063 Cancel inverse character mode POSIT 42BF 17087 Set cursor position Input: [H] is x, [L] is y {relative to one} Alters: [A], [HL], and flags Notes: This routine is not reccomended for use ERAFNK 42C3 17091 Erase the function key line Alters: All DSPFNK 42E4 17124 Display the function keys Alters: All CHPUT 4363 17251 Send a character to screen Input: [A] is character to print INLIN 47AA 18346 Input a line from the keyboard starting at cursor Output: Line goes into BUF (F5A1h) Alters: Unknown PINLIN 4798 18328 Input a line from the keyboard, even include prompt Output: Line goes into BUF (F5A1h) PTRGET 49AF 18863 Get the pointer to a variable Input: [HL] points to the text of the variable Output: [DE] points to the varialbe descriptor [HL] points to the next text position past number Alters: Unknown, assume all NAMSCN 4DBD 19901 Parse a file name in text Input: [HL] contains txtpnt Output: File name is parsed into [filnam] [D] is the disk # [HL] points to first location past the name Carry is set if default device [ram file] Alters: Unknown, assume all Notes: Errors return to BASIC SCNBLK 4E29 20009 Fetch the next character from a block Input: [E] is number of characters left in string [HL] points to the string Output: [HL]=[HL]+1 [A] is the character at [HL] b/4 inc [E]=[E]-1 Zero is set if at end of block Alters: All GETFLP 4E2D 20013 Get file pointer w/o setting up ptrfil or drvptr Input: [fac] file number Output: [HL] is file pointer [A] mode with flags set [drvptr] is disk pointer Alters: All SETFIL 4E6B 20075 Set up fcb file pointers Input: [A] file number Alters: All NULOPN 4EBE 20158 Open a .DO file Input: [A] is file number [B]=open mode: 001 input - 002 output - 008 append [D] must be 0f9 [HL] should point to a nul character Filename to open in filnam Alters: All Notes: Error return to BASIC CLSFIL 4EE4 20196 Close a .DO file Input: [A] file number Alters: All Notes: Data channels can be closed with this CLSALL 4FBF 20415 Close all files Alters: All except [HL] Notes: Closes data channels also FILOU1 4FEF 20463 Write a character to a .DO file Input: [A] caharacter to write Notes: Must be directly preceded by a setfil call Errors cause return to BASIC INDSKC 5015 20501 Get a character from a .DO file Input: None Output: Carry set if end of file else reset [A] is character read if successful Alters: [A] and flags Notes: Must be preceded directly by a setfil call INDSKE 5025 20517 Clean stack after an input Input: None Output: [DE],[HL],[BC] are values from stack Alters: All NOSKCR 51B9 20921 Create data string from input w/o linefeeds Output: [HL] restored Alters: All except [HL] DERBFN 51E4 20964 Abort BASIC and issue bad file name message DERFAO 51E7 20967 Abort BASIC and issue file already open message DERFDR 51EA 20970 Abort BASIC and issue direct statement in file DERFNF 51ED 20973 Abort BASIC and issue file not founund message DERFNO 51F0 20976 Abort BASIC and issue file not open message DERIFN 51F3 20979 Abort BASIC and issue illegal file name message DERIER 51F6 20982 Abort BASIC and issue internal error message DERRPE 51F9 20985 Abort BASIC and issue read past end message DERTMF 51FC 20988 Abort BASIC and issue too many files message GENDSP 52B9 21177 Dispatch to the i/o offset in A Input: [A] e.xxx entry offset [HL] points to a fcb Output: Nothing - dispatches immediately to another routine Alters: None TELCOM 52DC 21212 Jumps to Telcom program TERM 5388 21384 Jumps into Telcom's TERM mode ** 8201 ONLY ** PREV 5459 21593 Previous screen routine DATE 5D8C 23948 Displays date & time at cursor location MAKBAT 6518 25880 Make a hole from all available memory Input: Start address for hole in [asctab] Output: [BC] length of hole created Alters: Unknown, assume all MAKHOL 6C0A 27658 Make a hole of bc bytes at hl Input: [HL] start address for hole [BC] length of hole to create Output: Carry set if out of memory else reset Alters: [A], [DE] LDIRSB 6C78 27768 Do z80 ldir instruction Input: [HL] source address [DE] destination address [BC] number of bytes to move Alters: All LDDRSB 6C83 27779 Do z80 lddr instruction Input: [HL] source address [DE] destination address [BC] number of bytes to move Alters: All PRINT 6D92 28050 Send a character to the line printer Input: [A] is character to print Output: Carry is set if i/o aborted with shift stop else reset Alters: Flags RCVX 6DC2 28098 Sees if there's a character waiting in RS-232 queue. Input: None Output: Zero flag set if no character in queue. Zero flag reset if character(s) waiting. When the Zero flag is set, [A] shows number of charactes in queue. Alters: [A] and Flags RV232C 6DD3 28115 Get character from RS-232 queue. Input: None Output: Carry set if aborted by SHIFT-STOP Carry reset and Zero flag set if read is successful. [A] holds character. Carry reset and Zero flag reset if there is a receive error. [A] contains a garbage character in this case. Alters: [A] and Flags SD232C 6EBE 28350 Send a character to the RS-232C port. Input: [A] is character to send Output: Carry is set if i/o aborted with shift stop else reset Alters: [A] and Flags INZ232 6F58 28504 Initializes the USART (RS-232 Port) Input: [H] = Bps rate specifier [L] = Data length, parity, stop bits [B] = RTS/DTR specifier [C] = Should be FFh Alters: None CMTRMT 6FD9 28633 Turn cassette motor on or off. Input: [E] = 0 turns off motor [E] = 1 turns on motor Alters: [A] and flags GETCH 7279 29305 Get a char from keyboard - don't wait Output: Zero is set if a key has been pressed, else reset. [A] contains character read from keyboard Alters: Flags Notes: Must be used in a loop BREAKX 72DF 29407 See if shift stop has been pressed Output: Carry is set if shift stop has pressed else reset Alters: [A] and flags Notes: Direct keyboard check MUSIC 730D 29453 Generate sound Input: [DE] is frequency, [B] is length of tone Alters: Unknown PLOT 74D0 29904 Set a dot on the lcd Input: [D] is x, [E] is y Alters: All Notes: No range checking is done UNPLOT 74D1 29905 Reset an lcd dot Input: [D] is x, [E] is y Alters: All COLDST 7D83 32131 Cold start routine. BE CAREFUL!!! This will have the same affect as pressing CTRL-SHIFT & hitting the RESET button. BYTFRE 7E48 32328 Displays bytes free at current cursor location BNK3_2 7EA9 32425 Switches from BANK3 from BANK2 BNKSW 7EAB 32427 Switches from BANK1 to BANK2, or from BANK2 to BANK3, or from BANK3 to BANK1. (Just like f.10 from main menu) GETBNK 7EEC 32492 Get a byte from any bank Input: [B]=bank number: 000 bank one - 008 bank two - 00c bank three [HL]=address of byte to read Output: [D]=byte Alters: [A], [C], [D], and flags Notes: Interrupts must be disabled for this PUTBNK 7EEB 32491 Put a byte into any bank Input: [B]=bank number: 000 bank one - 008 bank two - 00c bank three [HL]=address of byte to read [D]=byte to put in any bank Alters: [A], [C], and flags Notes: Interrupts must be disabled for this DEFILE 7F1C 32540 Change maxfiles value Input: [A] new number of files Alters: All and stack pointer also Notes: Precede this call with a clsall call and follow it with a CLEAR0. Call to insure correct processing RETADR 7FDB 32731 Return address for hooks which do nothing Input: Unknown ============================================================================= * UPPER MEMORY "BOOKKEEPING" AREA * Name Hex Dec Description ------ ------ ------ ------------------------------------------------------- FSIDSV F380 62336 Address to jump to on first power up ATIDSV F382 62338 Address to jump to resume HIMEM F384 62340 Highest memory available to BASIC (clear value) PWRHOK F386 62342 Rst 00 hook INTRPT F389 62345 Rst 5.5 hook normally barcode reader R65HOK F38C 62348 Rst 6.5 hook normally UART (COM) R75HOK F38F 62351 Rst 7.5 hook normally from timer NMI F392 62354 NMI hook normally power down vector CHKROM F395 62357 This is entry to check for second ROM CKROM1 F3A4 62372 This is entry to copy romname to directory BRUN2 F3B9 62393 This is entry to execute second ROM ROMFLG F3BF 62399 Flag 00 if no second ROM TELCAD F3C0 62400 Address of telcom main function key dispatch table TERMAD F3C2 62402 Address into term at display last page EVLHOK F3C8 62408 Hook out of expression evaluator CSIHOK F3CB 62411 Hook to cassette read a byte CSOHOK F3CE 62414 Hook to cassette write a byte CRDHOK F3D1 62417 Hook to cassette read sync leader CWRHOK F3D4 62420 Hook to cassette write sync leader NSTHOK F3D7 62423 Hook ??? INSFLG F3DA 62426 Flag 00 is non-insert mode BANK F3DB 62427 Current bank selected RVSCUR F3DC 62428 Cursor make pattern ERRHOK F3DD 62429 Hook out of error handler FNKPNT F3E0 62432 Pointer to function key storage PASPNT F3E2 62434 Pointer to paste buffer CONFLG F3E4 62436 Console type 0=LCD 1=CRT CSRY F3E5 62437 Current cursor Y position CSRX F3E6 62438 Current cursor X positon LINCNT F3E7 62439 Console height LINWDT F3E8 62440 Console width CNSDFG F3E9 62441 Flag 0 do not display function keys LOKFLG F3EA 62442 Flag 00 = screen scrolls CSRFLG F3EB 62443 Flag 00 = enable screen flag LCDCSY F3EC 62444 LCD cursor position (Y) LCDCSX F3ED 62445 LCD cursor position (X) CRTCSY F3EE 62446 CRT cursor position (Y) CRTCSX F3EF 62447 CRT cursor position (X) CRTCNT F3F0 62448 Number of crt lines CRTWDT F3F1 62449 Length of crt line in characters ESCCNT F3F2 62450 Escape processor count ESCSAV F3F3 62451 This is paired with above REVFLG F3F4 62452 Flag FF=reverse video mode LPTWDT F3F5 62453 Length of lineprinter line WDTSTR F3F6 62454 4 characters - string representation of LPTWDT PRVCOO F3FA 62458 2 bytes last referenced screen coordinate MODE F3FC 62460 Bit 7=in TEXT(FILER); bit 6=in TELCOM EDTFLG F3FD 62461 Flag for EDIT command ERRJMP F3FE 62462 Address to intercept BASIC's error handler PRVMON F400 62464 Previous month storage KEYWAT F401 62465 Set to non zero when waiting for key input PWRINT F402 62466 Time to power off in tenth's of a minute FULDUP F403 62467 Flag FF=telcom in full duplex ECHO F404 62468 Flag FF=echo telcom to lineprinter LFFLG F405 62469 Flag 00=ingore line feeds in telcom SERMOD F406 62470 6 characters of serial initialization string JMPPLT F40C 62476 Entry to cold start MINUPD F40F 62479 ?? MAXUPD F411 62481 ?? OUTWRD F413 62483 Jump to out instruction mask second byte is port FDIVC F416 62486 First entry to fast divide FDIVB F41A 62490 Second entry to fast divide FDIVA F41E 62494 Third entry to fast divide FDIVG F421 62497 Fourth entry to fast divide RNDCNT F425 62501 ?? RNDTAB F427 62503 ?? RNDX F447 62535 Random seed number ie last number generated STAINP F44B 62539 Input instruction mask second byte is port number ENDPRG F44E 62542 Fake end of program for resume next ERRFLG F453 62547 Error number saved here so edit can happen from SN? LPTLST F454 62548 Last LPRINT operation 00=linefeed LPTPOS F455 62549 Based from zero print head position PRTFLG F456 62550 Flag FF=send output to lpt CLMLST F457 62551 Position of last comma column RUBSW F458 62552 Flag=1 if processing a rubout STKTOP F459 62553 Top location to use for the stack CURLIN F45B 62555 Current BASIC line number TXTTAB F45D 62557 Pointer to beginning of BASIC text VLZADR F45F 62559 Address of character replaced by VAL KBUF F462 62562 Keyboard krunch buffer BUFMIN F5A0 62880 End of krunch (comma) BUF F5A1 62881 Start of direct execution buffer ENDBUF F6A3 63139 End of direct execution buffer TTYPOS F6A4 63140 Current TTY position FNKSTR F6A5 63141 Function key storage area LNKWRK F745 63301 Flag for directory link BASFNK F746 63302 BASIC's function keys IPLBUF F7E6 63462 Place to store IPL command LINTTB F827 63527 Line terminator table for screen editor FSTPOS F82F 63535 Cursor position when inlin entered CSTYLE F831 63537 Cursor style TIMBUF F832 63538 Buffer for clock chip TIMCNT F83E 63550 ?? TIMINT F840 63552 Time for "POWER n" TMOFLG F841 63553 Time out flag TIMWRK F842 63554 Work space for TIME TRPTBL F84C 63564 Table of I/O traps BASIC F84F 63567 BASIC's directory entry TEXT F85A 63578 TEXT's directory entry TELCOM F865 63589 TELCOM's directory enry NULDIR F870 63600 Directory entry for non-registered BASIC program SCRDIR F87B 63611 SCRAP's directory entry EDTDIR F886 63622 Directory entry for edit workspace USRDIR F891 63633 First user directory entry of 21 DIREND F978 63864 End of directory mark (0FF) DIRPNT F979 63865 Pointer to directory of current BASIC program CASPRV F97B 63867 Storage for previous character for cassette COMPRV F97C 63868 Storage for previous character for COM port WNDPRV F97D 63869 Storage for previous character for bar code reader RAMPRV F97E 63870 Storage for previous character for ram files (16) PASPRV F98E 63886 ?? FILNUM F98F 63887 Current file number ROMNAM F991 63889 This is where the second rom name is FSTFLG F999 63897 Set to 1 to indicate this is a power-up condition. ;Causes IPL execution to happen on return to menu. INLCUR F99A 63898 Cursor save flag when INLIN entered SAVECN F99B 63899 Save area for CONTXT,CONSAV,CONTYP, & CONLO ASAVE F9A7 63911 [A] parameter for EXEC HLSAVE F9A8 63912 [HL] parameter for EXEC FSTLIN F9AA 63914 Address of first line decrunched LSTLIN F9AC 63916 Address of last line decrunched STAKSV F9AE 63918 Save area for sp during power off state BOTTOM F9B0 63920 Bottom address of ram DNLFLG F9B2 63922 Download flag UPLFLG F9B3 63923 Upload flag DNLPNT F9B4 63924 Down load pointer TELPRV F9B6 63926 Previous character for UP/DOWN load SNDSFT F9B7 63927 SI/SO status for send RCVSFT F9B8 63928 SI/SO status for receive CRTFLG F9B9 63929 CRT flag for CONOUT's use MENFLG F9BA 63930 Flag for menu mode MFCFLG F9BB 63931 Menu subcommand flag OFSSAV F9BC 63932 Offset save for hook dispatch POSSAV F9BD 63933 Position save for INLIN CSFGSV F9BE 63934 Save area for CSRFLG FDSSAV F9BF 63935 Save area for function key display flag BINADD F9C0 63936 Location of machine language program (load or save) BINLEN F9C2 63938 Length of machine language proram (load or save) BINEXE F9C4 63940 Execution address for machine language program ;Is set unconditionally by RLOADM TOTOFS F9CA 63946 Total number of bytes since load executed HOKTBL F9CC 63948 Start of dispatch table for hooks | | +-----------------------------------------------+ | | These hooks are normally set to RET (219,127) | | +-----------------------------------------------+ | | -Addr- -Offset- | Name Hex Dec Notes | --------- --- -- -------------------------------- | H.CLEAR 63948 000 0 Called from 04181 | H.MAXRAM 63950 002 2 Not used in this implementation | H.CHGET1 63952 004 4 Called from 01756 | H.CHSNS 63954 006 6 Called from 01850 | H.CHPUT 63956 008 8 Called from 04367 | H.LCDPUT 63958 00A 10 Called from 04374 | H.CHPLPT 63960 00C 12 Called from 018DD | H.SETFIL 63962 00E 14 Called from 04E74 | H.INDSKC 63964 010 16 Called from 05020 | H.RSLFIL 63966 012 18 Called from 05078 | H.BAKUPT 63968 014 20 Called from 051B4 | H.NTFLO 63970 016 22 Called from 04F00 | H.SAVE 63972 018 24 Called from 04F85 | H.NOFOR 63974 01A 26 Called from 04EBB | H.MERGE 63976 01C 28 Called from 04F30 | H.NULOPN 63978 01E 30 Called from 04ED3 | H.GETPTR 63980 020 32 Called from 04E55 | H.FILOU1 63982 022 34 Called from 04FFB | H.BINSAV 63984 024 36 Called from 04FB5 | H.BINLOD 63986 026 38 Called from 04FBA | H.EOF 63988 028 40 Called from 01CFE | H.PARDEV 63990 02A 42 Called from 05211 | H.NODEVN 63992 02C 44 Called from 0522F | H.DEVNAM 63994 02E 46 Called from 0523F | H.POSDSK 63996 030 48 Called from 05232 | H.GENDSP 63998 032 50 Called from 052B9 | H.FILES 64000 034 52 Called from 0211D | H.CHGCON 64002 036 54 Called from 02041 | H.MSVB 64004 038 56 Called from 05981 | H.MSVC 64006 03A 58 Called from 05935 | H.MLDB 64008 03C 60 Called from 0249D | H.MLDC 64010 03E 62 Called from 0257A | H.PCPINL 64012 040 64 Called from 0479E | H.PCINL 64014 042 66 Called from 047AA | H.CHKHIM 64016 044 68 Called from 028F1 | H.ESCAPE 64018 046 70 Called from 04471 | H.TELFNK 64020 048 72 Called from 052DC | H.TRMSTA 64022 04A 74 Called from 05388 | H.TRMEND 64024 04C 76 Called from 055F3 | H.COMOPN 64026 04E 78 Called from 01BE4 | H.COMCLS 64028 050 80 Called from 01C01 | H.SD232C 64030 052 82 Called from 06EBE | H.MPXSEL 64032 054 84 Called from 06FB2 | H.TELERR 64034 056 86 Called from 052EA | H.PRTTTL 64036 058 88 Called from 07E47 | H.UPLD 64038 05A 90 Called from 05501 | H.TEXT 64040 05C 92 Called from 0623A | | +------------------------------------------------+ | | These hooks are normally set to FCERR (135,11) | | +------------------------------------------------+ | | -Addr- -Offset- | Name Hex Dec Notes | -------- --- --- ----------------------------------------- | H.WIDTHS 64042 05E 94 Called from 01FDF | H.SCREEN 64044 060 96 Called from 0204A | H.TVOPN 64046 062 98 Called from 0196C | H.TVCLS 64048 064 100 Not used in this implementation | H.TVOUT 64050 066 102 Called from 0196E | H.TVINP 64052 068 104 Called from 01970 | H.TVBCK 64054 06A 106 Called from 01672 | H.WAOPN 64056 06C 108 Called from 01CF6 | H.WACLS 64058 06E 110 Called from 01CF8 | H.WAINP 64060 070 112 Called from 01CFA | H.WABCK 64062 072 114 Called from 01CFC | H.LOF 64064 074 116 Called from 05201 | H.LOC 64066 076 118 Called from 05203 | H.LFILES 64068 078 120 Called from 05205 | H.DSKI$ 64070 07A 122 Called from 05209 | H.DSKO$ 64072 07C 124 Called from 05207 | H.KILL 64074 07E 126 Called from 02189 | H.NAME 64076 080 128 Called from 02239 | H.MSAVE 64078 082 130 Called from 0265B | H.MLOAD 64080 084 132 Called from 02894 | H.GLINE 64082 086 134 Called from 01F74 | H.COLOR 64084 088 136 Called from 01FE3 | H.CMD 64086 08A 138 Called from 01FE1 | H.STATUS 64088 08C 140 Called from 01FE5 | H.DSKF 64090 08E 142 Called from 0520B | H.FPOS 64092 090 144 Called from 0520D | H.FORMAT 64094 092 146 Called from 0520F | REVTBL FA60 64096 Reverse attribute table TXTEND FA88 64136 Current end of .DO storage DIMFLG FA8A 64138 Flag to find array variable VALTYP FA8B 64139 Type flage for value in FAC OPRTYP FA8C 64140 Same as dores DORES FA8C 64140 Flag to crunch reserved words in strings DONUM FA8D 64141 Flag FF means numbers in strings are crunched CONTXT FA8E 64142 Place to store txtpnt after constant scanned CONSAV FA90 64144 Token for scanned constant CONTYP FA91 64145 Saved constant VALTYP CONLO FA92 64146 Constant buffer MEMSIZ FA9A 64154 Highest location in memory TEMPPT FA9C 64156 Pointer to first free temp discriptor TEMPST FA9E 64158 Storage for numtmp temp discriptors DSCTMP FABC 64188 Result discriptor for string functions FRETOP FABF 64191 Top of string free space TEMP3 FAC1 64193 Multipurpose string register TEMP8 FAC3 64195 Used in garbage collection ENDFOR FAC5 64197 Save text pointer at end of for statement DATLIN FAC7 64199 Data line number SUBFLG FAC9 64201 Flag to allow subscripted variables in functions USFLG FACA 64202 ?? FLGINP FACA 64202 Flag to indicate INPUT or READ statement TEMP FACB 64203 Used by misc. Microsoft routines as parameter pass PTRFLG FACD 64205 Flag 0 if no line numbers converted SAVTXT FACE 64206 Save for TXTPNT used by RESUME SAVSTK FAD0 64208 Save for SP used by RESUME ERRLIN FAD2 64210 Line number of last error DOT FAD4 64212 Current line for edit and list ERRTXT FAD6 64214 Text pointer for use by RESUME ONELIN FAD8 64216 "ON ERROR" line number ONEFLG FADA 64218 Flag 1 if in error recovery routine TEMP2 FADB 64219 Formula evaluator temporary storage OLDLIN FADD 64221 Old line number set by ^C,STOP, or END OLDTXT FADF 64223 Old text pointer points to next line to execute ASCTAB FAE1 64225 Pointer to start of ascii files BINTAB FAE3 64227 Pointer to start of binary files VARTAB FAE5 64229 Pointer to start of simple variable space ARYTAB FAE7 64231 Pointer to beginning of array table STREND FAE9 64233 End of storage in use DATPTR FAEB 64235 Pointer to current data item DEFTBL FAED 64237 Table of implicit variable definitions PRMSTK FB07 64263 Previous definition block on stack PRMLEN FB09 64265 Number of bytes in active table PARM1 FB0B 64267 Active parameter definition table PRMPRV FB0C 64268 Pointer at previous parameter table PRMLN2 FB0E 64270 Size of paramter block being built PARM2 FB10 64272 Place to keep parameters being made PRMFLG FB11 64273 Used by PTRGET reference to PARM1 ARYTA2 FB12 64274 Stop point for simple search NOFUNS FB14 64276 00 if no functions active TEMP9 FB15 64277 Garbage collection temporary storage FUNACT FB17 64279 Number of active functions VLZDAT FB19 64281 Character replaced by zero by VAL EXPAF FB1A 64282 Exponent adjustment factor EXPTMP FB1B 64283 Temp FAC save DFACLO FB24 64292 Double precision accumulator FACLO FB28 64296 Single precision accumulator FAC FB2B 64299 Exponent of single precision ARGLO FB2E 64302 Secondary double precision accumulator ARG FB35 64309 Exponent for ARGLO FBUFFER FB36 64310 Used by FOUT to convert number to string MAXDRV FB61 64353 Maximum drive number MAXFIL FB62 64354 Current maximum file number {read only} FILTAB FB63 64355 Points to the address of the file data DRVTAB FB65 64357 Points to the address of the drive data NULBUF FB67 64359 Points to the file #00 buffer CURDRV FB69 64361 Flag 200 if drive 1 0 if drive 0 DRVPTR FB6A 64362 Points to drive data of selected drive PTRFIL FB6C 64364 Points to file data of selected file FREPLC FB6E 64366 Point to free slot in buffer LSTFRE FB70 64368 Sector and slot #'s of free slot RUNFLG FB72 64370 ?? FILMOD FB72 64370 Hold mode during file open CMDHED FB73 64371 Place to store command file header FILNAM FB78 64376 9 byte area for setting filenames for search or open FILNM2 FB81 64385 Format as filname, but used in NAMEB LSTTRK FB8A 64394 Last track accessed by DSKI DSKO LSTSCT FB8B 64395 Last sector accessed by DSKI DSKO NLONLY FB8C 64396 Flag to show loading program or not SAVFLG FB8D 64397 Flag non-zero if saving program DSKBSY FB8E 64398 Non zero if disk busy ERRCNT FB8F 64399 # errors on current function ERRCN1 FB90 64400 # errors on raw data transfer RAWFLG FB91 64401 Zero for read after write EBCFLG FB92 64402 Flag 100 for EBCDIC conversion SAVEBC FB93 64403 Saves drive EBCDIC status STAT0 FB94 64404 Interface status STAT1 FB95 64405 Disk status LASTFR FB96 64406 ?? TSTACK FB96 64406 Top of stack LINE0 FBC0 64448 Screen buffer 0 - previous page for telecom LINE1 FD00 64768 Screen buffer 1 - echos LCD WRKRAM FE40 65088 Start of I/O system work space XONOFF FE40 65088 Flag (00) means XOF has not been received INHDSP FE41 65089 Flag (FF)=XOF received, so freeze display INHBIT FE42 65090 Flag (0) XON/XOF disabled COMACT FE43 65091 Current value of multiplexor selection ROMSEL FE44 65092 Copy of port 090 iocnt COMBLK FE45 65093 COM1: queue CMPNT FE45 65093 Character count RDADDR FE46 65094 Read pointer WTADDR FE47 65095 Write pointer CMERR FE48 65096 Error pointer CMFLG FE49 65097 Flag (0)=XOF has been sent BAUDRT FE4A 65098 Baud rate table entry address COMMSK FE4C 65100 Mask AND'ed with data read by serial port KEYWRK FE4D 65101 Keyboard workspace KYSCNX FE4D 65101 Flag to determine if keyscan to be done KYCLRX FE4E 65102 ?? KYDATA FE4F 65103 Storage for keyboard matrix read KYMODE FE60 65120 Keyboard mode storage ;Bit 0- shift ;Bit 1- control ;Bit 2- graphic ;Bit 3- kana ;Bit 4- numeric ;Bit 5- caps lock ;Bit 6- n/a ;Bit 7- break/pause KYHOW FE61 65121 Mode storage of last keypress for repeat KYREPT FE62 65122 Wait count for repeat KYWHAT FE63 65123 Flag (FF)=no keypress; (01)=new key; (00)=rept KYBCNT FE68 65128 Number of characters in KYRDBF KYRDBF FE69 65129 Keyboard queue BRKCHR FEA9 65193 Int keyboard leaves break character here as flag FNKSTS FEAA 65194 Function key display status WORK FEAB 65195 Work space for LCD driver WORK1 FEB1 65201 Storage for character under cursor CSRSTS FEB7 65207 Cursor status CSRCNT FEB8 65208 Time til next cursor blink LCTEY FEB9 65209 Cursor position Y LCTEX FEBA 65210 Cursor position X TMPRM3 FEBB 65211 Physical LCD op temporary storage LCDACT FEBD 65213 Indicate writing to LCD CGPNTR FEBF 65215 User definer CG data block DSKMOD FEC1 65217 Flag to indicate if disk code is loaded DSKTMO FEC2 65218 Disk/ram time out constants BOTFLG FEC3 65219 Indicates in boot procedure COMBUF FEC4 65220 Data buffer for COM: CMEND FFC2 65474 Last character of COM buffer ============================================================================= * RESTART VECTORS * Name Opcode Description ------ ------ ----------------------------------------------- SYNCHK RST 1 See if char is the next byte at TXTPNT [HL] CHRGET RST 2 Get a character from SYSIN COMPAR RST 3 Compare DE and HL, A is destroyed [HL]-[DE] OUTCHR RST 4 Send a character to SYSOUT GETYPE RST 5 Fetch VALTYP FSIGN RST 6 Get sign of floating point number HOOK RST 7 Hook table dispatch routine - Next byte in your program after this instruction is the offset. ============================================================================= * HARDWARE PORT DEFINITIONS * -Port- Name Hex Dec Notes -------- --- --- ----------------------------------------- A8255 070 112 Video interface port A (8255) B8255 071 113 Video interface port B (8255) C8255 072 114 Video interface port C (8255) CW8255 073 115 Video interface command/mode port (8255) ROMAH 080 128 128k ROM select and MSBIT of address ROMAL 084 132 Lowest 8 bits of extended ROM address ROMAM 088 136 Middle eight bits of 128k ROM address ROMRD 08C 140 Read data port for 128k ROM IOCNT 090 144 I/O control port BIT 0-Bank #0 select BIT 1-Bank #1 select BIT 2-Bank #2 (0000-7FFF) BIT 3-Bank #2 (8000-FFFF) BIT 4-Clock strobe BIT 5-Cassette motor BIT 6&7- Serial interface multiplexor 00=Not used 01=RAM file 10=F/D interface 11=COM port RS232C IOSTS 0A0 160 Return status of IOCNT port BNKSTT 0A0 160 Current bank number is stored here PRTSTB 0A1 161 Printer strobe BNKSEL 0A1 161 This port is used to set the current bank CS8155 0B8 184 8155 command/status port PORTA 0B9 185 Printer data KEYBOARD STROBE LCD CHIP SELECT CLOCK DATA PORTB 0BA 186 Bit 0&1 LCD block select BIT 2-Disable music output BIT 3-CAR detect(0)/RING detect(1) BIT 4-Disable auto power off BIT 5-Disable buzzer BIT 6-DTR ON BIT 7-RTS ON PORTC 0BB 187 Bit 0-clock data in BIT 1-Printer select BIT 2-Printer busy BIT 3-Bar code reader data in BIT 4-CTS IN BIT 5-DSR IN TIML 0BC 188 Low byte of timer TIMH 0BD 189 High byte of timer count TXRXD 0C8 200 6402 data register CS6402 0D8 216 RS232 command & status port KYRTIN 0E8 232 Read keyboard matrix port LCDCM 0FE 254 LCD command/status port LCDDT 0FF 255 LCD data port