MZ-700 – MZ-1R12

MZ-1R12

Extension RAM

Introduction

The MZ-1R12 is able to store MZ-700 system programs, but can be used as an external memory too. It is more fast to bootstrap the system programs from this RAM than bootstrapping the sytem programs from the data recorder.

 

 The MZ-1U06 ( expansion unit ) is required to use the MZ-1R12.

 

 

 

Features

  • It is possible to start the system programs automatically by turning on the MZ-700 power.
  • Since the CMOS STATIC RAM ( S-RAM ) is battery operated, it can be used as non-volatile memory (the data is maintained even if the MZ-700’s power is off).
  • Data my be written to and read from the MZ-1R12 via I/O ports.
  • The MZ-1R12 includes an address counter which increments automatically if data is read or written. This makes it easy to read or write consecutive addresses.

Connection

First, be sure that the power on switch of the MZ-700 and the MZ-1U06 expansion unit are both turned off. Then install the MZ-1R12 into the MZ-1U06. Be sure to turn on the power for the MZ-1U06 first, next for the MZ-700.

Specifications

Memory capacity 32K bytes
ROM 4K bytes ( 2732A-20 )
Data preservation time Approx. 1.5 months
( with battery charged 150% )
SEALED Ni-Cd BATTERY 3.6V 50mAh
Charging time 100% 29 hours
150% 43 hours
Supply voltage 5V DC ± 10%
Devices CMOS STATIC RAM ( 2K bytes ) x 16.
8 pairs of 2 MB8416-20L “piggyback” mounted.

Instructions

Storage of the MZ-700 system programs

The BASIC interpreter may be loaded from the MZ-1R12 instead fom the cassette tape. To this the Basic interpreter ( 1Z-013B ) must be loaded into the MZ-1R12.

The I/O ports $F8, $F9, and $FA must be used for bootstrapping since the port addresses are used by the ROM of the MZ-1R12.

The DIP switches on the MZ-1R12 board must be set as shown below for port address setting ( this is the initial setting done before delivery ).

 Keep bit 7 of the DIP switches off unless the MZ-1R12 is used to store system programs for the MZ-700 ( see
details below ).

 

Be sure to turn on the power of the MZ-1U06 expansion unit first, next of the MZ-700.
The following screen will appear:

Initial message

Depression of the R, W, or M keys.

R

Programs are loaded from the S-RAM and check sum is examined. If a wrong check sum is detected, the check sum error will be indicated before the initial message reappears again. The tape header is stored too.

Example:
The S-Basic interpreter will be read from the S-Ram into the MZ-700.

W

The message shown below will appear.

Load a BASIC cassette tape or an application program written in machine language, then press the PLAY button. The contents of the cassette tape will be transferred into the S-RAM together with the check sum and the tape header. The initial message will reappear after completion of the transfer.

E.g. if the BASIC interpreter is to store into the S-RAM, you have only to depress the R key on the initial screen to load the BASIC. This is heavy time-saving and very much easier to operate.

 The MZ-1R12 memory capacity is 32K bytes. If you attempt to store programs exceeding this limit, “File is too long” is displayed and the initial screen reappears.

M

Controls transfer to your MZ-700 ROM monitor which stands by for the next monitor command input.

 Only one system program may be stored on one board. The address range from $E800 to $EFFF ( reserved memory ) is assigned to the P-ROM on the MZ-1R12 board for MZ-700 bootstrapping.

The address space is 2K bytes while the P-ROM has a capacity of 4K bytes. Bit 8 ( A11 ) of the DIP switches selects the first or the second half of the P-ROM. The second half is an unused area in the P-ROM. You can program it for your own purposes by a P-ROM prommer.


DIP switch bit 8 ON

DIP switch bit 8 OFF
1st half selected
$0000 – $07FF
2nd half selected
$0800 – $0FFF

Using the MZ-1R12 as an external memory for the MZ-700

Use the OUT# / OUT command to write data from the MZ-700 RAM into the S-RAM.
Use the INP# / IN command to read data into the MZ-700 RAM from the S-RAM.

Port addresses
The MZ-1R12 uses the I/O port adresses $F8, $F9, and $FA. The following functions are assigned to the ports:

Port
address
OUT# / OUT
INP# / IN
$F8
sets high address order ( MSB )
resets counter
$F9
sets low address order ( LSB )
reads data
$FA
writes data
no action

  Keep DIP switch bit 7 ( MSEL ) off to use the MZ-1R12 as an external memory.

  If you install more than one MZ-1R12 for storing data, set the DIP switches as shown below. ( The port address should start from $00. )

1st data memory card

MZ-1R12 1st data memory card

Set and use the ports to the range $00 – $02
DIP settings for 1st data memory card

2nd data memory card

MZ-1R12 2nd data memory card

Set and use the ports to the range $04 – $06
DIP settings for 2nd data memory card

If board 1 is to be used as system, but board 2 is to be used as data, set the DIP switches as follows.

System memory card (1st card)

MZ-1R12 as system memory card ( 1st card )

Set and use the ports to the range $F8 – $FB
DIP settings for system memory card (1st card)

  Turn on DIP switch bit 7 of the MZ-1R12 board

Data memory card (2nd card)MZ-1R12 as data memory card ( 2nd card )

Set and use the ports to the range $00 – $02
DIP settings for data memory card (2nd card)

Sample programs

The MZ-1R12 increments the memory address automatically when reading and/or writing data. By this the first memory address must be set only for subsequentially reading and/or writing operations.

Sample BASIC program ( 1Z-013B )
This program writes the numerical data range from 0 to 255 into the S-RAM from $0000 to $00FF.
All examples can be downloaded ( see below ).

10 INP# $F8,A:REM SETS ADDRESS COUNTER TO $0000
20 FOR A=0 TO 255
30 OUT# $FA,A:REM WRITE DATA (VALUE OF A)
40 NEXT A
50 END

 If the first address should not be $0000, then change the line number 10 as desired. If the first address is e.g. $1FFF, then do the following changes:

10 OUT# $F8,$01:REM SET HIGH ADDRESS
15 OUT# $F9,$FF:REM SET LOW ADDRESS

To display the contents of the S-RAM from location $0000 to $00FF:

10 INP# $F8,A:REM RESET COUNTER TO ADDRESS $0000
20 FOR I=0 TO 255
30 INP# $F9,A:REM READ DATA INTO A
40 PRINT A,:REM DISPLAY VALUE READ
50 NEXT I
60 END

 The address counter will be incremented at each time when line 30 is executed.

Addresses will be assigned as shown:


A sample application program

This program generates a telephone directory in the S-RAM, permitting new entries and references.

When the program starts, an initial screen appears as shown below and the program waits on a command input.


Enter “W” to enter the name and a telephone number. If you entered 5 entries into the telephone directory the initial screen will reappear.

Enter “R” to refer to the directory held in the S-RAM.

The program:

10 PRINT CHR$(22)
20 PRINT CHR$(21):CLR
30 PRINT CHR$(17):PRINT " TELEPHONE DIRECTORY"
40 PRINT CHR$(17):INPUT "READ OR WRITE? (PUSH 'R' OR 'W') ";A$
50 IF A$="W" THEN 80
60 IF A$="R" THEN 270
70 GOTO 20
80 DIM SN$(5),ST$(5)
90 FOR I=1 TO 5
100 PRINT:INPUT " NAME? : ";SN$(I)
110 INPUT " TEL? : ";ST$(I)
120 NEXT I
130 OUT# $F8,$70:OUT# $F9,$0
140 FOR I=1 TO 5
150 OUT# $FA,LEN(SN$(I))
160 FOR J=1 TO LEN(SN$(I))
170 A=ASC(MID$(SN$(I),J,1))
180 OUT# $FA,A
190 NEXT J
200 OUT# $FA,LEN(ST$(I))
210 FOR J=1 TO LEN(ST$(I))
220 A=(ASC(MID$(ST$(I),J,1))
230 OUT# $FA,A
240 NEXT J
250 NEXT I
260 GOTO 10
270 REM
280 DIM NN$(5),NT$(5)
290 OUT# $F8,$70:OUT# $F9,$0
300 FOR I=1 TO 5
310 INP# $F9,L
320 FOR J=1 TO L
330 INP# $F9,A
340 NN$(I)=NN$(I)+CHR$(A)
350 NEXT J
360 INP# $F9,L
370 FOR J=1 TO L
380 INP# $F9,A
390 NT$(I)=NT$(I)+CHR$(A)
400 NEXT J
410 NEXT I
420 REM
430 FOR I=1 TO 5
440 PRINT:PRINT " NAME: ";NN$(I)
450 PRINT " TEL: ";NT$(I)
460 NEXT I
470 GOTO 20
480 END

Download all program examples shown above ( 2 Kbytes ).
Download the binary contents ROM MZ-1R12 ( 1 Kbytes ).
Download disassembler listing ROM MZ-1R12 ( 3 Kbytes ) documented by Bernd Krueger-Knauber ( Thanks! 🙂
Download the original SHARP manual MZ-1R12 ( 270 Kbytes ).