WINDOWS control software is designed for the SORD m.5 computer with a 64KRX board (the board was developed by a team of electronics from a no longer existing socialist enterprise POLDI Kladno SONP). The 64KRX board is based on a previous version of 64KRD and includes a bus booster, 64KB RAM and 72KB EPROM, RAM DISK 512KB (Jan Jelínek version), and a STD BUS on the rear FRB connector..
Compared to the 64KRD expansion module, EPROMs for MSX Emulator were added to 64KRX.
WINDOWS software is located in the EPROM memory located on the computer main board in the unused pre-prepared position of BASIC-I. This 8KB EPROM contains 4KB of service program WINDOWS (BOOT) and 4KB of last part of the BASIC-F language (BASIC-F has 20KB, 16KB is in EPROM disk and 4KB on rest of boot EPROM). After turning on and resetting the computer, the WINDOWS is found and the MONITOR ROM runs it as a standard module (BOOT to WINDOWS). This is indicated by drawing a main selection window on a blue background screen.
WINDOWS is used to load (boot from):
- BASIC interpreter and MSX from EPROM into RAM (items SORD and MSX)
- boot program from RAM DISK to RAM (item DISC)
- binary (machine code) program from the tape to the RAM (item TAPE)
It is also possible to run a program that is already in the position of the module (cartridges), ie. is in RAM from 2000H (look for IPL Start for details) or from 4000H (but must be byte FFH on address 2000H).
Another function is to copy MONITOR ROM into RAM (MONITOR IN RAM), details below.
If MONITOR ROM is copied to RAM, this copy is enabled when selecting any item in the SORD window (except for MONITOR) and when selecting TAPE. In order for MONITOR to work in RAM, the CHKRAM routine is modified after each copy. Selecting MONITOR IN ROM is pre-selected (and called) MONITOR ROM in ROM, even if it was previously copied to RAM.
The EPROM contents (with exceptions, see below) copy from the current location in the address space to the RAM from 2000H (SORD) or from 0000H (MSX).
WINDOWS further assumes that the third EPROM position can be either BASIC-I or any other 8KB program (such as dump of gaming cartridge). If it starts with C3H (instructiuon JUMP), it is not moved to RAM, but is run from an address that is at + 0001H from the beginning of the EPROM.
By selecting a DISC item it will launch a routine that expects a 128-byte long boot program to load and run in the RAM on sector 32.
From WINDOWS, you can run the WINDOWS Assembler Tool, a simple monitoring / debuggging / editing program that is integrated into WINDOWS.
For its needs, WINDOWS also uses RAM (together with the MONITOR ROM) in the 7000H to 72FFH range and VRAM from 2000H to 3FFFH.
RAMs in the 7000H to 72FFH area are actually internal 4KB RAM (7000H to 7FFFH) on the M5 board and overlapping 4KB of 64KB RAM on the 64KRX board. However, internal RAM can be disconnected, and 64KRX of RAM is 64KRX in the address space - in other words, the 64KRX board actually allows you to use up to 68 KB of RAM in the CPU address space. I wouldn't give a hand into the fire, but it is true.
Control and function
In the window that the WINDOWS offers for user, you can move up and down using the arrow keys. Selecting an option (inverse text) is done by pressing RETURN. Returning to the higher level (previous window) is performed by pressing the RESET key, which has the meaning of the ESC key (returns code 27-1BH) during WINDOWS operation.
Because the original design of 64KRD (=64KB + Ram Disc) was created only with existing variants of BASICs in EPROMs, and MSX was not known at the time of the design, EPROM for MSX was added as a shadow copy to the already existing EPROM. Therefore, EPROM mapping can not be controlled by program. For this reason, the additional mechanical switch must to be switched to the corresponding position (in MAME you may use DIP switches functionality) to switch between SORD and MSX items.
WINDOWS Assembler Tool
Selecting TOOL in the main window provides a selection of the type of RAM, VRAM (VRM) and the ROM to be used. After selecting one of these, the Assembler Tool window is rendered, divided into three columns. In the first column there are addresses, the second and third columns are the bytes that are located at these addresses (in hexbyte and ASCII representation). At the top of the window, information about the type of used memory and it's range is displayed and information about beginning address of ZONE. At the top of the screen, one disassembled instruction is displayed from the address on which the cursor stands (or flashes).
The first column (and possibly its first address) will be referred to in the text as ADR, the second HEX column, and the third ASC column. The position in the upper left corner of the ADR will then be called HOMEA, the same position in the HEX will be called HOMEB. The address of the cursor will be called ADRK. At the beginning of ZONE, the ZONE address (ZN) is displayed.
At the same time pressing CTRL and quot;key", the following actions will occur:
A to F - ignored G - Get - Enter the search string H - Search - Enter the search string with Star convention I - Instruction - move the ADRK to the next instruction J - Jump - sets the ADR to ZONE and places the cursor on the HOMEB K - ctrl/K, home - places the cursor on HOMEA L - ctrl/L, page - moves the addresses to the next page (by 32 bytes) M - ctrl/M, return - sets the Last Address in ADR and places the cursor on the HOMEB N - Next - searches for the next occurrence of the specified string O - Old - uploads the file from the tape recorder to the ADRK memory P - disass - View memory as disassembled instructions from ADR (Print) Q - ignored R - ignored S - ignored T - Type - View memory as ASCII (512 bytes) and BIN (128 bytes) from ADR U - Up - places ADRK on ADR and cursor on HOMEB V - ignored W - ignored X - eXecute, call - after confirmation (Y) starts the program from the ADRK address Y - ctrl/Y - switches the view to the second screen Z - Yone - ZONE start is set to ADRK @ - Up Arrow - moves the cursor upwards / - down arrow - moves the cursor down the line ; - left arrow - moves the cursor over the character to the left : - right arrow - moves the cursor over the character to the right
Notes: When moving cursor with the arrows, it moves in all directions across the entire window, and if the cursor is at the boundary, it moves to the other end of the new line, or the entire window is skipped.
EXECUTE can not be performed with the selected VRAM memory type.
When ROM is selected entire ROM is connected, except the 7000H to 7FFFH range and when the RAM is selected all of RAM is connected.
Stack Pointer of Z80 CPU is set somewhere below 72FFH.
If only the "key" is pressed, the following actions are performed in the ADR and HEX columns:
0 to 9 and A to F - to change the value at which the cursor stands (enter hex numbers) G to Z - the same as the CTRL / key ! - fill (Padding! / Purge! / Prune!) - ZONE is filled with the code from the ZONE address
Note: When moving using <@> </> <;> and <:>, the cursor moves only in the ADR and HEX columns. ZONE starts with ZONE and ends on ADRK. With the selected RAM type, it is not possible to write to the 72F0H to 72FFH address area, and the 7000H to 72FFH area is skipped when Padding! is filling (purges) RAM space. For VRAM, the same applies for addresses 4000H to FFFFH, and for ROM it is true across the range.
In the ASC column, the values can be changed with regular writing and using the CTRL/SHIFT/keys.
Advanced information about Assembler Toolu
With GET and SEARCH, the background of the screen is changed to red, and the default window is set to VRAM from 3FE0H (this part of the video memory is used as a search buffer for search functions). Now you can enter a maximum of 31 bytes long search string either as hex or ASCII or a combination of them. ADRK specifies the position behind the search string! ESC returns to the basic window. With NEXT, the string is always found! The selected RAM and ROM type is found at least in the work buffer (719FH) and VRAM in input buffer (3FE0H). Starfinder Assistance (Star convention) is working so that in search, the FFH from the search string can be replaced by anything. For example, if we look for the occurrence of all CD xx 10 strings (CALL 10xx), enter CTRL/H, then type the CD FF 10 string, press ESC (to return) and then CTRL/N (to start the search).
The memory search and filling can be interrupted by pressing ESC.
DISASS, TYPE, and OLD are running on the second screen, so it's possible to look at it using the same keyboard shortcut as udes in BASICs: CTRL/Y.
DISASS always displays (prints) 24 line of instructions. Pressing any key continues with the next page, only pressing <@> decreases the reached address by 256 (step backward) and ESC returns to the main window. After return, the ADR and ADRK do not change. Listing are displayed from ADR (first address in window), not from ADRK (cursor address)!
TYPE moves forward and backwards 256 Bytes (<:> and <;>) and 128 bytes (</> and <@>).
ESC returns to the basic window. Upon return, the ADR and ADRK are set to the address reached. Displays from ADR, not from ADRK!
The Assembler Toolu functions can be extended by connecting another program and attaching it to a hook. The connection can be implemented, for example, by the following subroutine (machine code/assembler routine):
CONNECT: LD HL, EXPAND LD (716CH), HL LD A, 0C3H LD (716BH), A RET
EXPAND is the address of the program that extends the Assembler Tool. This program should not change the contents of the CPU's register pairs BC, because it carries information about the pressed keys.
========== written by LZR Soft, date of last modification: Unknown ==========
Original version of the manual
Original form of the manual (in Czech): WINDOW.NAV (8KB, plain text including escape sequences for the LA120 DECWriter III) od LZR Soft.