Difference between revisions of "SIMPLE-Z80"
Jump to navigation
Jump to search
Blwikiadmin (talk | contribs) |
Blwikiadmin (talk | contribs) |
||
Line 601: | Line 601: | ||
* ROM.HEX - the complete 8K ROM ready for burning to an EPROM - the unused contents are filled with FF values. | * 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). | * Within the ROM, the serial handler is first (starting at address 0000H), followed by the BASIC interpreter (starting at 0100H). | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
==== Acknowledgements ==== | ==== Acknowledgements ==== |
Revision as of 09:26, 20 September 2024
Contents
Features
- Build of Grant Searles's Simple Z80 CPU
- Runs BASIC
- Z80 CPU
- 7.3728 MHz clock
- 56KB SRAM (uses 128KB parts)
- 8KB EPROM/EEPROM
- 68B50 Serial Port (ACIA)
- RS-232 port
- Header for FTDI
- 115,200 baud
- Reset switch with optional DS1813 Power Supervisor
- 95x95mm card
- (4) 6-32 mounting holes
Memory Map
- 0x0000-0x1FFF 8KB ROM
- 0x2000-0xFFFF 56KB SRAM
- I/O
- 0x00-0x7F - Free
- 0x80-0x81 - Serial port (ACIA)
Chip Set
- Ebay listing
- Needs 68B50 to run Grant's code
Design
CPU
EPROM
SRAM
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
Clock
Headers / Connectors
J1 - RS-232 Serial
- DB-9 Male
- Pinout
- N/C
- Receive
- Transmit
- Loop to pin 6
- GND
- Loop to pin 4
- RTS
- N/C
- N/C
J2/J5 - EPROM/EEPROM Select Jumpers
- 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
- Pinout
- GND
- N/C
- +5V
- Transmit (out)
- Receive (in)
- RTS* (out)
J4 - 5V Power
- 2x4 header
First Unit Checkout
- PCB
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
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
- Program using TL-866ii plus programmer
- File = ROM.HEX - I/O routines plus BASIC
- Got Device ID error
- Turn off ID check
- Device programmed/verified
Install CPU, ROM, RAM, ACIA
- U1 - Do not install MAX232 yet
- Use FTDI connector with FTDI-49MM card
Test FTDI Serial
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
- 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
NASCOM 2 BASIC
- Nascom 2 Computer BASIC Microsoft BASIC 4.7 modified to remove all hardware-specific code
- NASCOM BASIC Source Code - 56KB version
- 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
- TASM version that runs on Win 11
- TASM80.TAB
- [Probably need] the updated one in to run on Win 11
- 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
- Command line
- _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 - Assembler Source files (for Windows/DOS)
- NASCOM BASIC Source Code - 32KB version
- NASCOM BASIC Source Code - 56KB version
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
- Z80 Assembly Language Programming - Concise description of the register set, Chapter 3 page 1-42 of Z80, assembly language programming by Leventhal, Lance A.
- Programming the Z80 1980 Rodnay Zaks
- Z80, assembly language programming by Leventhal, Lance A., 1945-
- Hex file format
- ASCII Table
Performance
- TeraTerm settings
- Test software
10 FOR I =1 TO 10000 20 PRINT I 30 NEXT I
- Time ~ 27 secs
- CPU is 4x the clock speed of the SIMPLE-6502 and SIMPLE-6809 cards