REXCPM: Difference between revisions
(153 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
[[Image:REXCPM.PNG]] | [[Image:REXCPM.PNG]] | ||
Updated November 4, 2023 | |||
<big>'''SRAM'''</big> | |||
REXCPM is made of SRAM. Unlike REX#, which is made of FLASH, if you were to remove REXCPM from your laptop, it will | |||
after some time (could be an hour, could be a day, depends on the device) it will eventually discharge and need | |||
to be re-initialized. | |||
---> I have a backup and restore utility, provided below, so that you can always store your REXCPM State and | |||
easily recover it. | |||
= NEWS = | |||
'''Version 2.2 firmware is now available''' See the Software section below for details. | |||
Version 2.2 offers the following improvements: | |||
* introduction of a new feature - RAM image write-protect | |||
* some improvements in how RAM images are managed | |||
* list of bug fixes and features is captured below - see Features and Bug Fixes | |||
'''Version 2.1 firmware is now available!''' See the Software section below for details. | |||
Version 2.1 offers the following improvements: | |||
* repaired a number of defects, most importantly repaired a defect when trying to use UR-2 | |||
'''Version 2''' offers the following improvements: | |||
* First, and most importantly, a serious bug that impacted stability is addressed in Version 2 build 11 (as well as Version 1 build 43) | |||
* so you should definitely be upgrading to V2 build 11 (or newer) or updating to V1 build 43 | |||
* Version 2 also includes some new features: | |||
** integrated VT100 video driver support, see --> [[Integrated VT100 driver|REX# / REXCPM Integrated VT100 driver]] | |||
** CNTL-A to start REX Manager quickly from Menu | |||
= Overview = | |||
<big>'''What is REXCPM?'''</big> | <big>'''What is REXCPM?'''</big> | ||
REXCPM is an add-on memory card that plugs into the Option ROM socket in a supported laptop, augmenting significantly the amount of memory in the laptop as well as what that memory can be used for. REXCPM changes the way the laptop memory works: | |||
* REXCPM provides up to 4MB of battery backed SRAM to the laptop. | |||
REXCPM is an add-on SRAM (not FLASH) memory card that plugs into the Option ROM socket in a supported laptop, augmenting significantly the amount of memory in the laptop as well as what that memory can be used for. REXCPM changes the way the laptop memory works: | |||
* REXCPM provides up to 4MB of battery backed <big>SRAM</big> to the laptop. | |||
* Like REX, REXCPM puts bank switched memory into the OPTION ROM memory bank (1x32k bank) | * Like REX, REXCPM puts bank switched memory into the OPTION ROM memory bank (1x32k bank) | ||
* In addition, REXCPM disables (while installed) the internal installed RAM, and replaces it with bank switched memory (2x16k banks) | * In addition, REXCPM disables (while installed) the internal installed RAM, and replaces it with bank switched memory (2x16k banks) | ||
<big>'''Why?'''</big> | <big>'''Why?'''</big> | ||
Line 16: | Line 61: | ||
...and of course, all of the classic capabilities of REX can be supported using SRAM as well! So REXCPM is really all of the best aspects of REX, combined now with a custom, supported CP/M implementation, opening the door to a wide range of new applications! | ...and of course, all of the classic capabilities of REX can be supported using SRAM as well! So REXCPM is really all of the best aspects of REX, combined now with a custom, supported CP/M implementation, opening the door to a wide range of new applications! | ||
<big>'''Main Features and Functions of REXCPM'''</big> | |||
REXCPM (via RXCMGR software) enables several key capabilities for the Model T user. | |||
* Option ROMs: Applications for Model T laptops were originally distributed as Option ROMs. These ROM images may be loaded into flash blocks, and then quickly switched/activated for use by REX Manager. | |||
* RAM Images: Users can quickly backup or restore the current working RAM of the laptop into one of the 32k flash blocks. This provides a great way to store data, programs, or quickly recover from a cold boot situation. | |||
* Quick Menu: the laptop main menu now has some custom keystrokes that speed up REX# usage. | |||
* Active OPTROM display: the main menu also shows the name of the installed option ROM. | |||
* Integrated VT100 external video driver support | |||
* Additional nice things: REX Manager fixes the Y2K date display problem | |||
= Model T variants supported by REXCPM = | |||
* TRS-80 Model 100 | |||
* Tandy 102 | |||
Notes | |||
===== | |||
Model 100: | |||
* In Europe and UK, and probably elsewhere, there are newer versions of M100 that have different boards. | |||
* Model numbers are 26-3801B and 26-3802B. | |||
* REXCPM does not function correctly in these models, due to the significantly different main ROM. | |||
= Links = | = Links = | ||
Line 23: | Line 94: | ||
[[Ordering_Information|REX Products ordering information]] | [[Ordering_Information|REX Products ordering information]] | ||
[[BCR_TTL_SERIAL_HACK|Hack to enable TTL serial data on the BCR port]] | |||
[[NSC800_Conversion|Adapt the NSC800 CPU into the M100]] | |||
The REX functionality included with REXCPM is aligned with REX#. Please visit this page for infomation on using REX#. | |||
[[ | [[REXsharp|REX# wiki page]] | ||
= Status = | = Status = | ||
Line 34: | Line 109: | ||
* Hardware design and test is complete. | * Hardware design and test is complete. | ||
* Inventory status will be kept up to date at the Ordering page. | * Inventory status will be kept up to date at the Ordering page. | ||
= Hardware Installation = | |||
Installation information for Model 100 here ----> [[REXCPM Installation in M100|M100 install]] | |||
Installation information for Tandy 102 here ----> [[REXCPM Installation in T102|T102 install]] | |||
= Quick Start = | = Quick Start = | ||
Line 41: | Line 124: | ||
AS SHIPPED REXCPM CONTAINS NO SOFTWARE!!!! You must INITIALIZE your REXCPM to get started! | AS SHIPPED REXCPM CONTAINS NO SOFTWARE!!!! You must INITIALIZE your REXCPM to get started! | ||
CALL 63012 will not work prior to REXCPM being initialized! | '''IMPORTANT''': CALL 63012 <u>will not work</u> prior to REXCPM being initialized with RXCINI! | ||
Here's what you need to do | Here's what you need to do: | ||
0. Read this entire page! There is information further in the page that you need to know to be able to | 0. Read this entire page! There is information further in the page that you need to know to be able to | ||
initialize the device, and get started | initialize the device, and get started | ||
00. | 00. '''AFTER''' going through the initialization procedure outlined below and the main REX software is loaded | ||
onto your REXCPM, it will be able to be used just like REX. You can review the information at the REX Wiki | |||
page for general information about REX use. But don't jump ahead just yet! | |||
1. Install your REXCPM. Links to information about installation in M100 and T102 is at this page, below. | 1. Install your REXCPM. Links to information about installation in M100 and T102 is at this page, below. | ||
Line 69: | Line 153: | ||
This should start RXCMGR, and should install RXCMGR in the laptop directory. | This should start RXCMGR, and should install RXCMGR in the laptop directory. | ||
= Use with M100CP/M = | = Use with M100CP/M = | ||
Line 84: | Line 164: | ||
CNTL-C from MENU immediately transfers control to CP/M. | CNTL-C from MENU immediately transfers control to CP/M. | ||
In fact, you can use REXCPM hardware exclusively with M100CP/M, and ignore the "REX#" functionality if you want. | |||
This is because CP/M operates independently of REX# memory use. | |||
You can instead install CP/M using the instructions for that, and use CPM.CO to start CP/M. | |||
To help make things easier to recover (from a cold restart) I have made a version of CPM.CO as a .DO file, for easy file transfer to the laptop. | |||
Use this if your CPM.CO file gets corrupted or you need to cold restart. | |||
[[Media:CPM_DO.ZIP|CPM_DO.ZIP]] | |||
You can also configure M100 CP/M to autostart by using the IPL function of the M100. | |||
1. First, run CPM.DO to create CPM.CO. Ensure you can start CP/M by running CPM.CO. | |||
2. Then enter BASIC, type | |||
10 LOADM"CPM.CO" | |||
20 CALL62855 | |||
SAVE "CPMIPL.BA" | |||
IPL "CPMIPL.BA" | |||
Now, you have a program in RAM that will run on power up, or reset. | |||
= Recommended TPDD Server= | |||
Unfortunately it is difficult to guarantee that REX# works under all possible conditions with all possible combinations of TPDD server, cabling options, real serial vs USB, bluetooth etc. | |||
What I use is as follows, and I recommend it as it 100% reliable for me. | |||
* PC (Linux (I use Ubuntu 16.04) or Windows (I use 10)) | |||
* Real RS-232 serial port support | |||
* LaddieAlpha as the TPDD server | |||
* Null modem RS-232 cable | |||
= Documentation = | = Documentation = | ||
The following information applies to REXCPM as well as REX#. | |||
[[REX Manager User Guide for REXsharp]] | |||
= Technical Information = | |||
Work in progress!!! | |||
= Use with MVT100 external Video = | |||
Derived from the TRS-80 Disk Video Interface software (aka Disk Basic), both REX# and REXCPM include support now for the "integrated VT100 Driver". This is provided in V2 software, for M100/T102. | |||
see --> [[Integrated VT100 driver|REX# / REXCPM Integrated VT100 driver]] | |||
= Software = | = Software = | ||
= | The last build of the original V1 release of REXCPM is build 43, and does not include the VT100 driver. | ||
Current REXCPM software is V2.2 build 40, and includes the VT100 driver. | |||
I recommend that all users upgrade to V2.2 software. | |||
You must use the correct utilities to work with each version. This table provides guidance. | |||
{| class="wikitable" | |||
|'''Software'''||'''REXCPM V1'''||'''REXCPM V2'''||'''Note''' | |||
|- | |||
|REXCPM "ROM"||RXC_11.BR build 43||RXC_12.BR build 13 and newer||recommend update to V2 | |||
|- | |||
|RXCUPG||-||Version 1 or newer||use RXCUPG to upgrade REXCPM V1 to V2 | |||
|- | |||
|RXCINI||Version 2 || Version 3 or newer||use the correct utility depending on REXCPM version | |||
|- | |||
|RXCTST||Version 2 || Version 2 or newer||RXCTST is common for both versions of REXCPM | |||
|- | |||
|RXCUTL||Version 2||Version 2 or newer||RXCUTL is common for both versions of REXCPM | |||
|- | |||
|} | |||
Here's the software. Please use the correct utility depending on the REXCPM version. | |||
To simplify obtaining the correct software, you can get them all as a single bundle: | |||
{| class="wikitable" | {| class="wikitable" | ||
|'''REXCPM | |'''REXCPM software and utilities bundle'''||'''Build'''||'''Note'''||'''File'''||'''Release notes''' | ||
|- | |||
|Version 2.2|| 41 || bugfix release V2.2 November 22, 2023||[[Media:REXCPMV22_b41.ZIP|REXCPMV22_b41.ZIP]] || | |||
[[Media:V22_b41.zip|V22_b41.txt]] | |||
|- | |||
|Version 2.2|| 40 || bugfix release V2.2 November 4, 2023||[[Media:REXCPMV22_b40.ZIP|REXCPMV22_b40.ZIP]] || | |||
[[Media:V22_b40.zip|V22_b40.txt]] | |||
|- | |- | ||
| | |Version 2.1|| 19 || bugfix release V2.1 March 14, 2021 ||[[Media:REXCPMV21_b19.ZIP|REXCPMV21_b19.ZIP]]||[[Media:V21_b19.zip|V21_b19.txt]] | ||
|- | |||
|Version 2.1|| 18 || bugfix release V2.1 March 13, 2021 ||[[Media:REXCPMV21_b18.ZIP|REXCPMV21_b18.ZIP]]||[[Media:V21_b18.zip|V21_b18.txt]] | |||
|- | |||
|Version 2|| 13 || initial release of V2 ||[[Media:REXCPMV2_b13.ZIP|REXCPMV2_b13.ZIP]]|| | |||
|- | |||
|- | |||
|Version 1|| 43 || last V1, bug fix ||[[Media:REXCPMV1_b43.ZIP|REXCPMV1_b43.ZIP]]|| | |||
|- | |- | ||
|} | |} | ||
===RXC_1x.BR - "The ROM"=== | |||
As shipped, REXCPM is a blank piece of SRAM. In order to get rolling you need to load in the REXCPM "ROM" application RXC_1x.BR. | |||
Use RXCINI to load the software, and prepare it for first use. If you currently have a working REXCPM, then use RXCINI or RXCUPD to install this software. | |||
Note: REXCPM "ROM" software is based on classic REX with several differences. | Note: REXCPM "ROM" software is based on classic REX with several differences. | ||
Line 118: | Line 282: | ||
Please communicate any bug reports. | Please communicate any bug reports. | ||
===Initialization=== | ===RXCINI - Initialization of a new REXCPM=== | ||
RXCINI is a tool for installing software and/or creating a new directory in REXCPM. | |||
RXCINI | |||
* use for installing software in REXCPM | |||
* also usable to update V1 software or V2 software (ex. bug fix release) | |||
* '''NOT USABLE to upgrade from V1 --> V2. Use RXCUPG''' | |||
* use for erasing and creating a new (blank) directory in REXCPM | |||
* "upgrade" refers to loading a new version of software. | |||
* "update" refers to applying a bug-fix load to the same version software. | |||
Since REXCPM is based on SRAM, and there is no on-board battery (only a large 1000uF capacitor), by the time you receive your REX the memory contents will be blank. So, you have to load REXCPM with the REXCPM application and any option ROMs you want to use. | |||
Of course as soon as you install REXCPM, the M100 NiCd memory battery + the 4xAA batteries provide ample battery backup. | |||
Version Notes: | |||
============== | |||
Version 3: | |||
* updated to work with REXCPM V2 software | |||
Version 2: | |||
* use Version 2 for REXCPM V1 software | |||
Note: | |||
* RXCINI has embedded machine code which is now encoded as ASCII characters supporting 7 bit transfer | |||
* It also loads much more quickly, and includes checksum verification | |||
Note: | |||
* If you get the message "CAN'T RUN" | |||
---> please remove the REX hook (CNTL-X or F7) | |||
---> power cycle | |||
---> and try again | |||
Instructions | Instructions | ||
Line 138: | Line 324: | ||
b. Power cycle once, to ensure the default memory blocks are selected | b. Power cycle once, to ensure the default memory blocks are selected | ||
c. Optionally, cold-rebooting the laptop after a power cycle ensures a clean state. | c. Optionally, cold-rebooting the laptop after a power cycle ensures a clean state. | ||
2. Load RXCINI.DO via serial transfer, or TPDD transfer. It is | 2. Load RXCINI.DO via serial transfer, or TPDD transfer. It is now 7 bit ASCII. | ||
RXCINI.DO contains HEX ASCII encoded machine language, for more reliable transfer. | |||
3. RUN RXCINI.DO in BASIC. | 3. RUN RXCINI.DO in BASIC. | ||
RXCINI.DO allows you to do either or both of two processes: | RXCINI.DO allows you to do either or both of two processes: | ||
Line 148: | Line 334: | ||
starting from scratch and there is no existing directory (or stored images!). | starting from scratch and there is no existing directory (or stored images!). | ||
4. Configure RXCINI.DO to do the following: | 4. Configure RXCINI.DO to do the following: | ||
a. indicate YES to "Load REX code:" | <big>'''IMPORTANT!!!'''</big> | ||
b. indicate YES to "Init REX dir :" | ''' FOR Initialization of a shipped REXCPM (install software AND blank directory)''' | ||
a. indicate '''YES''' to "Load REX code:" | |||
b. indicate '''YES''' to "Init REX dir :" | |||
''' FOR bug-fix upgrade of REXCPM (install software only; maintain directory)''' | |||
a. indicate '''YES''' to "Load REX code:" | |||
b. indicate '''NO''' to "Init REX dir :" | |||
c. execute these choices | c. execute these choices | ||
5. The loader will load up the machine language routine, and begin to execute | 5. The loader will load up the machine language routine, and begin to execute | ||
6. To LOAD a fresh REXCPM application, RXCINI.DO accesses a remote TPDD device to get the binary | 6. To LOAD a fresh REXCPM application, RXCINI.DO accesses a remote TPDD device to get the binary 24k file. (28k in V1) | ||
RXCINI.DO contains it's own TPDD access routines, and does not need a DOS. | RXCINI.DO contains it's own TPDD access routines, and does not need a DOS. | ||
a. Ensure a TPDD device is ready to go with the source file as needed. | a. Ensure a TPDD device is ready to go with the source file as needed. | ||
Line 160: | Line 351: | ||
When complete, REXCPM should have a fresh "ROM" load for REXCPM, and a freshly initialized directory. | When complete, REXCPM should have a fresh "ROM" load for REXCPM, and a freshly initialized directory. | ||
From BASIC, | To install RXCMGR: | ||
CALL 63012 | --->Power off. | ||
to | --->Power on. | ||
--->From BASIC, | |||
---> CALL 63012 | |||
You should see RXCMGR as a MENU entry. Selecting that will start RXCMGR software. | |||
Note: | |||
===== | |||
If you see an error message - "CAN'T RUN", this means that REXCPM is not in the default state. | |||
See instruction #1 above! | |||
===RXCUPG - Upgrading the REXCPM Application=== | |||
REXUPG is a utility that is dedicated to upgrading the REXCPM V2 software. | |||
RXCUPG | |||
* use for upgrading REXCPM from V1 to V2 software | |||
* use to apply any future updates in the V2 stream to REXCPM | |||
* requires RXC_12.BR (only loads software with this file name) | |||
* "upgrade" refers to loading a new version of software. | |||
* "update" refers to applying a bug-fix load to the same version software. | |||
Version Notes: | |||
============== | |||
Version 1: | |||
* initial version | |||
Note: | |||
* RXCUPG has embedded machine code which is now encoded as ASCII characters supporting 7 bit transfer | |||
* It includes checksum verification | |||
Note: | |||
* If you get the message "CAN'T RUN" | |||
---> please remove the REX hook (CNTL-X or F7) | |||
---> power cycle | |||
---> and try again | |||
Instructions | |||
============ | |||
1. Make sure REXCPM is in default state, meaning | |||
a. RXCMGR is not running (use CNTL-X to remove hooks, or F7 from RXCMGR) | |||
b. Power cycle once, to ensure the default memory blocks are selected | |||
c. Optionally, cold-rebooting the laptop after a power cycle ensures a clean state. | |||
2. Load RXCUPG.DO via serial transfer, or TPDD transfer. It is now 7 bit ASCII. | |||
RXCUPG.DO contains HEX ASCII encoded machine language, for more reliable transfer. | |||
3. To LOAD a fresh REXCPM application, RXCUPG.DO accesses a remote TPDD device to get the binary 24k file. | |||
RXCUPG.DO contains it's own TPDD access routines, and does not need a DOS. | |||
a. Ensure a TPDD device is ready to go with the source file as needed. | |||
b. Ensure that RXC_12.BR is accessible. | |||
4. RUN RXCUPG.DO in BASIC. | |||
RXCUPG.DO allows you to LOAD a REXCPM application (24kB file) | |||
RXCUPG.DO maintains the existing image directory. | |||
Configure RXCUPG.DO to do the following: | |||
a. indicate YES to "Load REXCPM code?:" | |||
b. execute these choices | |||
5. The loader will load up the machine language routine, and begin to execute | |||
6. When prompted, supply the correct file name (6 characters, no extension, case sensitive) | |||
In this case, "RXC_12" | |||
File extension is automatically set to .BR | |||
7. When complete, REXCPM should have a fresh "ROM" load for REXCPM, and a freshly initialized directory. | |||
To install RXCMGR: | |||
--->Power off. | |||
--->Power on. | |||
--->From BASIC, | |||
---> CALL 63012 | |||
You should see RXCMGR as a MENU entry. Selecting that will start RXCMGR software. | |||
Note: | Note: | ||
If you see an error message - " | ===== | ||
If you see an error message - "CAN'T RUN", this means that REXCPM is not in the default state. | |||
See instruction #1 above! | |||
===RXCTST - Test your REXCPM Installation=== | |||
A tool is available to test your REXCPM in the laptop after it is installed. | |||
===Backup and Restore=== | RXCTST | ||
* use for testing an installed REXCPM | |||
* this program will completely erase all memory in REXCPM | |||
* this program erases the REXCPM software and image directory | |||
* use with caution! | |||
* this tool tests each block of SRAM to see if it works. | |||
* you have some options in the tool. | |||
Notes: | |||
====== | |||
* Blocks are switched in and tested one at a time | |||
* Memory is tested from bottom address 8000h | |||
* To speed up the test you can reduce the address range, and/or skip bytes | |||
* You can select the stop address - either C000h (full) or 9000h (partial) | |||
* You can either test every byte, or skip to every 16th byte | |||
About Version 2 | |||
=============== | |||
* Faster loading, safer 7 bit HEX ASCII machine language encoding | |||
* If you get the message "CAN'T RUN" | |||
---> please remove the REX hook (CNTL-X or F7) | |||
---> power cycle | |||
---> and try again | |||
Instructions | |||
============ | |||
1. Make sure REXCPM is in default state, meaning | |||
a. RXCMGR is not running (use CNTL-X to remove hooks, or F7 from RXCMGR) | |||
b. Power cycle once, to ensure the default memory blocks are selected | |||
c. Optionally, cold-rebooting the laptop after a power cycle ensures a clean state. | |||
2. Load RXCTST.DO via serial transfer, or TPDD transfer. It is 8 bit ASCII. | |||
If transferring via serial, use 8 bit mode, not 7 bit. RXCTST.DO contains encoded machine language. | |||
3. RUN RXCTST.DO in BASIC. | |||
4. Make selections to configure the test. | |||
5. The loader will load up the machine language routine, and begin to execute | |||
6. Let the program run | |||
7. It will report the size of RAM; 2MB = 128, 4MB = 256. It will report any errors or success. | |||
Of course, you have just completely erased your REXCPM at this point. Use RXCINI to rebuild it. | |||
===RXCUTL - Backup and Restore=== | |||
A tool is available for backing up or restoring REXCPM memory contents to TPDD. | A tool is available for backing up or restoring REXCPM memory contents to TPDD. | ||
RXCUTL | |||
* use for backup or restore of the stored information in REXCPM | |||
* supports backup/restore for either REXCPM or M100 CP/M | |||
Some of the REXCPM SRAM is dedicated to CP/M while other memory is dedicated to REX functionality. | Some of the REXCPM SRAM is dedicated to CP/M while other memory is dedicated to REX functionality. | ||
Backup and restore of either the REX side or the CP/M side gives the user a means to create complete images of the memory over time, so if needed the machine can be brought back to the desired state. | |||
Notes: | |||
====== | |||
* Either a Backup or Restore process | * Either a Backup or Restore process | ||
* REXCPM or CP/M memory regions | * REXCPM or CP/M memory regions | ||
Line 181: | Line 499: | ||
For 2MB, 40 32kB blocks. For 4MB, 104 32kB blocks. | For 2MB, 40 32kB blocks. For 4MB, 104 32kB blocks. | ||
* Serial port speed - 19200 8N1 or 76800 8N1 "Large Packet" | * Serial port speed - 19200 8N1 or 76800 8N1 "Large Packet" | ||
About Version 2: | |||
================ | |||
* Faster loading, safer 7 bit HEX ASCII machine language encoding | |||
* If you get the message "CAN'T RUN" | |||
---> please remove the REX hook (CNTL-X or F7) | |||
---> power cycle | |||
---> and try again | |||
The tool uses the standard RS-232 port on the M100. Standard TPDD | The tool uses the standard RS-232 port on the M100. Standard TPDD servers can operate at 19200 baud, but LaddieAlpha is capable of operation at 76800 baud, and also able to support large packet sizes, both of which help to speed up the process. | ||
NOTE: LaddieAlpha with 76800 Large Block support is not generally available yet. Stay tuned. | NOTE: LaddieAlpha with 76800 Large Block support is not generally available yet. Stay tuned. | ||
Line 206: | Line 532: | ||
|} | |} | ||
Instructions | Instructions | ||
Line 221: | Line 540: | ||
c. Optionally, cold-rebooting the laptop after a power cycle ensures a clean state. | c. Optionally, cold-rebooting the laptop after a power cycle ensures a clean state. | ||
2. load RXCUTL.DO into the M100 using a terminal program on PC (lots of ways to do this) | 2. load RXCUTL.DO into the M100 using a terminal program on PC (lots of ways to do this) | ||
It is | It is 7 bit ASCII. RXCINI.DO contains HEX ASCII encoded machine language. | ||
3. Enter BASIC and type RUN"RXCUTL.DO" | 3. Enter BASIC and type RUN"RXCUTL.DO" | ||
4. Select Process, REX or CP/M, and speed | 4. Select Process, REX or CP/M, and speed | ||
5. The loader will load up the machine language routine, and begin to execute | 5. The loader will load up the machine language routine, and begin to execute | ||
6. Ensure that a TPDD | 6. Ensure that a TPDD server is attached to the serial port | ||
7. For either process, supply 6 character case-sensitive name for the file. | 7. For either process, supply 6 character case-sensitive name for the file. | ||
File extension is set to .BB | File extension is set to .BB | ||
8. Once executed, RXCUTL will attempt to either write or read all required data to/from REXCPM SRAM. | 8. Once executed, RXCUTL will attempt to either write or read all required data to/from REXCPM SRAM. | ||
Note: | |||
===== | |||
If you see an error message - "CAN'T RUN", this means that REXCPM is not in the default state. | |||
See instruction #1 above! | |||
=TPDD Server Compatibility= | |||
REXCPM has the same compatibility with TPDD servers as does REX#. Please consult the REX# page for this information. | |||
= Option ROM Images for Download = | |||
[[Media:M100_OPTION_ROMS.zip|Validated OPTROM Images for M100/T102]] | |||
[[Media:T200_OPTION_ROMS.zip|Validated OPTROM Images for T200]] | |||
[[Media:NEC__OPTION_ROMS.zip|Validated OPTROM Images for NEC]] | |||
= Acknowledgements = | = Acknowledgements = | ||
Line 249: | Line 583: | ||
= FAQ = | = FAQ = | ||
'''Q. I have heard that the SRAM used in REXCPM is unreliable because it needs battery backup! Is that true?''' | |||
A. Unlike REX#, REXCPM uses SRAM. SRAM does need "keep-alive" voltage to prevent memory loss. The SRAM in REXCPM is as reliable as the SRAM used in the M100 as system memory. Three voltage sources keep the SRAM alive and well taken care of. | |||
1. Specific to REXCPM, there is an onboard 1000 uF capacitor to protect REXCPM when removed. | |||
2. The M100 NiCd battery. This provides 3.6V and about 60 mAh. | |||
3. The installed 4xAA batteries, that provide ~6V and ~2000mAh or so. | |||
All 3 of these voltage sources protect REXCPM when it is installed. When REXCPM is removed from the laptop, then only the 1000uF capacitor provides keep-alive voltage, so it is important for to reinstall REXCPM (including adapter board!) without much delay if you want to keep the memory intact. | |||
So, just like the M100 itself retains memory quite effectively, so too does REXCPM. | |||
'''Q. I loaded and ran RXCINI.DO. Why don't I have a TS-DOS ROM image loaded?!''' | |||
A. Unlike REX#, REXCPM ships as a blank SRAM. RXCINI takes care of loading the REX Manager software, but stops there. This means that the user must load the first ROM image (maybe TS-DOS is a great choice here). It would be useful however if RXCINI also loaded up TS-DOS, so I will update that utility to do so.... | |||
'''Q. I am having trouble loading RXC***.DO using serial transfer. It keeps crashing!''' | '''Q. I am having trouble loading RXC***.DO using serial transfer. It keeps crashing!''' | ||
Line 285: | Line 636: | ||
A. Yes. There are 3 banks: Option ROM 0000-7FFF, low RAM 8000-BFFF and high RAM C000-FFFF. All 3 are accessible but the only practical use case is for Option ROM since BASIC uses both RAM banks. The BASIC program would need to make use of a machine language routine to set the register value in REXCPM to the specific memory bank of interest. Then, to access the RAM you would need another machine language routine. Examples of such code can be made available at this wiki. | A. Yes. There are 3 banks: Option ROM 0000-7FFF, low RAM 8000-BFFF and high RAM C000-FFFF. All 3 are accessible but the only practical use case is for Option ROM since BASIC uses both RAM banks. The BASIC program would need to make use of a machine language routine to set the register value in REXCPM to the specific memory bank of interest. Then, to access the RAM you would need another machine language routine. Examples of such code can be made available at this wiki. | ||
= Compatibility Issues = | |||
'''UR-2 VIEW80 in M100/T102/NEC''' | |||
When you enable VIEW80 in UR-2, the timer hook is used by UR-2 to alter the screen. This disables REX Manager, and so when you exit UR-2 to MENU, REX# will not be responsive. | |||
Simply run REXMGR again to reactive REX Manager. | |||
= Bugs = | |||
Release 2.2 | |||
Rel 2.2: All: Month October is shown as Ont not Oct. Will be fixed in build 41. | |||
Release 2.1 | |||
Rel 2.1: All: Fix the date display. Fix bugs, and replicate system format for Date display. | |||
Coded R2.2 / Tested | |||
Rel 2.1: M100/T102: Make display tolerant to "hardware scrolling main ROM". | |||
Coded R2.2/ Tested | |||
Rel 2.1: Interworking with actual TPDD does not work. Fix pending. | |||
Coded R2.2 / Tested | |||
Rel 2.1: NEC: noticed that, with only one RAM bank installed, pressing TAB or BANK causes laptop to hang in MENU. | |||
This should not happen. Probably affects T200 as well. Yes it did. | |||
Coded R2.2 / Tested | |||
Rel 2.1: All: Reduce time on power up before option rom is switched, to prevent undesired uninstall of option rom. | |||
Coded R2.2 / Tested | |||
Rel 2.1: T200: UR-2 support seems like it is broken. | |||
Major defect discovered, coding error on my part. Fixed. | |||
Coded R2.2 / tested | |||
= Feature Requests = | |||
Rel 2.1: Request to put an "Overwrite?" option to allow images to be saved when one exists already. Great idea! | |||
Coded R2.2 / Tested | |||
Rel 2.1: All: when switching RAMs, give option to re-save current RAM or not. | |||
Coded R2.2 / Tested | |||
Rel 2.1: M100: add quickmenu command to reNAME or KILL a file in MENU. T200: add quickmenu command to NAME a file in MENU. | |||
Coded R2.2 / Tested | |||
Rel 2.1: All: Allow use to de-install the active ROM, leaving no ROM active. F6. | |||
Coded R2.2 / Tested | |||
Rel 2.1: All: Support write-protect on RAM images. Implemented | |||
Coded R2.2 / Tested | |||
[[Category:Model T Hardware]] | [[Category:Model T Hardware]] |
Latest revision as of 12:20, 16 December 2023
Updated November 4, 2023
SRAM REXCPM is made of SRAM. Unlike REX#, which is made of FLASH, if you were to remove REXCPM from your laptop, it will after some time (could be an hour, could be a day, depends on the device) it will eventually discharge and need to be re-initialized. ---> I have a backup and restore utility, provided below, so that you can always store your REXCPM State and easily recover it.
NEWS
Version 2.2 firmware is now available See the Software section below for details. Version 2.2 offers the following improvements:
- introduction of a new feature - RAM image write-protect
- some improvements in how RAM images are managed
- list of bug fixes and features is captured below - see Features and Bug Fixes
Version 2.1 firmware is now available! See the Software section below for details.
Version 2.1 offers the following improvements:
- repaired a number of defects, most importantly repaired a defect when trying to use UR-2
Version 2 offers the following improvements:
- First, and most importantly, a serious bug that impacted stability is addressed in Version 2 build 11 (as well as Version 1 build 43)
- so you should definitely be upgrading to V2 build 11 (or newer) or updating to V1 build 43
- Version 2 also includes some new features:
- integrated VT100 video driver support, see --> REX# / REXCPM Integrated VT100 driver
- CNTL-A to start REX Manager quickly from Menu
Overview
What is REXCPM?
REXCPM is an add-on SRAM (not FLASH) memory card that plugs into the Option ROM socket in a supported laptop, augmenting significantly the amount of memory in the laptop as well as what that memory can be used for. REXCPM changes the way the laptop memory works:
* REXCPM provides up to 4MB of battery backed SRAM to the laptop. * Like REX, REXCPM puts bank switched memory into the OPTION ROM memory bank (1x32k bank) * In addition, REXCPM disables (while installed) the internal installed RAM, and replaces it with bank switched memory (2x16k banks)
Why?
CP/M. The main goal of REXCPM is to enable support for Philip Avery's port of CP/M 2.2 onto the M100 hardware. CP/M requires the full 64k address space to be RAM in order to operate, and so a RAM based capability is needed.
RAMdisk. CP/M is a disk based operating system. REXCPM, via the 3 bank-switched memory regions, is able to transform the majority of the SRAM resource into a RAM based, battery backed, ultra fast disk.
...and of course, all of the classic capabilities of REX can be supported using SRAM as well! So REXCPM is really all of the best aspects of REX, combined now with a custom, supported CP/M implementation, opening the door to a wide range of new applications!
Main Features and Functions of REXCPM
REXCPM (via RXCMGR software) enables several key capabilities for the Model T user.
- Option ROMs: Applications for Model T laptops were originally distributed as Option ROMs. These ROM images may be loaded into flash blocks, and then quickly switched/activated for use by REX Manager.
- RAM Images: Users can quickly backup or restore the current working RAM of the laptop into one of the 32k flash blocks. This provides a great way to store data, programs, or quickly recover from a cold boot situation.
- Quick Menu: the laptop main menu now has some custom keystrokes that speed up REX# usage.
- Active OPTROM display: the main menu also shows the name of the installed option ROM.
- Integrated VT100 external video driver support
- Additional nice things: REX Manager fixes the Y2K date display problem
Model T variants supported by REXCPM
- TRS-80 Model 100
- Tandy 102
Notes ===== Model 100: * In Europe and UK, and probably elsewhere, there are newer versions of M100 that have different boards. * Model numbers are 26-3801B and 26-3802B. * REXCPM does not function correctly in these models, due to the significantly different main ROM.
Links
REX Products ordering information
Hack to enable TTL serial data on the BCR port
Adapt the NSC800 CPU into the M100
The REX functionality included with REXCPM is aligned with REX#. Please visit this page for infomation on using REX#.
Status
* REXCPM is now generally available, and can be ordered subject to availability. * Hardware design and test is complete. * Inventory status will be kept up to date at the Ordering page.
Hardware Installation
Installation information for Model 100 here ----> M100 install
Installation information for Tandy 102 here ----> T102 install
Quick Start
So, you have just received your REXCPM and want to get going.
AS SHIPPED REXCPM CONTAINS NO SOFTWARE!!!! You must INITIALIZE your REXCPM to get started!
IMPORTANT: CALL 63012 will not work prior to REXCPM being initialized with RXCINI!
Here's what you need to do:
0. Read this entire page! There is information further in the page that you need to know to be able to initialize the device, and get started 00. AFTER going through the initialization procedure outlined below and the main REX software is loaded onto your REXCPM, it will be able to be used just like REX. You can review the information at the REX Wiki page for general information about REX use. But don't jump ahead just yet!
1. Install your REXCPM. Links to information about installation in M100 and T102 is at this page, below. 2. Initialize your REXCPM by running RXCINI.DO. This lets you load the RXCMGR application and initialize the directory. Unlike REX, REXCPM is based on RAM and cannot be shipped pre-programmed. The user must install the RXCMGR application, which is a binary file which must be loaded into a specific memory block in the SRAM. Additionally, the RXCMGR application needs a directory, to track what ROM images are stored in REX. Please scroll down and read about how to use RXCINI.DO. Software is available below. 3. Now you are ready to use REXCPM and RXCMGR. You can use it just like a REX. Create ram backups, load option ROMs etc.
Once initialization is complete, you can access RXCMGR.
Power cycle the laptop to ensure that REXCPM hardware is in the default state. In BASIC, type CALL 63012 This should start RXCMGR, and should install RXCMGR in the laptop directory.
Use with M100CP/M
REX operation and CP/M operation are independent. To install CP/M, follow the instructions on the M100CP/M page. The link to Philip's M100CP/M page is near the top of this page. Once CP/M is running, REX provides a quick mechanism to "jump" into it.
REX Quick Menu function has been expanded to include a new command. CNTL-C from MENU immediately transfers control to CP/M.
In fact, you can use REXCPM hardware exclusively with M100CP/M, and ignore the "REX#" functionality if you want.
This is because CP/M operates independently of REX# memory use.
You can instead install CP/M using the instructions for that, and use CPM.CO to start CP/M.
To help make things easier to recover (from a cold restart) I have made a version of CPM.CO as a .DO file, for easy file transfer to the laptop. Use this if your CPM.CO file gets corrupted or you need to cold restart.
You can also configure M100 CP/M to autostart by using the IPL function of the M100.
1. First, run CPM.DO to create CPM.CO. Ensure you can start CP/M by running CPM.CO. 2. Then enter BASIC, type 10 LOADM"CPM.CO" 20 CALL62855 SAVE "CPMIPL.BA" IPL "CPMIPL.BA" Now, you have a program in RAM that will run on power up, or reset.
Recommended TPDD Server
Unfortunately it is difficult to guarantee that REX# works under all possible conditions with all possible combinations of TPDD server, cabling options, real serial vs USB, bluetooth etc.
What I use is as follows, and I recommend it as it 100% reliable for me.
* PC (Linux (I use Ubuntu 16.04) or Windows (I use 10)) * Real RS-232 serial port support * LaddieAlpha as the TPDD server * Null modem RS-232 cable
Documentation
The following information applies to REXCPM as well as REX#.
REX Manager User Guide for REXsharp
Technical Information
Work in progress!!!
Use with MVT100 external Video
Derived from the TRS-80 Disk Video Interface software (aka Disk Basic), both REX# and REXCPM include support now for the "integrated VT100 Driver". This is provided in V2 software, for M100/T102.
see --> REX# / REXCPM Integrated VT100 driver
Software
The last build of the original V1 release of REXCPM is build 43, and does not include the VT100 driver.
Current REXCPM software is V2.2 build 40, and includes the VT100 driver.
I recommend that all users upgrade to V2.2 software.
You must use the correct utilities to work with each version. This table provides guidance.
Software | REXCPM V1 | REXCPM V2 | Note |
REXCPM "ROM" | RXC_11.BR build 43 | RXC_12.BR build 13 and newer | recommend update to V2 |
RXCUPG | - | Version 1 or newer | use RXCUPG to upgrade REXCPM V1 to V2 |
RXCINI | Version 2 | Version 3 or newer | use the correct utility depending on REXCPM version |
RXCTST | Version 2 | Version 2 or newer | RXCTST is common for both versions of REXCPM |
RXCUTL | Version 2 | Version 2 or newer | RXCUTL is common for both versions of REXCPM |
Here's the software. Please use the correct utility depending on the REXCPM version.
To simplify obtaining the correct software, you can get them all as a single bundle:
REXCPM software and utilities bundle | Build | Note | File | Release notes |
Version 2.2 | 41 | bugfix release V2.2 November 22, 2023 | REXCPMV22_b41.ZIP | |
Version 2.2 | 40 | bugfix release V2.2 November 4, 2023 | REXCPMV22_b40.ZIP | |
Version 2.1 | 19 | bugfix release V2.1 March 14, 2021 | REXCPMV21_b19.ZIP | V21_b19.txt |
Version 2.1 | 18 | bugfix release V2.1 March 13, 2021 | REXCPMV21_b18.ZIP | V21_b18.txt |
Version 2 | 13 | initial release of V2 | REXCPMV2_b13.ZIP | |
Version 1 | 43 | last V1, bug fix | REXCPMV1_b43.ZIP |
RXC_1x.BR - "The ROM"
As shipped, REXCPM is a blank piece of SRAM. In order to get rolling you need to load in the REXCPM "ROM" application RXC_1x.BR. Use RXCINI to load the software, and prepare it for first use. If you currently have a working REXCPM, then use RXCINI or RXCUPD to install this software.
Note: REXCPM "ROM" software is based on classic REX with several differences. - 16 32k Blocks are available for use by the REXCPM "ROM" - the remaining SRAM is dedicated to CP/M use - the software has some simplifications - SRAM based operation means some low level changes to how REX works Please communicate any bug reports.
RXCINI - Initialization of a new REXCPM
RXCINI is a tool for installing software and/or creating a new directory in REXCPM.
RXCINI * use for installing software in REXCPM * also usable to update V1 software or V2 software (ex. bug fix release) * NOT USABLE to upgrade from V1 --> V2. Use RXCUPG * use for erasing and creating a new (blank) directory in REXCPM * "upgrade" refers to loading a new version of software. * "update" refers to applying a bug-fix load to the same version software.
Since REXCPM is based on SRAM, and there is no on-board battery (only a large 1000uF capacitor), by the time you receive your REX the memory contents will be blank. So, you have to load REXCPM with the REXCPM application and any option ROMs you want to use.
Of course as soon as you install REXCPM, the M100 NiCd memory battery + the 4xAA batteries provide ample battery backup.
Version Notes: ============== Version 3: * updated to work with REXCPM V2 software Version 2: * use Version 2 for REXCPM V1 software
Note: * RXCINI has embedded machine code which is now encoded as ASCII characters supporting 7 bit transfer * It also loads much more quickly, and includes checksum verification
Note: * If you get the message "CAN'T RUN" ---> please remove the REX hook (CNTL-X or F7) ---> power cycle ---> and try again
Instructions ============ 1. Make sure REXCPM is in default state, meaning a. RXCMGR is not running (use CNTL-X to remove hooks, or F7 from RXCMGR) b. Power cycle once, to ensure the default memory blocks are selected c. Optionally, cold-rebooting the laptop after a power cycle ensures a clean state. 2. Load RXCINI.DO via serial transfer, or TPDD transfer. It is now 7 bit ASCII. RXCINI.DO contains HEX ASCII encoded machine language, for more reliable transfer. 3. RUN RXCINI.DO in BASIC. RXCINI.DO allows you to do either or both of two processes: a. You can choose to LOAD a REXCPM application (28kB file) b. You can choose to INITIALIZE (reset to blank) the REX directory, which stores ROM image names. You can guess that initializing the directory removes any existing directory entries. The REXCPM application EXCLUDES the directory, so you must initialize the directory if you are starting from scratch and there is no existing directory (or stored images!). 4. Configure RXCINI.DO to do the following: IMPORTANT!!! FOR Initialization of a shipped REXCPM (install software AND blank directory) a. indicate YES to "Load REX code:" b. indicate YES to "Init REX dir :" FOR bug-fix upgrade of REXCPM (install software only; maintain directory) a. indicate YES to "Load REX code:" b. indicate NO to "Init REX dir :" c. execute these choices 5. The loader will load up the machine language routine, and begin to execute 6. To LOAD a fresh REXCPM application, RXCINI.DO accesses a remote TPDD device to get the binary 24k file. (28k in V1) RXCINI.DO contains it's own TPDD access routines, and does not need a DOS. a. Ensure a TPDD device is ready to go with the source file as needed. b. Supply the correct file name (6 characters, no extension, case sensitive) File extension is automatically set to .BR 7. Let the program run When complete, REXCPM should have a fresh "ROM" load for REXCPM, and a freshly initialized directory.
To install RXCMGR: --->Power off. --->Power on. --->From BASIC, ---> CALL 63012 You should see RXCMGR as a MENU entry. Selecting that will start RXCMGR software.
Note: ===== If you see an error message - "CAN'T RUN", this means that REXCPM is not in the default state. See instruction #1 above!
RXCUPG - Upgrading the REXCPM Application
REXUPG is a utility that is dedicated to upgrading the REXCPM V2 software.
RXCUPG * use for upgrading REXCPM from V1 to V2 software * use to apply any future updates in the V2 stream to REXCPM * requires RXC_12.BR (only loads software with this file name) * "upgrade" refers to loading a new version of software. * "update" refers to applying a bug-fix load to the same version software.
Version Notes: ============== Version 1: * initial version
Note: * RXCUPG has embedded machine code which is now encoded as ASCII characters supporting 7 bit transfer * It includes checksum verification
Note: * If you get the message "CAN'T RUN" ---> please remove the REX hook (CNTL-X or F7) ---> power cycle ---> and try again
Instructions ============ 1. Make sure REXCPM is in default state, meaning a. RXCMGR is not running (use CNTL-X to remove hooks, or F7 from RXCMGR) b. Power cycle once, to ensure the default memory blocks are selected c. Optionally, cold-rebooting the laptop after a power cycle ensures a clean state. 2. Load RXCUPG.DO via serial transfer, or TPDD transfer. It is now 7 bit ASCII. RXCUPG.DO contains HEX ASCII encoded machine language, for more reliable transfer. 3. To LOAD a fresh REXCPM application, RXCUPG.DO accesses a remote TPDD device to get the binary 24k file. RXCUPG.DO contains it's own TPDD access routines, and does not need a DOS. a. Ensure a TPDD device is ready to go with the source file as needed. b. Ensure that RXC_12.BR is accessible. 4. RUN RXCUPG.DO in BASIC. RXCUPG.DO allows you to LOAD a REXCPM application (24kB file) RXCUPG.DO maintains the existing image directory. Configure RXCUPG.DO to do the following: a. indicate YES to "Load REXCPM code?:" b. execute these choices 5. The loader will load up the machine language routine, and begin to execute 6. When prompted, supply the correct file name (6 characters, no extension, case sensitive) In this case, "RXC_12" File extension is automatically set to .BR 7. When complete, REXCPM should have a fresh "ROM" load for REXCPM, and a freshly initialized directory.
To install RXCMGR: --->Power off. --->Power on. --->From BASIC, ---> CALL 63012 You should see RXCMGR as a MENU entry. Selecting that will start RXCMGR software.
Note: ===== If you see an error message - "CAN'T RUN", this means that REXCPM is not in the default state. See instruction #1 above!
RXCTST - Test your REXCPM Installation
A tool is available to test your REXCPM in the laptop after it is installed.
RXCTST * use for testing an installed REXCPM * this program will completely erase all memory in REXCPM * this program erases the REXCPM software and image directory * use with caution! * this tool tests each block of SRAM to see if it works. * you have some options in the tool.
Notes: ====== * Blocks are switched in and tested one at a time * Memory is tested from bottom address 8000h * To speed up the test you can reduce the address range, and/or skip bytes * You can select the stop address - either C000h (full) or 9000h (partial) * You can either test every byte, or skip to every 16th byte About Version 2 =============== * Faster loading, safer 7 bit HEX ASCII machine language encoding * If you get the message "CAN'T RUN" ---> please remove the REX hook (CNTL-X or F7) ---> power cycle ---> and try again
Instructions ============ 1. Make sure REXCPM is in default state, meaning a. RXCMGR is not running (use CNTL-X to remove hooks, or F7 from RXCMGR) b. Power cycle once, to ensure the default memory blocks are selected c. Optionally, cold-rebooting the laptop after a power cycle ensures a clean state. 2. Load RXCTST.DO via serial transfer, or TPDD transfer. It is 8 bit ASCII. If transferring via serial, use 8 bit mode, not 7 bit. RXCTST.DO contains encoded machine language. 3. RUN RXCTST.DO in BASIC. 4. Make selections to configure the test. 5. The loader will load up the machine language routine, and begin to execute 6. Let the program run 7. It will report the size of RAM; 2MB = 128, 4MB = 256. It will report any errors or success.
Of course, you have just completely erased your REXCPM at this point. Use RXCINI to rebuild it.
RXCUTL - Backup and Restore
A tool is available for backing up or restoring REXCPM memory contents to TPDD.
RXCUTL * use for backup or restore of the stored information in REXCPM * supports backup/restore for either REXCPM or M100 CP/M
Some of the REXCPM SRAM is dedicated to CP/M while other memory is dedicated to REX functionality.
Backup and restore of either the REX side or the CP/M side gives the user a means to create complete images of the memory over time, so if needed the machine can be brought back to the desired state.
Notes: ====== * Either a Backup or Restore process * REXCPM or CP/M memory regions REXCPM memory includes REXCPM ROM image + directory + 16 blocks Total of 17 32kB blocks. CP/M memory includes all of the CP/M disk space, including directory (but excluding CP/M OS) For 2MB, 40 32kB blocks. For 4MB, 104 32kB blocks. * Serial port speed - 19200 8N1 or 76800 8N1 "Large Packet" About Version 2: ================ * Faster loading, safer 7 bit HEX ASCII machine language encoding * If you get the message "CAN'T RUN" ---> please remove the REX hook (CNTL-X or F7) ---> power cycle ---> and try again
The tool uses the standard RS-232 port on the M100. Standard TPDD servers can operate at 19200 baud, but LaddieAlpha is capable of operation at 76800 baud, and also able to support large packet sizes, both of which help to speed up the process.
NOTE: LaddieAlpha with 76800 Large Block support is not generally available yet. Stay tuned.
Backup/Restore processes can take some time; use this table for guidance.
Process | Memory size | Duration | Duration |
REXCPM | either | 19200 | 5:20 min |
CP/M | 2MB | 19200 | 13 min |
CP/M | 4MB | 19200 | 33 min |
REXCPM | either | 76800 | 2:10 min |
CP/M | 2MB | 76800 | 5 min |
CP/M | 4MB | 76800 | 13:15 min |
Instructions ============ 1. Make sure REXCPM is in default state, meaning a. RXCMGR is not running (use CNTL-X to remove hooks, or F7 from RXCMGR) b. Power cycle once, to ensure the default memory blocks are selected c. Optionally, cold-rebooting the laptop after a power cycle ensures a clean state. 2. load RXCUTL.DO into the M100 using a terminal program on PC (lots of ways to do this) It is 7 bit ASCII. RXCINI.DO contains HEX ASCII encoded machine language. 3. Enter BASIC and type RUN"RXCUTL.DO" 4. Select Process, REX or CP/M, and speed 5. The loader will load up the machine language routine, and begin to execute 6. Ensure that a TPDD server is attached to the serial port 7. For either process, supply 6 character case-sensitive name for the file. File extension is set to .BB 8. Once executed, RXCUTL will attempt to either write or read all required data to/from REXCPM SRAM.
Note: ===== If you see an error message - "CAN'T RUN", this means that REXCPM is not in the default state. See instruction #1 above!
TPDD Server Compatibility
REXCPM has the same compatibility with TPDD servers as does REX#. Please consult the REX# page for this information.
Option ROM Images for Download
Validated OPTROM Images for M100/T102
Validated OPTROM Images for T200
Validated OPTROM Images for NEC
Acknowledgements
I would like to thank those that have contributed to the project:
Philip Avery - for his commitment to this project and for the port of CP/M to the M100
John Hogerhuis - for all his technical support, and for this Wiki resource
Kenneth Pettit - for VirtualT as this project would not have happened without it
Brian White - for his innovative PCB2MOLEX carrier design
FAQ
Q. I have heard that the SRAM used in REXCPM is unreliable because it needs battery backup! Is that true?
A. Unlike REX#, REXCPM uses SRAM. SRAM does need "keep-alive" voltage to prevent memory loss. The SRAM in REXCPM is as reliable as the SRAM used in the M100 as system memory. Three voltage sources keep the SRAM alive and well taken care of.
1. Specific to REXCPM, there is an onboard 1000 uF capacitor to protect REXCPM when removed. 2. The M100 NiCd battery. This provides 3.6V and about 60 mAh. 3. The installed 4xAA batteries, that provide ~6V and ~2000mAh or so.
All 3 of these voltage sources protect REXCPM when it is installed. When REXCPM is removed from the laptop, then only the 1000uF capacitor provides keep-alive voltage, so it is important for to reinstall REXCPM (including adapter board!) without much delay if you want to keep the memory intact.
So, just like the M100 itself retains memory quite effectively, so too does REXCPM.
Q. I loaded and ran RXCINI.DO. Why don't I have a TS-DOS ROM image loaded?!
A. Unlike REX#, REXCPM ships as a blank SRAM. RXCINI takes care of loading the REX Manager software, but stops there. This means that the user must load the first ROM image (maybe TS-DOS is a great choice here). It would be useful however if RXCINI also loaded up TS-DOS, so I will update that utility to do so....
Q. I am having trouble loading RXC***.DO using serial transfer. It keeps crashing!
A. Please ensure you are transferring the file to the laptop in 8 bit mode. While the file is ASCII, it contains 8 bit ASCII because there is embedded machine language.
Q. Why do I need an adapter?
A. The adapter does 3 things: it disables the internal RAM, it sends 'RAM active' signal to REXCPM, and it provides battery power to REXCPM to keep the SRAM "alive".
Q. Is Tandy 102 a plug and play installation?
A. No. Model 100 is plug and play, but T102 requires soldering of a single wire. Details are available on this site for how to install on T102.
Q. Will REXCPM come out for T200?
A. There are currently no plans to support REXCPM in the T200 platform.
Q. Will REXCPM come out for NEC PC-8201?
A. This is being investigated.
Q. Are the REX memory images which REXCPM saves and restores to TPDD compatible with the images (.BY files) saved and restored by REX classic? Ie. will I be able to take a .BY file I saved from my REX classic, load it into REXCPM, switch to it, and have everything work properly? Or is this going to blow up in my face? :)
A. There were no changes in this functionality, so it should work. I have not tested this though. REXCPM is always 32k images, so your REXclassic image would also need to be 32k.
Q. Can I access the banking functionality of REXCPM via BASIC?
A. Yes. There are 3 banks: Option ROM 0000-7FFF, low RAM 8000-BFFF and high RAM C000-FFFF. All 3 are accessible but the only practical use case is for Option ROM since BASIC uses both RAM banks. The BASIC program would need to make use of a machine language routine to set the register value in REXCPM to the specific memory bank of interest. Then, to access the RAM you would need another machine language routine. Examples of such code can be made available at this wiki.
Compatibility Issues
UR-2 VIEW80 in M100/T102/NEC When you enable VIEW80 in UR-2, the timer hook is used by UR-2 to alter the screen. This disables REX Manager, and so when you exit UR-2 to MENU, REX# will not be responsive. Simply run REXMGR again to reactive REX Manager.
Bugs
Release 2.2
Rel 2.2: All: Month October is shown as Ont not Oct. Will be fixed in build 41.
Release 2.1
Rel 2.1: All: Fix the date display. Fix bugs, and replicate system format for Date display. Coded R2.2 / Tested
Rel 2.1: M100/T102: Make display tolerant to "hardware scrolling main ROM". Coded R2.2/ Tested
Rel 2.1: Interworking with actual TPDD does not work. Fix pending. Coded R2.2 / Tested
Rel 2.1: NEC: noticed that, with only one RAM bank installed, pressing TAB or BANK causes laptop to hang in MENU. This should not happen. Probably affects T200 as well. Yes it did. Coded R2.2 / Tested
Rel 2.1: All: Reduce time on power up before option rom is switched, to prevent undesired uninstall of option rom. Coded R2.2 / Tested
Rel 2.1: T200: UR-2 support seems like it is broken. Major defect discovered, coding error on my part. Fixed. Coded R2.2 / tested
Feature Requests
Rel 2.1: Request to put an "Overwrite?" option to allow images to be saved when one exists already. Great idea! Coded R2.2 / Tested
Rel 2.1: All: when switching RAMs, give option to re-save current RAM or not. Coded R2.2 / Tested
Rel 2.1: M100: add quickmenu command to reNAME or KILL a file in MENU. T200: add quickmenu command to NAME a file in MENU. Coded R2.2 / Tested
Rel 2.1: All: Allow use to de-install the active ROM, leaving no ROM active. F6. Coded R2.2 / Tested
Rel 2.1: All: Support write-protect on RAM images. Implemented Coded R2.2 / Tested