Difference between revisions of "SIMPLE-Z80"

From Land Boards Wiki
Jump to navigation Jump to search
 
(66 intermediate revisions by the same user not shown)
Line 1: Line 1:
[[FILE:CPU-z80_REV1_FRONT_(BLK).png]]
+
[[File:tindie-mediums.png|link=https://www.tindie.com/products/34960/]]
 +
 
 +
[[FILE:SIMPLE-Z80_P1090251-720pxV.jpg]]
 +
 
 +
<video type="youtube">p5mwMwwM-R0</video>
  
 
== Features ==
 
== Features ==
Line 34: Line 38:
 
== Design ==
 
== Design ==
  
* CPU
+
=== CPU ===
  
 
[[file:SIMPLE-Z80_U2_CPU.PNG]]
 
[[file:SIMPLE-Z80_U2_CPU.PNG]]
  
* EPROM
+
=== EPROM ===
 +
 
 +
* [[TL866ii Plus Programmer]]
  
 
[[file:SIMPLE-Z80_U6_EPROM.PNG]]
 
[[file:SIMPLE-Z80_U6_EPROM.PNG]]
  
* SRAM
+
=== SRAM ===
  
 
[[file:SIMPLE-Z80_U4_SRAM.PNG]]
 
[[file:SIMPLE-Z80_U4_SRAM.PNG]]
  
* ACIA
+
=== ACIA ===
 +
 
 +
* Requires a FTDI cross-over cable
 +
* Can only use RS-232 or FTDI - one at a time
 +
** Put MAX232 in a socket if you want flexibility
 +
** Remove MAX232 if you want to use FTDI
  
 
[[file:SIMPLE-Z80_U3_ACIA.PNG]]
 
[[file:SIMPLE-Z80_U3_ACIA.PNG]]
  
* Clock
+
=== Clock ===
  
 
[[file:SIMPLE-Z80_U5_CLK.PNG]]
 
[[file:SIMPLE-Z80_U5_CLK.PNG]]
Line 76: Line 87:
  
 
[[FILE:SIMPLE-Z80_J2_J5.PNG]]
 
[[FILE:SIMPLE-Z80_J2_J5.PNG]]
 +
 +
* J2 - EPROM Pin 1 jumper
 +
** 1-2 for 28C64, 28C256 (Pull WE to VCC)
 +
** 2-3 for 27256, 27SF256, 27512 (Pull A14 to GND)
 +
* J5 - EPROM Pin 27 jumper
 +
** GND (2-3)
  
 
==== EEPROM Pin Table ====
 
==== EEPROM Pin Table ====
Line 353: Line 370:
  
 
=== J3 - FTDI / TTL Serial ===
 
=== J3 - FTDI / TTL Serial ===
 +
 +
* Requires a FTDI cross-over cable
 +
* Can only use RS-232 or FTDI - one at a time
 +
** Put MAX232 in a socket if you want flexibility
 +
** Remove MAX232 if you want to use FTDI
  
 
[[file:SIMPLE-Z80_J3_FTDI.PNG]]
 
[[file:SIMPLE-Z80_J3_FTDI.PNG]]
  
 
+
* Pinout
 
# GND
 
# GND
 
# N/C
 
# N/C
Line 371: Line 393:
  
 
== First Unit Checkout ==
 
== First Unit Checkout ==
 +
 +
* PCB
  
 
[[FILE:SIMPLE-Z80_P1090181-720px.jpg]]
 
[[FILE:SIMPLE-Z80_P1090181-720px.jpg]]
Line 377: Line 401:
  
 
* Machined pin sockets
 
* Machined pin sockets
 
[[FILE:SIMPLE-Z80_P1090202-720PX.jpg]]
 
  
 
=== Install Passives ===
 
=== Install Passives ===
Line 391: Line 413:
  
 
* Install Clock parts
 
* Install Clock parts
 +
** Install R2, R3
 +
** Install C5, C6
 
** Install 7.3728 MHz crystal
 
** Install 7.3728 MHz crystal
** Install C5, C6
+
** Install 74HC04 at U5
 +
* Measure clock at U5-4
 +
** 7.32 MHz clock - looks good
  
 
=== Reset ===
 
=== Reset ===
  
* Install U7 Power Monitor
+
* Do not install U8 Power Monitor
 +
** Reset button gets stretched by Power Monitor U9
 
* Install pushbutton switch SW1
 
* Install pushbutton switch SW1
* Reset button gets stretched by Power Monitor U9
+
* Measure reset at Z80 U2 pin marked RST on silkscreen
* Measure reset at 68B09 U5 pin 37
+
 
* Falling edge scope cap
+
[[FILE:SIMPLE-Z80_P1090202-720PX.jpg]]
  
 
=== EPROM ===
 
=== EPROM ===
  
* SST27C256 EEPROM
+
* U6 = SST27C256 EEPROM
 
** 32 KB part
 
** 32 KB part
 
** Using first 16KB of EEPROM
 
** Using first 16KB of EEPROM
Line 411: Line 438:
 
** J5 EEPROM pin 27 = A14 = GND  
 
** J5 EEPROM pin 27 = A14 = GND  
 
*** Jumper J5:2-3
 
*** Jumper J5:2-3
* U1 - Do not install MAX232
 
** Use FTDI connector with [[FTDI-49MM]] card
 
 
  
 
==== EEPROM Programming ====
 
==== EEPROM Programming ====
  
 
* Program using [[TL866ii_Plus_Programmer|TL-866ii plus programmer]]
 
* Program using [[TL866ii_Plus_Programmer|TL-866ii plus programmer]]
* File = [https://github.com/land-boards/lb-boards/blob/master/RetroCPUs/SIMPLE-6809/SOFTWARE/ExBasROM.hex ExBasROM.hex]
+
* File = [https://github.com/land-boards/lb-boards/blob/master/RetroCPUs/SIMPLE-Z80/SOFTWARE/ROM.HEX ROM.HEX] - I/O routines plus BASIC
* Set offsets for 27SF256 part
 
** Part is 32 KB
 
** hex files is 16 KB
 
* Set From File Start Addr(Hex) to 0C000
 
* To Buffer Start Addr(Hex) to 00000
 
 
 
[[FILE:SIMPLE-6809_Programmer_Offsets.PNG]]
 
 
 
* Memory Buffer should look like
 
 
 
[[file:SIMPLE-6809_Programmer_BufferContents.PNG]]
 
 
 
 
* Got Device ID error
 
* Got Device ID error
 
* Turn off ID check
 
* Turn off ID check
Line 438: Line 450:
 
* Device programmed/verified
 
* Device programmed/verified
  
=== Test FTDI Serial ===
+
=== Install CPU, ROM, RAM, ACIA ===
  
* Silkscreen swapped for TX, RX
+
* U1 - Do not install MAX232 yet
 +
** Use FTDI connector with [[FTDI-49MM]] card
  
[[FILE:SIMPLE-6809_J3.PNG]]
+
=== Test FTDI Serial ===
  
 
* Wiring is '''not''' 1:1 to [[FTDI-49MM]]
 
* Wiring is '''not''' 1:1 to [[FTDI-49MM]]
 
* Wire FTDI J3 to [[FTDI-49MM]] card
 
* Wire FTDI J3 to [[FTDI-49MM]] card
** GNDs together
+
** [[FTDI-49MM]] GND pin 1 to J3-1 RX on card
** VCCs together
+
** [[FTDI-49MM]] VCC pin 3 to J3-3 RX on card
** TX on [[FTDI-49MM]] to RX on card
+
** [[FTDI-49MM]] TX pin 4 on to J3-5 RX on card
** RX on [[FTDI-49MM]] to TX on card
+
** [[FTDI-49MM]] RX pin 5 on to J3-4 TX on card
 +
** [[FTDI-49MM]] CTS(in) pin 2 to J3-6 CTS on card
  
[[FILE:SIMPLE-6809_BASIC_DISPLAY.PNG]]
+
[[FILE:SIMPLE-Z80_P1090251-720pxV.jpg]]
  
 
=== Test RS-232 Serial ===
 
=== Test RS-232 Serial ===
  
 
* With MAX232
 
* With MAX232
 +
* Install DB-9 Male
 +
* Holes don't line up well, but 4-40 screws can fit
 
* Connected to [[FTDI-49MM]] and [[DCE]] cards
 
* Connected to [[FTDI-49MM]] and [[DCE]] cards
 
** [[FTDI-49MM]] and [[DCE]] cards wired together
 
** [[FTDI-49MM]] and [[DCE]] cards wired together
 
** [[DCE]] has female DB-9
 
** [[DCE]] has female DB-9
 
** Separate power cable J2 on [[FTDI-49MM]] to J3 on card
 
** Separate power cable J2 on [[FTDI-49MM]] to J3 on card
 +
 +
[[FILE:FTDI_DCE_P1090192-720PXV.jpg]]
 +
 
* Works
 
* Works
  
[[file:SIMPLE-6809_P1090197-720PXV.jpg]]
+
=== Netlist ===
 +
 
 +
* First build had six open traces
 +
** Added wire U2-5 to U4-31
 +
** Added wire U2-15 to U4-14
 +
** Added wire U2-20 to U5-5
 +
** Added wire U2-40 to U4-23
 +
** Added wire U7-3 to U4-29
 +
** Added wire U7-11 to U4-30
 +
* Checked on 2 other boards, not an issue on the boards
 +
* Card worked with wires
 +
 
 +
<pre>
 +
/CPUA0,U2-30,U3-11,U4-12,U6-10,
 +
/CPUA1,U2-31,U4-11,U6-9,
 +
/CPUA2,U2-32,U4-10,U6-8,
 +
/CPUA3,U2-33,U4-9,U6-7,
 +
/CPUA4,U2-34,U4-8,U6-6,
 +
/CPUA5,U2-35,U4-7,U6-5,
 +
/CPUA6,U2-36,U3-9,U4-6,U6-4,
 +
/CPUA7,U2-37,U3-10,U4-5,U6-3,
 +
/CPUA8,U2-38,U4-27,U6-25,
 +
/CPUA9,U2-39,U4-26,U6-24,
 +
/CPUA10,U2-40,U4-23,U6-21,
 +
/CPUA11,U2-1,U4-25,U6-23,
 +
/CPUA12,U2-2,U4-4,U6-2,
 +
/CPUA13,U2-3,U4-28,U6-26,U7-9,
 +
/CPUA14,U2-4,U4-3,U7-10,
 +
/CPUA15,U2-5,U4-31,U7-13,
 +
/CPUCLK,U2-6,U3-3,U3-4,U5-4,
 +
/CPUD0,U2-14,U3-22,U4-13,U6-11,
 +
/CPUD1,U2-15,U3-21,U4-14,U6-12,
 +
/CPUD2,U2-12,U3-20,U4-15,U6-13,
 +
/CPUD3,U2-8,U3-19,U4-17,U6-15,
 +
/CPUD4,U2-7,U3-18,U4-18,U6-16,
 +
/CPUD5,U2-9,U3-17,U4-19,U6-17,
 +
/CPUD6,U2-10,U3-16,U4-20,U6-18,
 +
/CPUD7,U2-13,U3-15,U4-21,U6-19,
 +
/CPUIORQ*,U2-20,U5-5,
 +
/CPUM1,U2-27,U3-8,
 +
/CPUMREQ*,U2-19,U7-2,U7-4,
 +
/CPURD*,U2-21,U7-5,
 +
/CPUWR*,U2-22,U3-13,U7-1,
 +
/EE_PIN1,J2-2,U6-1,
 +
/EE_PIN27,J5-2,U6-27,
 +
/F-RTS*,J3-6,R5-2,
 +
/F_RX,J3-5,R6-2,
 +
/F_TX,J3-4,R7-2,
 +
/IORQ,U3-14,U5-6,
 +
/IRQ*,R4-2,U2-16,U3-7,
 +
/MEMRD*,U4-24,U6-22,U7-6,
 +
/MEMWR*,U4-29,U7-3,
 +
/ROM0RAM1,U4-30,U6-20,U7-11,
 +
/RS_RTS*,J1-7,U1-14,
 +
/RS_RX,J1-2,U1-8,
 +
/RS_TX,J1-3,U1-7,
 +
/RTS*,R5-1,U1-11,U3-5,
 +
/UART_RX,R6-1,U1-9,U3-2,
 +
/UART_TX,R7-1,U1-10,U3-6,
 +
/~{CPURESB},R1-2,SW1-2,U2-26,U8-1,
 +
GND,C10-1,C11-1,C12-1,C13-1,C14-2,C3-2,C4-1,C5-2,C6-2,C7-1,C8-1,C9-1,J1-5,J2-3,J3-1,J4-1,J4-3,J4-5,J4-7,J5-3,SW1-1,U1-15,U2-29,U3-1,U3-23,U3-24,U4-16,U4-2,U4-22,U5-7,U6-14,U7-7,U8-3,
 +
Net-(C5-Pad1),C5-1,R3-1,Y1-2,
 +
Net-(C6-Pad1),C6-1,R2-1,U5-1,Y1-1,
 +
Net-(J1-Pad4),J1-4,J1-6,
 +
Net-(R2-Pad2),R2-2,R3-2,U5-2,U5-3,
 +
Net-(U1-C1+),C1-1,U1-1,
 +
Net-(U1-C1-),C1-2,U1-3,
 +
Net-(U1-C2+),C2-1,U1-4,
 +
Net-(U1-C2-),C2-2,U1-5,
 +
Net-(U1-VS+),C3-1,U1-2,
 +
Net-(U1-VS-),C4-2,U1-6,
 +
Net-(U7-Pad12),U7-12,U7-8,
 +
VCC,C10-2,C11-2,C12-2,C13-2,C14-1,C7-2,C8-2,C9-2,J2-1,J3-3,J4-2,J4-4,J4-6,J4-8,J5-1,R1-1,R4-1,U1-16,U2-11,U2-17,U2-24,U2-25,U3-12,U4-32,U5-11,U5-13,U5-14,U5-9,U6-28,U7-14,U8-2,
 +
</pre>
  
 
== Software ==
 
== Software ==
  
* [https://github.com/land-boards/lb-boards/blob/master/RetroCPUs/SIMPLE-Z80/SOFTWARE/ROM.HEX ROM.HEX] - ROM file
+
=== Z80 Register Set ===
* Nascom Computer BASIC modified to remove all hardware-specific code
+
 
 +
[[file:Z80_Registers.PNG]]
 +
 
 +
=== NASCOM 2 BASIC ===
 +
 
 +
* Nascom 2 Computer BASIC Microsoft BASIC 4.7 modified to remove all hardware-specific code
 +
** [https://github.com/douggilliland/Retro-Computers/tree/master/Z80/LB-Z80/NASCOM_BASIC/NASCOM_56K NASCOM BASIC Source Code] - 56KB version
 +
** [https://github.com/douggilliland/Retro-Computers/tree/master/Z80/LB-Z80/NASCOM_BASIC NASCOM BASIC Source Code] - 32KB version used on [[LB-Z80-01]] card
 +
 
 +
==== Toolchain ====
 +
 
 +
* TASM.EXE
 +
** '''The version of TASM in Grant's build zip file doesn't run under Win 11'''
 +
** [https://github.com/douggilliland/Retro-Computers/tree/master/Z80/LB-Z80/NASCOM_BASIC TASM version that runs on Win 11]
 +
* TASM80.TAB
 +
** [Probably need] the updated one in [https://github.com/douggilliland/Retro-Computers/tree/master/Z80/LB-Z80/NASCOM_BASIC to run on Win 11]
 +
* Assembler files (for Windows 11/DOS)
 +
* S Record and Hex file manipulation
 +
** [https://carta.tech/man-pages/man1/srec_examples.1.html Examples of srec_cat utility]
 +
** [https://srecord.sourceforge.net/man/man1/srec_cat.1.html srec_cat man page]
 +
* Combine int32k.hex and BAS32K.HEX into rom32.hex using srec-cat
 +
** Command line
 +
*** srec_cat.exe int32k.hex -Intel BAS32K.HEX -Intel -fill 0xff 0x0144 0x014f -o rom32.hex -Intel
 +
* _ASSEMBLE.BAT - double-click in Windows to run the assembly if needed
 +
** Adds srec_cat to combine files into one Intel Hex file
 +
 
 +
==== NASCOM BASIC - Code Repository ====
  
=== Source files ===
+
* [https://github.com/douggilliland/Retro-Computers/tree/master/Z80/LB-Z80/NASCOM_BASIC NASCOM BASIC Source Code] - 32KB version
 +
* [https://github.com/douggilliland/Retro-Computers/tree/master/Z80/LB-Z80/NASCOM_BASIC/NASCOM_56K NASCOM BASIC Source Code] - 56KB version
 +
 
 +
==== Source files ====
  
 
* intmini.asm - the interupt driven mini startup program needed to boot into BASIC
 
* intmini.asm - the interupt driven mini startup program needed to boot into BASIC
 
* basic.asm - BASIC 4.7b - a conversion of Microsoft BASIC 4.7, as used on the Nascom computers (see below for details)
 
* basic.asm - BASIC 4.7b - a conversion of Microsoft BASIC 4.7, as used on the Nascom computers (see below for details)
  
=== Output files ===
+
==== Output files ====
  
 
* INTMINI.HEX
 
* INTMINI.HEX
Line 481: Line 602:
 
* Within the ROM, the serial handler is first (starting at address 0000H), followed by the BASIC interpreter (starting at 0100H).
 
* Within the ROM, the serial handler is first (starting at address 0000H), followed by the BASIC interpreter (starting at 0100H).
  
=== Assembler files (for Windows/DOS) ===
+
==== Acknowledgements ====
 +
 
 +
* BASIC is Microsoft BASIC 4.7 for the NASCOM, heavily modified by Grant to remove references to different monitors, screen handlers and keyboard matrix reading
 +
* TASM assembler is a partial distribution of the package from Speech Technology Incorporated
 +
 
 +
=== References ===
 +
 
 +
* [https://ia800203.us.archive.org/27/items/Z80_Assembly_Language_Programming/Z80_Assembly_Language_Programming.pdf Z80 Assembly Language Programming] - Concise  description of the register set, Chapter 3 page 1-42 of Z80, assembly language programming by Leventhal, Lance A.
 +
* [https://ia803204.us.archive.org/4/items/Programming_the_Z-80_2nd_Edition_1980_Rodnay_Zaks/Programming_the_Z-80_2nd_Edition_1980_Rodnay_Zaks.pdf Programming the Z80] 1980 Rodnay Zaks
 +
* [https://archive.org/details/Z80_Assembly_Language_Programming_1979_Leventhal Z80, assembly language programming by Leventhal, Lance A., 1945-]
 +
* [https://en.wikipedia.org/wiki/Intel_HEX Hex file format]
 +
 
 +
[[file:IntelHexRecordFormat.png]]
 +
 
 +
* ASCII Table
 +
 
 +
[[file:ASCII_TABLE.PNG]]
 +
 
 +
== Performance ==
 +
 
 +
* TeraTerm settings
 +
 
 +
[[file:SIMPLE-6809_TeraTerm_Setup.PNG]]
 +
 
 +
* Test software
  
* _ASSEMBLE.BAT - double-click in Windows to run the assembly if needed
+
<pre>
* TASM.EXE
+
10 FOR I =1 TO 10000
* TASM80.TAB
+
20 PRINT I
 +
30 NEXT I
  
=== Acknowledgements ===
+
</pre>
  
* BASIC is Microsoft BASIC 4.7 for the NASCOM, heavily modified by Grant to remove references to different monitors, screen handlers and keyboard matrix reading
+
* Time ~ 27 secs
* TASM assembler is a partial distribution of the package from Speech Technology Incorporated
+
* CPU is 4x the clock speed of the [[SIMPLE-6502]] and [[SIMPLE-6809]] cards
  
 
== Mechanicals ==
 
== Mechanicals ==

Latest revision as of 09:27, 20 September 2024

Tindie-mediums.png

SIMPLE-Z80 P1090251-720pxV.jpg

Features

Memory Map

  • 0x0000-0x1FFF 8KB ROM
  • 0x2000-0xFFFF 56KB SRAM
  • I/O
    • 0x00-0x7F - Free
    • 0x80-0x81 - Serial port (ACIA)

Chip Set

SimpleZ80 Chipset.jpg

Design

CPU

SIMPLE-Z80 U2 CPU.PNG

EPROM

SIMPLE-Z80 U6 EPROM.PNG

SRAM

SIMPLE-Z80 U4 SRAM.PNG

ACIA

  • Requires a FTDI cross-over cable
  • Can only use RS-232 or FTDI - one at a time
    • Put MAX232 in a socket if you want flexibility
    • Remove MAX232 if you want to use FTDI

SIMPLE-Z80 U3 ACIA.PNG

Clock

SIMPLE-Z80 U5 CLK.PNG

Headers / Connectors

SIMPLE-Z80 REV1 CAD.PNG

J1 - RS-232 Serial

  • DB-9 Male
  • Pinout
  1. N/C
  2. Receive
  3. Transmit
  4. Loop to pin 6
  5. GND
  6. Loop to pin 4
  7. RTS
  8. N/C
  9. N/C

J2/J5 - EPROM/EEPROM Select Jumpers

SIMPLE-Z80 J2 J5.PNG

  • J2 - EPROM Pin 1 jumper
    • 1-2 for 28C64, 28C256 (Pull WE to VCC)
    • 2-3 for 27256, 27SF256, 27512 (Pull A14 to GND)
  • J5 - EPROM Pin 27 jumper
    • GND (2-3)

EEPROM Pin Table

27512 27256 27SF256 28C256 27128 2764 28C64 PIN PIN 2764 28C64 27128 28C256 27SF256 27256 27512
A15 VPP VPP A14 VPP VPP N/C 1 28 VCC VCC VCC VCC VCC VCC VCC
A12 A12 A12 A12 A12 A12 A12 2 27 PGM WE* PGM WE* A14 A14 A14
A7 A7 A7 A7 A7 A7 A7 3 26 A13 N/C A13 A13 A13 A13 A13
A6 A6 A6 A6 A6 A6 A6 4 25 A8 A8 A8 A8 A8 A8 A8
A5 A5 A5 A5 A5 A5 A5 5 24 A9 A9 A9 A9 A9 A9 A9
A4 A4 A4 A4 A4 A4 A4 6 23 A11 A11 A11 A11 A11 A11 A11
A3 A3 A3 A3 A3 A3 A3 7 22 OE* OE* OE* OE* OE* OE* OE*
A2 A2 A2 A2 A2 A2 A2 8 21 A10 A10 A10 A10 A10 A10 A10
A1 A1 A1 A1 A1 A1 A1 9 20 CE* CE* CE* CE* CE* CE* CE*
A0 A0 A0 A0 A0 A0 A0 10 19 D7 D7 D7 D7 D7 D7 D7
D0 D0 D0 D0 D0 D0 D0 11 18 D6 D6 D6 D6 D6 D6 D6
D1 D1 D1 D1 D1 D1 D1 12 17 D5 D5 D5 D5 D5 D5 D5
D2 D2 D2 D2 D2 D2 D2 13 16 D4 D4 D4 D4 D4 D4 D4
GND GND GND GND GND GND GND 14 15 D3 D3 D3 D3 D3 D3 D3

J3 - FTDI / TTL Serial

  • Requires a FTDI cross-over cable
  • Can only use RS-232 or FTDI - one at a time
    • Put MAX232 in a socket if you want flexibility
    • Remove MAX232 if you want to use FTDI

SIMPLE-Z80 J3 FTDI.PNG

  • Pinout
  1. GND
  2. N/C
  3. +5V
  4. Transmit (out)
  5. Receive (in)
  6. RTS* (out)

J4 - 5V Power

  • 2x4 header

SIMPLE-Z80 J4 PWR.PNG

First Unit Checkout

  • PCB

SIMPLE-Z80 P1090181-720px.jpg

Install Sockets

  • Machined pin sockets

Install Passives

Power

  • Install 2x4 at J4
  • Power card via J4 with 5V
  • Check power pins on parts

Clock

  • Install Clock parts
    • Install R2, R3
    • Install C5, C6
    • Install 7.3728 MHz crystal
    • Install 74HC04 at U5
  • Measure clock at U5-4
    • 7.32 MHz clock - looks good

Reset

  • Do not install U8 Power Monitor
    • Reset button gets stretched by Power Monitor U9
  • Install pushbutton switch SW1
  • Measure reset at Z80 U2 pin marked RST on silkscreen

SIMPLE-Z80 P1090202-720PX.jpg

EPROM

  • U6 = SST27C256 EEPROM
    • 32 KB part
    • Using first 16KB of EEPROM
    • J2 EEPROM pin 1 = VPP = VCC or GND
      • Jumper J2:2-3
    • J5 EEPROM pin 27 = A14 = GND
      • Jumper J5:2-3

EEPROM Programming

SIMPLE-6502 TL866Plus Program.png

  • Device programmed/verified

Install CPU, ROM, RAM, ACIA

  • U1 - Do not install MAX232 yet

Test FTDI Serial

SIMPLE-Z80 P1090251-720pxV.jpg

Test RS-232 Serial

  • With MAX232
  • Install DB-9 Male
  • Holes don't line up well, but 4-40 screws can fit
  • Connected to FTDI-49MM and DCE cards

FTDI DCE P1090192-720PXV.jpg

  • Works

Netlist

  • First build had six open traces
    • Added wire U2-5 to U4-31
    • Added wire U2-15 to U4-14
    • Added wire U2-20 to U5-5
    • Added wire U2-40 to U4-23
    • Added wire U7-3 to U4-29
    • Added wire U7-11 to U4-30
  • Checked on 2 other boards, not an issue on the boards
  • Card worked with wires
/CPUA0,U2-30,U3-11,U4-12,U6-10,
/CPUA1,U2-31,U4-11,U6-9,
/CPUA2,U2-32,U4-10,U6-8,
/CPUA3,U2-33,U4-9,U6-7,
/CPUA4,U2-34,U4-8,U6-6,
/CPUA5,U2-35,U4-7,U6-5,
/CPUA6,U2-36,U3-9,U4-6,U6-4,
/CPUA7,U2-37,U3-10,U4-5,U6-3,
/CPUA8,U2-38,U4-27,U6-25,
/CPUA9,U2-39,U4-26,U6-24,
/CPUA10,U2-40,U4-23,U6-21,
/CPUA11,U2-1,U4-25,U6-23,
/CPUA12,U2-2,U4-4,U6-2,
/CPUA13,U2-3,U4-28,U6-26,U7-9,
/CPUA14,U2-4,U4-3,U7-10,
/CPUA15,U2-5,U4-31,U7-13,
/CPUCLK,U2-6,U3-3,U3-4,U5-4,
/CPUD0,U2-14,U3-22,U4-13,U6-11,
/CPUD1,U2-15,U3-21,U4-14,U6-12,
/CPUD2,U2-12,U3-20,U4-15,U6-13,
/CPUD3,U2-8,U3-19,U4-17,U6-15,
/CPUD4,U2-7,U3-18,U4-18,U6-16,
/CPUD5,U2-9,U3-17,U4-19,U6-17,
/CPUD6,U2-10,U3-16,U4-20,U6-18,
/CPUD7,U2-13,U3-15,U4-21,U6-19,
/CPUIORQ*,U2-20,U5-5,
/CPUM1,U2-27,U3-8,
/CPUMREQ*,U2-19,U7-2,U7-4,
/CPURD*,U2-21,U7-5,
/CPUWR*,U2-22,U3-13,U7-1,
/EE_PIN1,J2-2,U6-1,
/EE_PIN27,J5-2,U6-27,
/F-RTS*,J3-6,R5-2,
/F_RX,J3-5,R6-2,
/F_TX,J3-4,R7-2,
/IORQ,U3-14,U5-6,
/IRQ*,R4-2,U2-16,U3-7,
/MEMRD*,U4-24,U6-22,U7-6,
/MEMWR*,U4-29,U7-3,
/ROM0RAM1,U4-30,U6-20,U7-11,
/RS_RTS*,J1-7,U1-14,
/RS_RX,J1-2,U1-8,
/RS_TX,J1-3,U1-7,
/RTS*,R5-1,U1-11,U3-5,
/UART_RX,R6-1,U1-9,U3-2,
/UART_TX,R7-1,U1-10,U3-6,
/~{CPURESB},R1-2,SW1-2,U2-26,U8-1,
GND,C10-1,C11-1,C12-1,C13-1,C14-2,C3-2,C4-1,C5-2,C6-2,C7-1,C8-1,C9-1,J1-5,J2-3,J3-1,J4-1,J4-3,J4-5,J4-7,J5-3,SW1-1,U1-15,U2-29,U3-1,U3-23,U3-24,U4-16,U4-2,U4-22,U5-7,U6-14,U7-7,U8-3,
Net-(C5-Pad1),C5-1,R3-1,Y1-2,
Net-(C6-Pad1),C6-1,R2-1,U5-1,Y1-1,
Net-(J1-Pad4),J1-4,J1-6,
Net-(R2-Pad2),R2-2,R3-2,U5-2,U5-3,
Net-(U1-C1+),C1-1,U1-1,
Net-(U1-C1-),C1-2,U1-3,
Net-(U1-C2+),C2-1,U1-4,
Net-(U1-C2-),C2-2,U1-5,
Net-(U1-VS+),C3-1,U1-2,
Net-(U1-VS-),C4-2,U1-6,
Net-(U7-Pad12),U7-12,U7-8,
VCC,C10-2,C11-2,C12-2,C13-2,C14-1,C7-2,C8-2,C9-2,J2-1,J3-3,J4-2,J4-4,J4-6,J4-8,J5-1,R1-1,R4-1,U1-16,U2-11,U2-17,U2-24,U2-25,U3-12,U4-32,U5-11,U5-13,U5-14,U5-9,U6-28,U7-14,U8-2,

Software

Z80 Register Set

Z80 Registers.PNG

NASCOM 2 BASIC

Toolchain

  • TASM.EXE
  • TASM80.TAB
  • Assembler files (for Windows 11/DOS)
  • S Record and Hex file manipulation
  • Combine int32k.hex and BAS32K.HEX into rom32.hex using srec-cat
    • Command line
      • srec_cat.exe int32k.hex -Intel BAS32K.HEX -Intel -fill 0xff 0x0144 0x014f -o rom32.hex -Intel
  • _ASSEMBLE.BAT - double-click in Windows to run the assembly if needed
    • Adds srec_cat to combine files into one Intel Hex file

NASCOM BASIC - Code Repository

Source files

  • intmini.asm - the interupt driven mini startup program needed to boot into BASIC
  • basic.asm - BASIC 4.7b - a conversion of Microsoft BASIC 4.7, as used on the Nascom computers (see below for details)

Output files

  • INTMINI.HEX
  • BASIC.HEX
  • ROM.HEX - the complete 8K ROM ready for burning to an EPROM - the unused contents are filled with FF values.
  • Within the ROM, the serial handler is first (starting at address 0000H), followed by the BASIC interpreter (starting at 0100H).

Acknowledgements

  • BASIC is Microsoft BASIC 4.7 for the NASCOM, heavily modified by Grant to remove references to different monitors, screen handlers and keyboard matrix reading
  • TASM assembler is a partial distribution of the package from Speech Technology Incorporated

References

IntelHexRecordFormat.png

  • ASCII Table

ASCII TABLE.PNG

Performance

  • TeraTerm settings

SIMPLE-6809 TeraTerm Setup.PNG

  • Test software
10 FOR I =1 TO 10000
20 PRINT I
30 NEXT I

Mechanicals

SIMPLE-Z80 REV1 MECHS.PNG

SIMPLE-Z80 Assembly Sheet