More technical information from Daniel Ioan,
SYSTEM CLOCK: 17.7345 Mhz.
- Divided by 4 gives the PAL frequency for color-TV.
- Divided by 5 gives the CPU frequency, 2/3 duty cycle, assymetrical for
video syncronization purposes: video access are done when CPU is idle. (this
is "inspired" from the Spectrum +3, but the schematic was
CPU: Z80A from Zilog or MMN80 CPU (Romanian Z80A). Russian
equivalents was never used as far as I know.
ROM: 27C256, 32Ko EPROM, 16Ko for BASIC (derrived from Sinclair
BASIC) and 16Ko for CP/M BIOS. Only 8Ko of CP/M EPROM are effectively mapped
in CP/M EPROM, the ohter 8Ko are used when configuration are changed.
The EXTENSION adds 16Ko DISK/NETWORK/BIOS for BASIC, extensively
modified from the 8Ko Sinclair Microdrive BIOS, with disk bios functions
CPM-like. ROM's are mapped in the same manner as in the original Spectrum
with Microdrive, but the circuits are discrete.
RAM: 2 x 44C64, 64Ko x 4bit each. Only 48Ko are used in BASIC, but
CP/M uses the entire 64Ko capacity, 56Ko RAM + 8Ko EPROM. The 8Ko video area
are pagged in the C000h-E000h address space so the total RAM accessible is
64Ko. This design was quite original!
ULA: Both computer and extension logic IC's are discrete, with
Russian, Romanian or Western LS or ALS logic series.
EXTENSION: The standard extension provides 3"1/2 (disk 1, disk
A) and 5"1/4 (disk 2, disk B) disk drives. Interface uses Intel-8272
LSI FM/MFM disk controller, only in the MFM mode, wich provides 720Kb on 80
tracks (3"drive) and 360Kb on 40 tracks (5"drive). BASIC disk
access provides only 640/320Kb. Clock frecvency for controller is 8Mhz. Disk
PLL is digital, and works quite well !! The design is quite different from
the PC-floppy boards, but "inspired" from them.
The extension logic has mainly LS 138 dmux/decoders wich provides port
selection, video area pagging in the mainboard for CP/M, and ROM pagging
Network uses packet syncronization by blocking CPU in WAIT state until sync
bit is detected. Network BIOS is intirely Microdrive Sinclair
SERIAL INTERFACE is a bad design. Uses soft delays for BAUD rates.
Never can be achieved true bit syncronization!! Works only for serial
printers. RS232 level converters (1488/1489) are powered at -5V and +10V
from an internal comutation supply (using an transformer drived by 8Mhz
clock properly divided).
Detailed information about the HC-91+ by Grecu Cristi:
The secondary board of the HC-91+ has three
types of interfaces:
- interface for flexible 5,25" disk
- serial interface RS 232
- interface for local computer network
The new channels used with these interfaces are specified in Extended
The streams are specified with #n, where n is a number from 1 to 15.The
streams 0,1,2,3 are the most useful in BASIC.
There are 7 types of channels used in extended BASIC:
- k: keyboard
- s: screen memory
- p: parallel printer
- t: RS 232 interface for text
- b: RS 232 binary interface
- n: local network
- d: flexible drive
Each channel is specified by the corresponding letter. The network and the
drive need more informations to completely specify the channel.
A network channel needs a station number, so a network specificator has
the form "n";x, where x is a network specificator, that may have
values from 1 to 64.
A disk specificator has the form "d";x;"name", where x
is the drive number, that could have the values 0,1 or 2. The name could
contain a maximum number of 11 characters.
The first minidrive accesed after NEW or CLEAR# will be the current
minidrive and will be able to be specified with the number 0.
If we would try the 0 minidrive without accesing first the minidrive 1 or
2, we will receive the error "invalid drive number".
It is suitable to not use the "?" character inside a file name.
It is used in the file system to replace any other character.
If you want to delete the files named "name0","name1",
"name2", and you don't have any files with this name, you may
give it one command, ERASE"d";1;"name?". This will
delete all the three files.
If in a OPEN# you specify partialy an existing file's name (using
"?"), the computer will use the first file that matches its
Lists all the file's names that are on the disk or the minidrive y.
The list is reprezented in the order from the disk's table of
contents(TOC). After the list, there will be shown the free space on the
Sends the TOC to the stream X.
CAT y;"cc...c" Lists all the
files which names matches the caracter array "cc...c".
CAT #z;y;"cc...c" Like upper mentioned, sent
to stream z.
Rebrings all the streams and channels at the status after NEW.
Breack all the links between a channel and a stream. If there are datas stack
in the channel's buffer, these are sent through the network, or to the
Brings the screen at the status after NEW
ERASE"d";y;"name" Erases the files
specified by "name" from the disk y.
Formats the disk in the drive y. All the files from the drive y are lost.
This operation is necessary when using a new disk. If the disk was not
formattede and we try to acces it, we receive the message "disk
error". After formatting, we give it the command CAT, and "File
not found" is displayed. The disk is ready to use.
Makes the number of the station to be x. (x can have values from 1 to 64);
The comunication speed on the serial interface is stabilised as x. (x must
be a value of the existing ones: 50, 110, 300, 600, 1200, 2400, 4800,
INKEY$ #stream Returns
one single character from the stream, or an empty character"" if
there is no character.
INPUT# stream,value Reads the variable value from a
specified stream. The stream had to be prevesioly opened by a channel.
LOAD*channel options Loads the program, the datas or the code from the
specified channel. We can only use the channels b,n,d. All the existing
options for LOAD are availeble for LOAD*.
MERGE*channel options Same as LOAD*, but it does not delete the old lines
and variables that are not on the old program. (same as MERGE on the tape)
MOVE source TO destination Moves the datas from source to
destination. Source and destination could be streams numbers or channels.
OPEN# stream, channel: Links the specified stream to the specified
Prints the PRINT sequence to the specified stream. The stream had to be opened
for a output channel.
SAVE* channel, options Saves the program or datas to the specified
channel. Could be used only the streams b,n,d. All the options availeble for
the SAVE (on tape) could be used for SAVE*.
VERIFY *channel, options Same as LOAD*, but the
datas aren't loaded into the memory, just compared with the ones in the
For more info about working with the disk, see the Read
more section of the Ice Felix HC-2000