MKROM docs ~~~~~~~~~~ MKROM library provides the command MKROM which gets a bit closer to MAKEROM.EXE program in the hp tools package. Users with previous experience with MAKEROM should have no trouble using this program, for others I recommend reading MAKEROM.DOC too. !!! MKROM needs <-RPL-> library to work. !!! !!! MKROM uses low level entries in <-RPL-> !!! !!! so MKROM must be specially compiled for !!! !!! the <-RPL-> version you're using. !!! Tokens used: LIBRARY hhh [xEXTERNAL/EXTERNAL sss] hhh = library number in hex Starts library compilation. If no LIBRARY token is found in the source MKROM works just like ->RPL. Following external definitions are scanned to mark which names are to be interpreted as ROMPTRs. xEXTERNAL defines a visible romptr, EXTERNAL a hidden ROMPTR. Names defined by xEXTERNAL are called by adding 'x' to the front of sss. The order of xEXTERNAL/EXTERNAL definitions define the romptr numbers to assign for the names so that names defined by xEXTERNAL are counted from 0 upwards first. Currently libraries cannot be embedded into other source, use INCLUDE to get around this problem by including the makefile for the library. ENDLIB Marks the end of a library. (Hash and link tables are formed) xTITLE "ssss" Sets library title. Default is no title. xCONFIG Marks config program to be next in stream. Default is no config. xMESG Marks message table to be next in stream. Default is no table. xNAME sss Marks a visible romptr named sss (defined by xEXTERNAL) sNAME sss hhh Marks a visible romptr named sss (defined by xEXTERNAL) Assigns hhh as the first hash to use when building hash table. If hhh = NIL a null name is used as the hash name. tNAME sss hhh Assigns a new hash name (hhh) for romptr sss. Overrides name set by xNAME, but not the one set by sNAME. A romptr can have several hash names, which all can be typed, the one defined first is the one shown on stack & library menu. If hhh = NIL a null name is used as the hash name. NULLNAME sss Marks a hidden romptr named sss. Default hash name is NIL. The difference between NULLNAME and xNAME (+sNAME): NULLNAME does not insert any code into the stream, xNAME (+sNAME) inserts the library number and command number to the stream. As with MAKEROM the user is assumed to take care of the library header field for xNAMEs (+sNAMEs) SOURCE sss Redefines default source directory to be in a port. Purpose is to get more free RAM for the compilation process just by giving a 'makefile' as argument to MKROM. :&:{ sss IDname } is used to recall the source. If sss = NIL current directory is used again. INCLUDE sss Includes the source stored into a variable called sss into the current location. Obeys directory defined by SOURCE. INCLOB sss Includes the object stored into a variable called sss into the current location. Obeys directory defined by SOURCE. If LIBRARY token has been met, all ID->ROMPTR conversions are done as implied by the external definitions. No 'x' header is assumed for the IDs defined by xEXTERNAL. Example makefile skeleton: ------------------------------------------------------------------------------- ASSEMBLE xxROMID EQU #nnn RPL LIBRARY nnn xEXTERNAL sss1 EXTERNAL sss2 xTITLE "Title V1.0" (SOURCE dirname) xCONFIG :: DOBINT xxROMID TOSSRP ; (xMESG INCLOB MsgArry) NIBB 1 8 xNAME sss1 INCLUDE Name1 NULLNAME sss2 INCLUDE Name2 ENDLIB ------------------------------------------------------------------------------- Notes: The names used by INCLUDE/INCLOB have no connection whatsoever to the names defined by xNAME etc. Use NIBB 1 8 in front of xNAME and sNAME tokens to mark a normal cmd. Use NIBB 1 000 to mark a function. (If libnum < 1792)