├── asm ├── basic │ ├── test.bin │ └── test.asm ├── .gitignore ├── test.asm ├── tetris2.z80 ├── xmodem.z80 ├── echo.z80 ├── serial.z80 ├── sinusoid.z80 ├── sio2.z80 ├── vt102.z80 ├── sio-init.z80 └── sinusoid2.z80 ├── interpreteur ├── Projects ├── RetroZ-SBC │ ├── fp-info-cache │ ├── RetroZ-SBC-rescue.dcm │ ├── RetroZ-SBC-BOM.ods │ ├── RetroZ-SBC-BOM-2.ods │ ├── fp-lib-table │ ├── sym-lib-table │ ├── RetroZ-SBC.pro │ └── RetroZ-SBC-rescue.lib ├── RetroZ-disk │ ├── RetroZ-disk-rescue.dcm │ ├── SPI-to-SD.png │ ├── external-content.duckduckgo.com.png │ ├── src │ │ └── DiskController │ │ │ ├── build.sh │ │ │ ├── DiskController-tests.z80 │ │ │ ├── DiskController.ino │ │ │ ├── callstack.z80 │ │ │ └── retroz-bios-inc.z80 │ ├── sym-lib-table │ ├── RetroZ-disk │ ├── RetroZ-disk.pro │ └── RetroZ-disk-rescue.lib ├── S80-Library │ ├── S80-Library-rescue.dcm │ ├── fp-lib-table │ ├── sym-lib-table │ ├── S80.dcm │ ├── S80 Template.pro │ ├── S80-Library.pro │ ├── S80-Template.pro │ ├── S80-Library.sch │ ├── S80-Library-rescue.lib │ ├── S80.lib │ ├── S80-Library-cache.lib │ └── S80-Template.kicad_pcb └── RetroZ-RAM24K │ ├── fp-lib-table │ ├── libs │ ├── IS62C256AL-45ULI-TR.dcm │ ├── IS62C256AL-45ULI-TR.lib │ └── S80.lib │ ├── sym-lib-table │ ├── RetroZ-RAM24K.pro │ ├── IS62C256AL-45ULI-TR.pretty │ ├── SOIC127P1210X305-28N.kicad_mod │ └── IS62C256AL-45ULI-TR.mod │ ├── RetroZ-RAM24K-cache.lib │ └── RetroZ-RAM24K.kicad_pcb ├── Template └── S80Project │ ├── sym-lib-table │ ├── S80Project.kicad_pcb │ ├── S80Project.sch │ ├── S80Project.pro │ └── S80.lib ├── Documents ├── RetroZ-SBC.pdf ├── RetroZ-SBC-Back.png └── RetroZ-SBC-Front.png ├── .gitignore ├── Libraries ├── SamacSys_Parts.dcm ├── FT230XS-U.lib ├── gamma.kicad_mod ├── SamacSys_Parts.lib ├── Z84C40-SIO2.lib └── SamacSys_Parts.mod ├── basic ├── sinusoid.bas ├── tetris.bas ├── SOMME.BAS ├── gunman.bas ├── gunman2.bas └── inmc-BASIC_programs_BOOK_1 │ └── russian_roulette.bas ├── README.md └── LICENSE /asm/basic/test.bin: -------------------------------------------------------------------------------- 1 | > -------------------------------------------------------------------------------- /interpreteur: -------------------------------------------------------------------------------- 1 | forth 2 | -------------------------------------------------------------------------------- /Projects/RetroZ-SBC/fp-info-cache: -------------------------------------------------------------------------------- 1 | 0 2 | -------------------------------------------------------------------------------- /asm/.gitignore: -------------------------------------------------------------------------------- 1 | *.lst 2 | *.rom 3 | *.hex 4 | -------------------------------------------------------------------------------- /Template/S80Project/sym-lib-table: -------------------------------------------------------------------------------- 1 | (sym_lib_table 2 | ) 3 | -------------------------------------------------------------------------------- /asm/basic/test.asm: -------------------------------------------------------------------------------- 1 | 2 | 3 | ORG $0000 4 | LD A, 0 5 | -------------------------------------------------------------------------------- /asm/test.asm: -------------------------------------------------------------------------------- 1 | .ORG $0000 2 | LD A, 0 3 | .END 4 | 5 | -------------------------------------------------------------------------------- /Documents/RetroZ-SBC.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/formix/RetroZ/HEAD/Documents/RetroZ-SBC.pdf -------------------------------------------------------------------------------- /Template/S80Project/S80Project.kicad_pcb: -------------------------------------------------------------------------------- 1 | (kicad_pcb (version 4) (host kicad "dummy file") ) 2 | -------------------------------------------------------------------------------- /Documents/RetroZ-SBC-Back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/formix/RetroZ/HEAD/Documents/RetroZ-SBC-Back.png -------------------------------------------------------------------------------- /Projects/RetroZ-SBC/RetroZ-SBC-rescue.dcm: -------------------------------------------------------------------------------- 1 | EESchema-DOCLIB Version 2.0 2 | # 3 | #End Doc Library 4 | -------------------------------------------------------------------------------- /Projects/RetroZ-disk/RetroZ-disk-rescue.dcm: -------------------------------------------------------------------------------- 1 | EESchema-DOCLIB Version 2.0 2 | # 3 | #End Doc Library 4 | -------------------------------------------------------------------------------- /Projects/S80-Library/S80-Library-rescue.dcm: -------------------------------------------------------------------------------- 1 | EESchema-DOCLIB Version 2.0 2 | # 3 | #End Doc Library 4 | -------------------------------------------------------------------------------- /Documents/RetroZ-SBC-Front.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/formix/RetroZ/HEAD/Documents/RetroZ-SBC-Front.png -------------------------------------------------------------------------------- /Projects/RetroZ-disk/SPI-to-SD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/formix/RetroZ/HEAD/Projects/RetroZ-disk/SPI-to-SD.png -------------------------------------------------------------------------------- /Template/S80Project/S80Project.sch: -------------------------------------------------------------------------------- 1 | EESchema Schematic File Version 2 2 | EELAYER 25 0 3 | EELAYER END 4 | $EndSCHEMATC 5 | -------------------------------------------------------------------------------- /Projects/RetroZ-SBC/RetroZ-SBC-BOM.ods: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/formix/RetroZ/HEAD/Projects/RetroZ-SBC/RetroZ-SBC-BOM.ods -------------------------------------------------------------------------------- /Projects/RetroZ-SBC/RetroZ-SBC-BOM-2.ods: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/formix/RetroZ/HEAD/Projects/RetroZ-SBC/RetroZ-SBC-BOM-2.ods -------------------------------------------------------------------------------- /Projects/S80-Library/fp-lib-table: -------------------------------------------------------------------------------- 1 | (fp_lib_table 2 | (lib (name S80)(type KiCad)(uri ${KIPRJMOD}/S80.pretty)(options "")(descr "")) 3 | ) 4 | -------------------------------------------------------------------------------- /Projects/RetroZ-SBC/fp-lib-table: -------------------------------------------------------------------------------- 1 | (fp_lib_table 2 | (lib (name Libraries)(type KiCad)(uri ${KIPRJMOD}/../../Libraries)(options "")(descr "")) 3 | ) 4 | -------------------------------------------------------------------------------- /Projects/RetroZ-disk/external-content.duckduckgo.com.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/formix/RetroZ/HEAD/Projects/RetroZ-disk/external-content.duckduckgo.com.png -------------------------------------------------------------------------------- /Projects/S80-Library/sym-lib-table: -------------------------------------------------------------------------------- 1 | (sym_lib_table 2 | (lib (name S80)(type Legacy)(uri ${KIPRJMOD}/S80.lib)(options "")(descr "")) 3 | (lib (name S80-Library-rescue)(type Legacy)(uri ${KIPRJMOD}/S80-Library-rescue.lib)(options "")(descr "")) 4 | ) 5 | -------------------------------------------------------------------------------- /Projects/RetroZ-RAM24K/fp-lib-table: -------------------------------------------------------------------------------- 1 | (fp_lib_table 2 | (lib (name S80)(type KiCad)(uri ${KIPRJMOD}/S80.pretty)(options "")(descr "")) 3 | (lib (name IS62C256AL-45ULI-TR)(type KiCad)(uri ${KIPRJMOD}/IS62C256AL-45ULI-TR.pretty)(options "")(descr "")) 4 | ) 5 | -------------------------------------------------------------------------------- /Projects/RetroZ-disk/src/DiskController/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | mkdir -p out 4 | zasm -uyw DiskController-tests.z80 -o out/a.out 5 | if [ $? -eq 0 ]; then 6 | cat out/a.out > /dev/ttyUSB0 7 | else 8 | >&2 echo "BUILD FAILED" 9 | fi 10 | 11 | -------------------------------------------------------------------------------- /Projects/RetroZ-disk/sym-lib-table: -------------------------------------------------------------------------------- 1 | (sym_lib_table 2 | (lib (name RetroZ-disk-rescue)(type Legacy)(uri ${KIPRJMOD}/RetroZ-disk-rescue.lib)(options "")(descr "")) 3 | (lib (name S80)(type Legacy)(uri ${KIPRJMOD}/..//S80-Library/S80.lib)(options "")(descr "")) 4 | ) 5 | -------------------------------------------------------------------------------- /Projects/RetroZ-RAM24K/libs/IS62C256AL-45ULI-TR.dcm: -------------------------------------------------------------------------------- 1 | EESchema-DOCLIB Version 2.0 2 | # 3 | $CMP IS62C256AL-45ULI-TR 4 | D SRAM Chip Async Single 5V 256K-bit 32K x 8 45ns 28-Pin SOP T/R 5 | F https://www.mouser.ca/datasheet/2/198/62-65C256AL-258444.pdf 6 | $ENDCMP 7 | # 8 | #End Doc Library 9 | -------------------------------------------------------------------------------- /Projects/RetroZ-RAM24K/sym-lib-table: -------------------------------------------------------------------------------- 1 | (sym_lib_table 2 | (lib (name S80)(type Legacy)(uri D:/Users/jeanp/Dropbox/documents/KiCad/RetroZ/Projects/S80-Library/S80.lib)(options "")(descr "")) 3 | (lib (name IS62C256AL-45ULI-TR)(type Legacy)(uri ${KIPRJMOD}/libs/IS62C256AL-45ULI-TR.lib)(options "")(descr "")) 4 | ) 5 | -------------------------------------------------------------------------------- /Projects/S80-Library/S80.dcm: -------------------------------------------------------------------------------- 1 | EESchema-DOCLIB Version 2.0 2 | # 3 | $CMP S80_Interface 4 | D S80 Interface for Z80 5 | K S80 Interface 6 | $ENDCMP 7 | # 8 | $CMP Z80CPU 9 | D 8-bit General Purpose Microprocessor, DIP-40 10 | K Z80 CPU uP 11 | F www.zilog.com/manage_directlink.php?filepath=docs/z80/um0080 12 | $ENDCMP 13 | # 14 | #End Doc Library 15 | -------------------------------------------------------------------------------- /Projects/RetroZ-SBC/sym-lib-table: -------------------------------------------------------------------------------- 1 | (sym_lib_table 2 | (lib (name RetroZ-SBC-rescue)(type Legacy)(uri ${KIPRJMOD}/RetroZ-SBC-rescue.lib)(options "")(descr "")) 3 | (lib (name FT230XS-U)(type Legacy)(uri D:/Users/jeanp/Dropbox/documents/KiCad/RetroZ/Libraries/FT230XS-U.lib)(options "")(descr "")) 4 | (lib (name SamacSys_Parts)(type Legacy)(uri D:/Users/jeanp/Dropbox/documents/KiCad/RetroZ/Libraries/SamacSys_Parts.lib)(options "")(descr "")) 5 | (lib (name Z84C40-SIO2)(type Legacy)(uri D:/Users/jeanp/Dropbox/documents/KiCad/RetroZ/Libraries/Z84C40-SIO2.lib)(options "")(descr "")) 6 | ) 7 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # For PCBs designed using KiCad: http://www.kicad-pcb.org/ 2 | # Format documentation: http://kicad-pcb.org/help/file-formats/ 3 | 4 | # Temporary files 5 | *.000 6 | *.bak 7 | *.bck 8 | *.kicad_pcb-bak 9 | *~ 10 | _autosave-* 11 | *.tmp 12 | #*-cache.lib 13 | #*-rescue.lib 14 | *-save.pro 15 | *-save.kicad_pcb 16 | *.swp 17 | 18 | # Netlist files (exported from Eeschema) 19 | *.net 20 | 21 | # Autorouter files (exported from Pcbnew) 22 | *.dsn 23 | *.ses 24 | 25 | # Exported BOM files 26 | *.xml 27 | *.csv 28 | 29 | # unrelated cloud files 30 | .dropbox 31 | plots 32 | 33 | 34 | # outputs from compilation, plot, etc 35 | out 36 | -------------------------------------------------------------------------------- /asm/tetris2.z80: -------------------------------------------------------------------------------- 1 | #target rom 2 | 3 | #data HEAP,$8000 4 | 5 | #code CODE,$0000 6 | LD SP,$FFFF ;sets the stack starting address to 65535 7 | JP MAIN 8 | 9 | 10 | #include "sio2.z80" 11 | #include "vt102.z80" 12 | #include "serial.z80" 13 | 14 | 15 | 16 | 17 | MAIN: 18 | CALL SIO2_INIT 19 | CALL VT102_INIT 20 | 21 | 22 | HELLO DEFB "Salut!!!",10,13,0 23 | 24 | LD B,10 25 | LD HL, HELLO 26 | SAY: CALL PRINT 27 | DJNZ SAY 28 | 29 | MAIN_LOOP: 30 | JR MAIN_LOOP 31 | 32 | 33 | KEY_PRESSED: 34 | ;The A register contains the character 35 | LD HL,HELLO 36 | CALL PRINT 37 | ;CALL PUTCHAR 38 | RET 39 | -------------------------------------------------------------------------------- /Libraries/SamacSys_Parts.dcm: -------------------------------------------------------------------------------- 1 | EESchema-DOCLIB Version 2.0 2 | # 3 | $CMP ADM803TAKSZ-REEL7 4 | D Analog Devices ADM803TAKSZ-REEL7, Voltage Supervisor, 1.2 5.5 V, 3-Pin SC-70 5 | F https://www.mouser.ca/datasheet/2/609/ADM803_809_810-878720.pdf 6 | $ENDCMP 7 | # 8 | $CMP AS6C62256-55PCN 9 | D Alliance Memory AS6C62256-55PCN SRAM Memory, 256kbit, 2.7 5.5 V, 55ns 28-Pin PDIP 10 | F https://componentsearchengine.com/Datasheets/1/AS6C62256-55PCN.pdf 11 | $ENDCMP 12 | # 13 | $CMP AT28C256B-15PU 14 | D AT28C64B-15PU, Parallel EEPROM Memory 64kbit, Parallel, 150ns 4.5 5.5 V, 28-Pin PDIP 15 | F https://componentsearchengine.com/Datasheets/1/AT28C64B-15PU.pdf 16 | $ENDCMP 17 | # 18 | $CMP NE555D 19 | D NE555DG4, Timer, 4.5 To 16V, 8-Pin SOIC-8 20 | F http://www.ti.com/lit/ds/symlink/ne555.pdf 21 | $ENDCMP 22 | # 23 | #End Doc Library 24 | -------------------------------------------------------------------------------- /basic/sinusoid.bas: -------------------------------------------------------------------------------- 1 | 10 esc$=chr$(27) 2 | 20 t=0 3 | 30 scount=int(sin(t)*14)+15 4 | 40 ls$=" " 5 | 50 mystring$=left$(ls$, scount) 6 | 60 gosub 200 7 | 70 for i=1 to 7 8 | 80 mystring$=esc$+"[2;3" + right$(str$(i),1)+"m#" 9 | 90 gosub 200 10 | 100 next i 11 | 110 print "" 12 | 13 | 120 t=t+0.2 14 | 130 c=c+1 15 | 140 if c>7 then c = 1 16 | 150 if t>6.28 then t = 0 17 | 160 goto 30 18 | 19 | 200 for j=1 to len(mystring$) 20 | 210 out 1, asc(mid$(mystring$,j,1)) 21 | 220 next j 22 | 230 return 23 | 24 | 25 | REM ----------------------------------- 26 | 27 | 10 esc$=chr$(27) 28 | 20 t = 0 29 | 30 c = int(t/0.89) + 1 30 | 40 scount=int(sin(t)*14)+20 31 | 50 print esc$;"[2;3"&right$(str$(c),1)&"m";tab(scount);"#######" 32 | 60 t = t + 0.2 33 | 70 if t > 6.28 then t = 0 34 | 80 goto 30 35 | -------------------------------------------------------------------------------- /Template/S80Project/S80Project.pro: -------------------------------------------------------------------------------- 1 | update=22/05/2015 07:44:53 2 | version=1 3 | last_client=kicad 4 | [general] 5 | version=1 6 | RootSch= 7 | BoardNm= 8 | [pcbnew] 9 | version=1 10 | LastNetListRead= 11 | UseCmpFile=1 12 | PadDrill=0.600000000000 13 | PadDrillOvalY=0.600000000000 14 | PadSizeH=1.500000000000 15 | PadSizeV=1.500000000000 16 | PcbTextSizeV=1.500000000000 17 | PcbTextSizeH=1.500000000000 18 | PcbTextThickness=0.300000000000 19 | ModuleTextSizeV=1.000000000000 20 | ModuleTextSizeH=1.000000000000 21 | ModuleTextSizeThickness=0.150000000000 22 | SolderMaskClearance=0.000000000000 23 | SolderMaskMinWidth=0.000000000000 24 | DrawSegmentWidth=0.200000000000 25 | BoardOutlineThickness=0.100000000000 26 | ModuleOutlineThickness=0.150000000000 27 | [cvpcb] 28 | version=1 29 | NetIExt=net 30 | [eeschema] 31 | version=1 32 | LibDir= 33 | [eeschema/libraries] 34 | -------------------------------------------------------------------------------- /Projects/S80-Library/S80 Template.pro: -------------------------------------------------------------------------------- 1 | update=22/05/2015 07:44:53 2 | version=1 3 | last_client=kicad 4 | [general] 5 | version=1 6 | RootSch= 7 | BoardNm= 8 | [pcbnew] 9 | version=1 10 | LastNetListRead= 11 | UseCmpFile=1 12 | PadDrill=0.600000000000 13 | PadDrillOvalY=0.600000000000 14 | PadSizeH=1.500000000000 15 | PadSizeV=1.500000000000 16 | PcbTextSizeV=1.500000000000 17 | PcbTextSizeH=1.500000000000 18 | PcbTextThickness=0.300000000000 19 | ModuleTextSizeV=1.000000000000 20 | ModuleTextSizeH=1.000000000000 21 | ModuleTextSizeThickness=0.150000000000 22 | SolderMaskClearance=0.000000000000 23 | SolderMaskMinWidth=0.000000000000 24 | DrawSegmentWidth=0.200000000000 25 | BoardOutlineThickness=0.100000000000 26 | ModuleOutlineThickness=0.150000000000 27 | [cvpcb] 28 | version=1 29 | NetIExt=net 30 | [eeschema] 31 | version=1 32 | LibDir= 33 | [eeschema/libraries] 34 | -------------------------------------------------------------------------------- /Projects/S80-Library/S80-Library.pro: -------------------------------------------------------------------------------- 1 | update=22/05/2015 07:44:53 2 | version=1 3 | last_client=kicad 4 | [general] 5 | version=1 6 | RootSch= 7 | BoardNm= 8 | [pcbnew] 9 | version=1 10 | LastNetListRead= 11 | UseCmpFile=1 12 | PadDrill=0.600000000000 13 | PadDrillOvalY=0.600000000000 14 | PadSizeH=1.500000000000 15 | PadSizeV=1.500000000000 16 | PcbTextSizeV=1.500000000000 17 | PcbTextSizeH=1.500000000000 18 | PcbTextThickness=0.300000000000 19 | ModuleTextSizeV=1.000000000000 20 | ModuleTextSizeH=1.000000000000 21 | ModuleTextSizeThickness=0.150000000000 22 | SolderMaskClearance=0.000000000000 23 | SolderMaskMinWidth=0.000000000000 24 | DrawSegmentWidth=0.200000000000 25 | BoardOutlineThickness=0.100000000000 26 | ModuleOutlineThickness=0.150000000000 27 | [cvpcb] 28 | version=1 29 | NetIExt=net 30 | [eeschema] 31 | version=1 32 | LibDir= 33 | [eeschema/libraries] 34 | -------------------------------------------------------------------------------- /Projects/S80-Library/S80-Template.pro: -------------------------------------------------------------------------------- 1 | update=22/05/2015 07:44:53 2 | version=1 3 | last_client=kicad 4 | [general] 5 | version=1 6 | RootSch= 7 | BoardNm= 8 | [pcbnew] 9 | version=1 10 | LastNetListRead= 11 | UseCmpFile=1 12 | PadDrill=0.600000000000 13 | PadDrillOvalY=0.600000000000 14 | PadSizeH=1.500000000000 15 | PadSizeV=1.500000000000 16 | PcbTextSizeV=1.500000000000 17 | PcbTextSizeH=1.500000000000 18 | PcbTextThickness=0.300000000000 19 | ModuleTextSizeV=1.000000000000 20 | ModuleTextSizeH=1.000000000000 21 | ModuleTextSizeThickness=0.150000000000 22 | SolderMaskClearance=0.000000000000 23 | SolderMaskMinWidth=0.000000000000 24 | DrawSegmentWidth=0.200000000000 25 | BoardOutlineThickness=0.100000000000 26 | ModuleOutlineThickness=0.150000000000 27 | [cvpcb] 28 | version=1 29 | NetIExt=net 30 | [eeschema] 31 | version=1 32 | LibDir= 33 | [eeschema/libraries] 34 | -------------------------------------------------------------------------------- /Projects/RetroZ-RAM24K/RetroZ-RAM24K.pro: -------------------------------------------------------------------------------- 1 | update=22/05/2015 07:44:53 2 | version=1 3 | last_client=kicad 4 | [general] 5 | version=1 6 | RootSch= 7 | BoardNm= 8 | [pcbnew] 9 | version=1 10 | LastNetListRead= 11 | UseCmpFile=1 12 | PadDrill=0.600000000000 13 | PadDrillOvalY=0.600000000000 14 | PadSizeH=1.500000000000 15 | PadSizeV=1.500000000000 16 | PcbTextSizeV=1.500000000000 17 | PcbTextSizeH=1.500000000000 18 | PcbTextThickness=0.300000000000 19 | ModuleTextSizeV=1.000000000000 20 | ModuleTextSizeH=1.000000000000 21 | ModuleTextSizeThickness=0.150000000000 22 | SolderMaskClearance=0.000000000000 23 | SolderMaskMinWidth=0.000000000000 24 | DrawSegmentWidth=0.200000000000 25 | BoardOutlineThickness=0.100000000000 26 | ModuleOutlineThickness=0.150000000000 27 | [cvpcb] 28 | version=1 29 | NetIExt=net 30 | [eeschema] 31 | version=1 32 | LibDir= 33 | [eeschema/libraries] 34 | -------------------------------------------------------------------------------- /asm/xmodem.z80: -------------------------------------------------------------------------------- 1 | 2 | NULL EQU 0 3 | 4 | SIOA_C EQU $00 5 | SIOA_D EQU $01 6 | SIOB_C EQU $02 7 | SIOB_D EQU $03 8 | 9 | CH0 EQU $00 10 | 11 | TEMP0 EQU $1015 ;holds numbers of unsuccessfull blockduring download. 12 | 13 | INT_VEC: 14 | ORG $1C 15 | DEFW BYTE_AVAILABLE 16 | DEFW SPEC_BYTE_COND 17 | 18 | 19 | ;Setup Rx and Tx 20 | LD A,$00 ; write 0 21 | OUT (SIOA_C),A 22 | LD A,$18 ; reset ext/status interrupts 23 | OUT (SIOA_C),A 24 | 25 | LD A,$04 ; write 4 26 | OUT (SIOA_C),A 27 | LD A,$C4 ; X64, no parity, 1 stop 28 | OUT (SIOA_C),A 29 | 30 | LD A,$05 ; write 5 31 | OUT (SIOA_C),A 32 | LD A,$E8 ;DTR on, TX 8bit, BREAK off, TX on, RTS off 33 | OUT (SIOA_C),A 34 | 35 | -------------------------------------------------------------------------------- /Projects/RetroZ-SBC/RetroZ-SBC.pro: -------------------------------------------------------------------------------- 1 | update=19/01/2019 20:12:44 2 | version=1 3 | last_client=kicad 4 | [general] 5 | version=1 6 | RootSch= 7 | BoardNm= 8 | [pcbnew] 9 | version=1 10 | LastNetListRead= 11 | UseCmpFile=1 12 | PadDrill=0.600000000000 13 | PadDrillOvalY=0.600000000000 14 | PadSizeH=1.500000000000 15 | PadSizeV=1.500000000000 16 | PcbTextSizeV=1.500000000000 17 | PcbTextSizeH=1.500000000000 18 | PcbTextThickness=0.300000000000 19 | ModuleTextSizeV=1.000000000000 20 | ModuleTextSizeH=1.000000000000 21 | ModuleTextSizeThickness=0.150000000000 22 | SolderMaskClearance=0.000000000000 23 | SolderMaskMinWidth=0.000000000000 24 | DrawSegmentWidth=0.200000000000 25 | BoardOutlineThickness=0.100000000000 26 | ModuleOutlineThickness=0.150000000000 27 | [cvpcb] 28 | version=1 29 | NetIExt=net 30 | [eeschema] 31 | version=1 32 | LibDir= 33 | [eeschema/libraries] 34 | [schematic_editor] 35 | version=1 36 | PageLayoutDescrFile= 37 | PlotDirectoryName=../../Documents/ 38 | SubpartIdSeparator=0 39 | SubpartFirstId=65 40 | NetFmtName=Pcbnew 41 | SpiceAjustPassiveValues=0 42 | LabSize=50 43 | ERC_TestSimilarLabels=1 44 | -------------------------------------------------------------------------------- /Libraries/FT230XS-U.lib: -------------------------------------------------------------------------------- 1 | EESchema-LIBRARY Version 2.3 2 | #encoding utf-8 3 | # 4 | # FT230XS-U 5 | # 6 | DEF FT230XS-U U 0 20 Y Y 1 F N 7 | F0 "U" 50 50 60 H V C CNN 8 | F1 "FT230XS-U" 425 -800 60 H V C CNN 9 | F2 "Housings_SSOP:TSSOP-16_4.4x5mm_Pitch0.65mm" 250 200 60 H I C CNN 10 | F3 "https://www.mouser.ca/datasheet/2/163/DS_FT230X-5395.pdf" 275 350 60 H I C CNN 11 | DRAW 12 | X GND 5 175 -550 200 R 50 50 0 0 W N 13 | X VCC 12 175 -475 200 R 50 50 0 0 W N 14 | X GND 13 175 -625 200 R 50 50 0 0 W N 15 | S 0 0 850 -750 0 1 0 N 16 | X TXD 1 -200 -375 200 R 50 50 1 1 O 17 | X ~RTS 2 -200 -675 200 R 50 50 1 1 O V 18 | X VCCIO 3 1050 -425 200 L 50 50 1 1 W 19 | X RXD 4 -200 -475 200 R 50 50 1 1 I 20 | X ~CTS 6 -200 -575 200 R 50 50 1 1 I L 21 | X CBUS2/~TXLED 7 -200 -175 200 R 50 50 1 1 B 22 | X USBDP 8 1050 -75 200 L 50 50 1 1 I 23 | X USBDM 9 1050 -175 200 L 50 50 1 1 I 24 | X 3V3OUT 10 1050 -325 200 L 50 50 1 1 w 25 | X ~RESET 11 -200 -275 200 R 50 50 1 1 I L 26 | X CBUS1/~RXLED 14 -200 -75 200 R 50 50 1 1 B 27 | X CBUS0/TXDEN 15 1050 -575 200 L 50 50 1 1 B 28 | X CBUS3/~SLEEP 16 1050 -675 200 L 50 50 1 1 B 29 | ENDDRAW 30 | ENDDEF 31 | # 32 | #End Library 33 | -------------------------------------------------------------------------------- /asm/echo.z80: -------------------------------------------------------------------------------- 1 | #target rom 2 | 3 | ; TETRIS FOR THE RetroZ-SBC 4 | ; BY JEAN-PHILIPPE GRAVEL, (c) 2019 5 | 6 | #include "sio-init.z80" 7 | 8 | 9 | #data _HEAP,$8000 10 | 11 | 12 | 13 | #code _MAIN 14 | 15 | HELLO DEFB "HELLO!",10,13,0 16 | 17 | 18 | 19 | MAIN: 20 | EI 21 | CALL SIOA_EI 22 | LOOP: 23 | JR LOOP 24 | 25 | KEY_PRESSED: 26 | CALL PUTCHAR 27 | RET 28 | 29 | 30 | 31 | 32 | ; *************************************************************************** 33 | ; Prints the NULL terminated string pointed by HL to SIOA_D. 34 | ; When this function returns, HL contains the address of the NULL character. 35 | ; *************************************************************************** 36 | ;PRINT: 37 | ; CALL A_RTS_ON 38 | ; LD A,(HL) 39 | ; OR A,NULL ;Checks if the content of A is null 40 | ; JR Z,PRINT_END ;If null, then exit the function 41 | ; CALL PUTCHAR ;Print the character and... 42 | ; INC HL ;...move to the next char 43 | ; JR PRINT ;Print the next char 44 | ;PRINT_END: 45 | ; CALL A_RTS_OFF 46 | ; RET 47 | 48 | -------------------------------------------------------------------------------- /basic/tetris.bas: -------------------------------------------------------------------------------- 1 | 10 REM ----------------------------- 2 | 20 REM Tetris for RetroZ-SBC 3 | 30 REM an S80 Single Board Computer 4 | 40 REM ------------------------------ 5 | 45 cls 6 | 50 esc$=CHR$(27) 7 | 52 vtcmd$=esc$+"[" 8 | 60 Black$="2;30m" 9 | 61 DRed$="2;31m" 10 | 62 DGreen$="2;32m" 11 | 63 DYellow$="2;33m" 12 | 64 DBlue$="2;34m" 13 | 65 DMagenta$="2;35m" 14 | 66 DCyan$="2;36m" 15 | 67 LightGrey$="2;37m" 16 | 99 goto 1000 17 | 18 | 100 REM ----vvvv---- PRINT_BLOCKS(ROW,COL,CNT) ----vvvv---- 19 | 110 gosub 200 REM SETPOS 20 | 120 for i=1 to cnt 21 | 130 out 1,asc("#") 22 | 140 next i 23 | 150 return 24 | 170 REM ----^^^^---- END PRINT_BLOCK ----^^^^---- 25 | 26 | 200 REM ----vvvv---- SET_POS(ROW,COL) ----vvvv---- 27 | 210 r$=str$(row) 28 | 215 r$=right$(r$, len(r$)-1) 29 | 220 c$=str$(col) 30 | 230 c$=right$(r$, len(r$)-1) 31 | 240 cmd$=vtcmd$+r$+";"+c$+"f" 32 | 150 cmdlen=len(cmd$) 33 | 160 for i=1 to cmdlen 34 | 170 out 1, asc(mid$(cmd$,i,1)) 35 | 180 next i 36 | 190 return 37 | 38 | 39 | 300 REM ----vvvv---- DRAW_BOX(ROW,COL,WIDTH,HEIGHT) ----vvvv---- 40 | 310 41 | 42 | 1000 REM ----vvvv---- START ----vvvv---- 43 | 1010 row=15 44 | 1020 col=25 45 | 1030 cnt=3 46 | 1040 gosub 100 47 | 48 | 49 | -------------------------------------------------------------------------------- /basic/SOMME.BAS: -------------------------------------------------------------------------------- 1 | 2 | 2 INPUT"COMPTER JUSQU'A";NVAL$ 3 | 3 COUNT=NVAL 4 | 5 GOSUB 3000 5 | 10 I=0 6 | 15 SUM=0 7 | 20 I=I+1 8 | 30 SUM=SUM+I 9 | 40 REM PRINT I;" ";SUM 10 | 50 IF I32 then 80 12 | 77 gosub 4000 13 | 80 IF CHR$(K)="q" THEN 999 14 | 90 if DX=0 then 110 15 | 100 gosub 2000 16 | 110 if DY=0 then 130 17 | 120 gosub 3000 18 | 130 rem 19 | 998 GOTO 20 20 | 999 END 21 | 1000 REM Draw the guy 22 | 1005 REM DIR(ection)=0 23 | 1010 SCREEN X,Y-1:PRINT "O" 24 | 1020 SCREEN X-2,Y:PRINT " |-+" 25 | 1030 SCREEN X-1,Y+1:PRINT "/ \" 26 | 1040 screen 2,30:print x;","y 27 | 1060 RETURN 28 | 2000 REM Clear vertical 29 | 2010 SCREEN X-DX,Y-1:PRINT " " 30 | 2012 fix=0 31 | 2015 if DX>0 then fix=-1 32 | 2020 SCREEN x-DX-sgn(dx)+fix,Y:PRINT " " 33 | 2030 SCREEN x-DX-sgn(dx),Y+1:PRINT " " 34 | 2040 RETURN 35 | 3000 REM Clear horizontal 36 | 3010 screen x-1,y-DY*2:print " " 37 | 3020 screen x-2,y-DY:print " " 38 | 3030 screen x+2,y-DY:print " " 39 | 3040 rem if DY=-1 then return 40 | 3050 screen x-1,y-DY:print " " 41 | 3060 screen x+1,y-dy:print " " 42 | 3070 return 43 | 4000 REM SHOOT! 44 | 4010 bx=x+3 45 | 4020 by=y 46 | 4022 color 6,0 47 | 4025 for i=1 to reach 48 | 4030 if i>1 then 4036 49 | 4033 screen bx+i,by:print blt$ 50 | 4036 screen bx+i-1,by:print " ";blt$ 51 | 4040 for w=0 to 20:next w 52 | 4060 next i 53 | 4070 screen bx+i-1,by:print " " 54 | 4080 color 7,0 55 | 4100 RETURN 56 | 57 | -------------------------------------------------------------------------------- /Projects/RetroZ-RAM24K/libs/IS62C256AL-45ULI-TR.lib: -------------------------------------------------------------------------------- 1 | EESchema-LIBRARY Version 2.4 2 | #encoding utf-8 3 | # 4 | # IS62C256AL-45ULI-TR 5 | # 6 | DEF IS62C256AL-45ULI-TR IC 0 30 Y Y 1 F N 7 | F0 "IC" 200 250 50 H V L CNN 8 | F1 "IS62C256AL-45ULI-TR" 200 150 50 H V L CNN 9 | F2 "SOIC127P1210X305-28N" 200 1100 50 H I L CNN 10 | F3 "https://www.mouser.ca/datasheet/2/198/62-65C256AL-258444.pdf" 200 1000 50 H I L CNN 11 | F4 "SRAM Chip Async Single 5V 256K-bit 32K x 8 45ns 28-Pin SOP T/R" 200 900 50 H I L CNN "Description" 12 | F5 "3.05" 200 800 50 H I L CNN "Height" 13 | F6 "Integrated Silicon Solution Inc." 200 500 50 H I L CNN "Manufacturer_Name" 14 | F7 "IS62C256AL-45ULI-TR" 200 400 50 H I L CNN "Manufacturer_Part_Number" 15 | DRAW 16 | T 900 550 -650 50 0 0 0 "RAM 32K x 8" Normal 0 C C 17 | P 5 0 1 6 200 100 900 100 900 -1400 200 -1400 200 100 N 18 | X A14 1 0 -1350 200 R 50 50 0 0 I 19 | X A0 10 0 50 200 R 50 50 0 0 I 20 | X I/O0 11 1100 -1150 200 L 50 50 0 0 B 21 | X I/O1 12 1100 -1050 200 L 50 50 0 0 B 22 | X I/O2 13 1100 -950 200 L 50 50 0 0 B 23 | X GND 14 1100 -1350 200 L 50 50 0 0 W 24 | X I/O3 15 1100 -850 200 L 50 50 0 0 B 25 | X I/O4 16 1100 -750 200 L 50 50 0 0 B 26 | X I/O5 17 1100 -650 200 L 50 50 0 0 B 27 | X I/O6 18 1100 -550 200 L 50 50 0 0 B 28 | X I/O7 19 1100 -450 200 L 50 50 0 0 B 29 | X A12 2 0 -1150 200 R 50 50 0 0 I 30 | X ~CE 20 1100 -100 200 L 50 50 0 0 I I 31 | X A10 21 0 -950 200 R 50 50 0 0 I 32 | X ~OE 22 1100 -200 200 L 50 50 0 0 I I 33 | X A11 23 0 -1050 200 R 50 50 0 0 I 34 | X A9 24 0 -850 200 R 50 50 0 0 I 35 | X A8 25 0 -750 200 R 50 50 0 0 I 36 | X A13 26 0 -1250 200 R 50 50 0 0 I 37 | X ~WE 27 1100 -300 200 L 50 50 0 0 I I 38 | X VCC 28 1100 50 200 L 50 50 0 0 W 39 | X A7 3 0 -650 200 R 50 50 0 0 I 40 | X A6 4 0 -550 200 R 50 50 0 0 I 41 | X A5 5 0 -450 200 R 50 50 0 0 I 42 | X A4 6 0 -350 200 R 50 50 0 0 I 43 | X A3 7 0 -250 200 R 50 50 0 0 I 44 | X A2 8 0 -150 200 R 50 50 0 0 I 45 | X A1 9 0 -50 200 R 50 50 0 0 I 46 | ENDDRAW 47 | ENDDEF 48 | # 49 | #End Library 50 | -------------------------------------------------------------------------------- /Projects/RetroZ-disk/src/DiskController/DiskController-tests.z80: -------------------------------------------------------------------------------- 1 | #target bin 2 | 3 | #include "retroz-bios-inc.z80" 4 | #include "callstack.z80" 5 | 6 | ;layout 7 | #code _HEADER 8 | #code _PROGRAM 9 | #code _PROGRAM_FOOTER 10 | #code _DATA 11 | #data _HEAP,_DATA_end 12 | 13 | EXEC_TARGET EQU $8100 14 | 15 | DISK_DATA EQU $20 16 | DISK_CMD EQU $21 17 | DISK_STATUS EQU $22 18 | 19 | #data _HEAP 20 | .PHASE EXEC_TARGET+_PROGRAM_size+_DATA_size 21 | 22 | ITOA_BUF DEFS 17 23 | 24 | 25 | #code _HEADER 26 | DEFB 0 27 | DEFW _PROGRAM_size+_DATA_size 28 | DEFW EXEC_TARGET 29 | 30 | 31 | #code _DATA 32 | .PHASE EXEC_TARGET+_PROGRAM_size 33 | 34 | WELCOME DEFB "*** RetroZ Disk Controller Test Suite ***",0 35 | PRESS_ANY_KEY DEFB "Press any key to reset...",0 36 | RESETTING DEFB "Resetting...",0 37 | 38 | 39 | #code _PROGRAM 40 | .PHASE EXEC_TARGET 41 | 42 | _ADDLP WELCOME 43 | _CALL PRINTLN 44 | CALL NEWLINE 45 | 46 | 47 | ; Read the status register from the disk controller 48 | LD H,0 49 | IN A,(DISK_STATUS) 50 | LD L,A 51 | _ADDRP HL 52 | _CALL UINT_TO_STRING 53 | _ADDRP HL 54 | _CALL PRINTLN 55 | 56 | _ADDLP PRESS_ANY_KEY 57 | _CALL PRINTLN 58 | 59 | CALL START_RX_INT ;Start listening to keyboard inputs 60 | 61 | 62 | PROGRAM_LOOP: 63 | CALL GETCHAR ; Read the next character in the console 64 | JR Z, PROGRAM_LOOP ; Loop if no key pressed. 65 | _ADDLP RESETTING 66 | _CALL PRINTLN 67 | JP 0 ;Hot reset 68 | 69 | 70 | 71 | PRINTLN: 72 | POP IX 73 | CALL PRINT 74 | LD A,10 75 | CALL OUTC 76 | LD A,13 77 | CALL OUTC 78 | PUSH IX 79 | RET 80 | 81 | NEWLINE: 82 | LD A,10 83 | CALL OUTC 84 | LD A,13 85 | CALL OUTC 86 | RET 87 | 88 | 89 | UINT_TO_STRING: 90 | _GETP DE,0 91 | _ADDLP 10 ;Decimal display (conv. base) 92 | _ADDRP DE ;The number to convert 93 | _ADDLP 17 ;The size of the string buffer 94 | _ADDLP ITOA_BUF ;The target string buffer 95 | _CALL ITOA 96 | _RET_HL HL 97 | 98 | END -------------------------------------------------------------------------------- /Projects/S80-Library/S80-Library.sch: -------------------------------------------------------------------------------- 1 | EESchema Schematic File Version 4 2 | LIBS:S80-Library-cache 3 | EELAYER 26 0 4 | EELAYER END 5 | $Descr A4 11693 8268 6 | encoding utf-8 7 | Sheet 1 1 8 | Title "" 9 | Date "" 10 | Rev "" 11 | Comp "" 12 | Comment1 "" 13 | Comment2 "" 14 | Comment3 "" 15 | Comment4 "" 16 | $EndDescr 17 | $Comp 18 | L MCU_Microchip_ATmega:ATmega328P-PU U1 19 | U 1 1 5D005B60 20 | P 6550 3675 21 | F 0 "U1" H 5909 3721 50 0000 R CNN 22 | F 1 "ATmega328P-PU" H 5909 3630 50 0000 R CNN 23 | F 2 "Housings_DIP:DIP-28_W7.62mm" H 6550 3675 50 0001 C CIN 24 | F 3 "http://ww1.microchip.com/downloads/en/DeviceDoc/ATmega328_P%20AVR%20MCU%20with%20picoPower%20Technology%20Data%20Sheet%2040001984A.pdf" H 6550 3675 50 0001 C CNN 25 | 1 6550 3675 26 | -1 0 0 -1 27 | $EndComp 28 | $Comp 29 | L power:GND #PWR0101 30 | U 1 1 5D005C0E 31 | P 6550 5175 32 | F 0 "#PWR0101" H 6550 4925 50 0001 C CNN 33 | F 1 "GND" H 6555 5002 50 0000 C CNN 34 | F 2 "" H 6550 5175 50 0001 C CNN 35 | F 3 "" H 6550 5175 50 0001 C CNN 36 | 1 6550 5175 37 | 1 0 0 -1 38 | $EndComp 39 | $Comp 40 | L power:VCC #PWR0103 41 | U 1 1 5D005CD2 42 | P 6550 2175 43 | F 0 "#PWR0103" H 6550 2025 50 0001 C CNN 44 | F 1 "VCC" H 6567 2348 50 0000 C CNN 45 | F 2 "" H 6550 2175 50 0001 C CNN 46 | F 3 "" H 6550 2175 50 0001 C CNN 47 | 1 6550 2175 48 | 1 0 0 -1 49 | $EndComp 50 | NoConn ~ 6775 2325 51 | NoConn ~ 5950 2475 52 | NoConn ~ 5950 2575 53 | NoConn ~ 7150 2475 54 | NoConn ~ 5950 2675 55 | NoConn ~ 5950 2775 56 | NoConn ~ 5950 2875 57 | NoConn ~ 5950 2975 58 | NoConn ~ 5950 3075 59 | NoConn ~ 5950 3175 60 | NoConn ~ 5950 3375 61 | NoConn ~ 5950 3475 62 | NoConn ~ 5950 3575 63 | NoConn ~ 5950 3675 64 | NoConn ~ 5950 3775 65 | NoConn ~ 5950 3875 66 | NoConn ~ 5950 4175 67 | NoConn ~ 5950 4275 68 | NoConn ~ 5950 4375 69 | NoConn ~ 5950 4475 70 | NoConn ~ 5950 4575 71 | NoConn ~ 5950 4675 72 | NoConn ~ 6450 2175 73 | $Comp 74 | L S80:S80_Interface I? 75 | U 1 1 5D12C240 76 | P 3775 3800 77 | F 0 "I?" H 3775 5578 50 0000 C CNN 78 | F 1 "S80_Interface" H 3775 5487 50 0000 C CNN 79 | F 2 "" H 2875 4200 50 0001 C CNN 80 | F 3 "" H 2875 4200 50 0001 C CNN 81 | 1 3775 3800 82 | 1 0 0 -1 83 | $EndComp 84 | $EndSCHEMATC 85 | -------------------------------------------------------------------------------- /Projects/RetroZ-disk/RetroZ-disk: -------------------------------------------------------------------------------- 1 | Reference, Value, Footprint, Datasheet, Mft#, Package, Mfr#, Field4, Mouser 2 | "I1","S80_Interface","S80:S80-1","" 3 | "U4","ATMEGA328P-PU","Housings_DIP:DIP-28_W7.62mm_Socket_LongPads","https://www.mouser.ca/datasheet/2/268/Atmel-8271-8-bit-AVR-Microcontroller-ATmega48A-48P-1315288.pdf" 4 | "Y1","20Mhz","Crystals:Crystal_HC49-4H_Vertical","~","9B-20.000MAAJ-B","HC-49/S","","","" 5 | "C3","20pf","Resistors_SMD:R_1206_HandSoldering","~","","","C1206C200K5GACTU","","" 6 | "C4","20pf","Resistors_SMD:R_1206_HandSoldering","~","","","C1206C200K5GACTU","","" 7 | "U2","74LS138","Housings_DIP:DIP-16_W7.62mm_Socket_LongPads","http://www.ti.com/lit/gpn/sn74LS138","","","SN74HC138N","","" 8 | "J2","IO SELECTOR","Pin_Headers:Pin_Header_Straight_2x08_Pitch2.54mm","~","","","87914-1616","","" 9 | "U1","UA78M33CDCYR","TO_SOT_Packages_SMD:SOT-223-3_TabPin2","https://www.ti.com/lit/ds/symlink/ua78m.pdf","","","","UA78M33CDCYR","" 10 | "J1","Micro_SD_Card","Connectors_Card:MicroSd_Wurth_693072010801","http://katalog.we-online.de/em/datasheet/693072010801.pdf","","","693072010801","","https://www.mouser.ca/productdetail/wurth-electronics/693072010801?qs=7gQLVZk5cPmw4uU1mAcUFg==" 11 | "D1","DISK IO","LEDs:LED_D5.0mm_Horizontal_O1.27mm_Z3.0mm","~","","","NL-5AR30","","" 12 | "R2","150","Resistors_SMD:R_1206_HandSoldering","~","","","CRCW1206150RFKEAC","","" 13 | "R1","10k","Resistors_SMD:R_1206_HandSoldering","~","","","CRCW120610K0FKEAC","","" 14 | "C1","0.33uF","Resistors_SMD:R_1206_HandSoldering","~","","","1206B334K500CT","","" 15 | "C2","0.1uF","Resistors_SMD:R_1206_HandSoldering","~","","","C1206C104K5RAC7210","","" 16 | "U5","7402","Housings_DIP:DIP-14_W7.62mm_Socket_LongPads","http://www.ti.com/general/docs/suppproductinfo.tsp?distId=26&gotoUrl=http%3A%2F%2Fwww.ti.com%2Flit%2Fgpn%2Fsn74hc02","","","SN74HC02NE4","","" 17 | "U3","TXB0104DW","Package_SO:SOIC-14_3.9x8.7mm_P1.27mm","http://www.ti.com/general/docs/suppproductinfo.tsp?distId=26&gotoUrl=http%3A%2F%2Fwww.ti.com%2Flit%2Fgpn%2Ftxb0104" 18 | "C9","1uF","Resistors_SMD:R_1206_HandSoldering","~","","","SH31B105K500CT","","" 19 | "C8","1uF","Resistors_SMD:R_1206_HandSoldering","~","","","SH31B105K500CT","","" 20 | "C7","1uF","Resistors_SMD:R_1206_HandSoldering","~","","","SH31B105K500CT","","" 21 | "C6","1uF","Resistors_SMD:R_1206_HandSoldering","~","","","SH31B105K500CT","","" 22 | "C5","1uF","Resistors_SMD:R_1206_HandSoldering","~","","","SH31B105K500CT","","" 23 | -------------------------------------------------------------------------------- /basic/gunman2.bas: -------------------------------------------------------------------------------- 1 | 10 CLS 2 | 3 | 100 DIM GUNMAN$(4,3) 4 | 110 GUNMAN$(1,1) = " O" 5 | 120 GUNMAN$(1,2) = " |-+" 6 | 130 GUNMAN$(1,3) = "/ \" 7 | 140 GUNMAN$(2,1) = " O" 8 | 150 GUNMAN$(2,2) = " !" 9 | 160 GUNMAN$(2,3) = "/+\" 10 | 170 GUNMAN$(3,1) = " O" 11 | 180 GUNMAN$(3,2) = "+-|" 12 | 190 GUNMAN$(3,3) = " / \" 13 | 200 GUNMAN$(4,1) = " O" 14 | 210 GUNMAN$(4,2) = " T" 15 | 220 GUNMAN$(4,3) = "/ \" 16 | 17 | 230 BLT$=CHR$(27)+"[2;31m*" 18 | 235 BLT$=BLT$+CHR$(27)+"[2;37m" 19 | 240 REACH=12 20 | 21 | 299 REM *** Game Loop *** 22 | 300 DIR=1:X=20:Y=10 23 | 310 GOSUB 1000 24 | 320 K=ISER(0) 25 | 325 PDIR=DIR 26 | 330 IF K=97 THEN X=X-2:DIR=3 27 | 340 IF K=100 THEN X=X+2:DIR=1 28 | 350 IF K=119 THEN Y=Y-1:DIR=4 29 | 360 IF K=115 THEN Y=Y+1:DIR=2 30 | 370 IF K=113 THEN 10000 31 | 380 IF K=32 THEN GOSUB 2000 32 | 390 IF PDIR=3 AND (DIR=2 OR DIR=4) THEN X=X+1 33 | 400 GOSUB 1200 34 | 410 GOTO 310 35 | 36 | 999 REM *** Draw Gunman! *** 37 | 1000 SCREEN X,Y 38 | 1010 PRINT GUNMAN$(DIR,1) 39 | 1020 SCREEN X,Y+1 40 | 1030 PRINT GUNMAN$(DIR,2) 41 | 1040 SCREEN X,Y+2 42 | 1050 PRINT GUNMAN$(DIR,3) 43 | 1060 RETURN 44 | 45 | 1199 REM *** Erase previous position *** 46 | 1200 IF DIR<>1 THEN 1300 47 | 1210 SCREEN X-2,Y:PRINT " " 48 | 1220 SCREEN X-2,Y+1:PRINT " " 49 | 1230 SCREEN X-2,Y+2:PRINT " " 50 | 1300 IF DIR<>2 THEN 1400 51 | 1310 SCREEN X,Y-1:PRINT " " 52 | 1320 SCREEN X+2,Y:PRINT " " 53 | 1320 SCREEN X-1,Y:PRINT " " 54 | 1325 SCREEN X+2,Y:PRINT " " 55 | 1330 SCREEN X+2,Y+1:PRINT " " 56 | 1400 IF DIR<>3 THEN 1500 57 | 1410 SCREEN X+3,Y:PRINT " " 58 | 1420 SCREEN X+3,Y+1:PRINT " " 59 | 1430 SCREEN X+4,Y+2:PRINT " " 60 | 1500 IF DIR<>4 THEN 1600 61 | 1510 SCREEN X+3,Y+2:PRINT " " 62 | 1520 SCREEN X-1,Y+2:PRINT " " 63 | 1530 SCREEN X,Y+3:PRINT " " 64 | 1600 RETURN 65 | 66 | 1999 REM Shoot! 67 | 2000 IF DIR=1 THEN DX=1:DY=0:BX=X+4:BY=Y+1:SLP=20 68 | 2010 IF DIR=2 THEN DX=0:DY=1:BX=X+1:BY=Y+3:SLP=40 69 | 2020 IF DIR=3 THEN DX=-1:DY=0:BX=X-1:BY=Y+1:SLP=20 70 | 2030 IF DIR=4 THEN DX=0:DY=-1:BX=X+1:BY=Y-1:SLP=40 71 | 2034 RCH=REACH 72 | 2037 IF DIR=2 OR DIR=4 THEN RCH=REACH/2 73 | 2040 FOR d=1 to RCH 74 | 2045 REM COLOR 1,0 75 | 2050 SCREEN BX,BY:PRINT BLT$ 76 | 2055 REM COLOR 7,0 77 | 2060 FOR w=1 to SLP:NEXT w 78 | 2070 SCREEN BX,BY:PRINT " " 79 | 2080 BX=BX+DX:BY=BY+DY 80 | 2085 IF BX<1 OR BY<1 THEN d=RCH 81 | 2090 NEXT d 82 | 2100 SCREEN BX,BY:PRINT " " 83 | 2200 RETURN 84 | 85 | 86 | 10000 END 87 | RUN 88 | 89 | -------------------------------------------------------------------------------- /Projects/RetroZ-disk/src/DiskController/DiskController.ino: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | 4 | /* Pins */ 5 | #define STATUS_LED 8 6 | 7 | /* Masks */ 8 | #define MASK_MODE 0x3 /* Pins 14, 15 */ 9 | #define MASK_READ_OUT 0x4 /* Pin 16 */ 10 | #define MASK_WRITE_IN 0x8 /* Pin 17 */ 11 | #define MASK_SELECTED 0xF /* Pin 18 */ 12 | 13 | /* Registres */ 14 | #define REG_CONTROL PORTC 15 | #define REG_DATA PORTD 16 | 17 | 18 | 19 | /* Modes */ 20 | #define MODE_DATA 0 21 | #define MODE_COMMAND 1 22 | #define MODE_STATUS 2 /* Read only */ 23 | 24 | 25 | /* List of statuses */ 26 | #define STATUS_OK 0 27 | #define STATUS_BAD_MODE 1 28 | #define STATUS_WRITE_ERROR 2 29 | #define STATUS_SD_INIT_ERROR 3 30 | 31 | 32 | /********** State of the program **********/ 33 | 34 | /* result status of the last command */ 35 | byte _status; 36 | 37 | 38 | void setup() { 39 | // Make sure all pins are high impedence at boot. 40 | for(int pin = 0; pin < 20; pin++) { 41 | pinMode(pin, INPUT); 42 | } 43 | 44 | digitalWrite(STATUS_LED, LOW); 45 | pinMode(STATUS_LED, INPUT); 46 | if (!SD.begin(10)) { 47 | _status = STATUS_SD_INIT_ERROR; 48 | blink_status(3); 49 | } 50 | else { 51 | _status = STATUS_OK; 52 | blink_status(2); 53 | } 54 | } 55 | 56 | 57 | void loop() { 58 | bool selected = REG_CONTROL & MASK_SELECTED; 59 | if (selected) { 60 | byte mode = REG_CONTROL & MASK_MODE; 61 | byte data_dir = INPUT; 62 | if (REG_CONTROL & MASK_READ_OUT) { 63 | data_dir = OUTPUT; 64 | } 65 | 66 | switch (mode) { 67 | case MODE_DATA: 68 | break; 69 | 70 | case MODE_COMMAND: 71 | break; 72 | 73 | case MODE_STATUS: 74 | if (data_dir == INPUT) { 75 | // external device cannot write into _status. 76 | _status = STATUS_WRITE_ERROR; 77 | return; 78 | } 79 | if (data_dir == OUTPUT) 80 | REG_DATA = _status; 81 | _status++; // TEST INITIAL!!! 82 | break; 83 | 84 | default: 85 | _status = STATUS_BAD_MODE; 86 | } 87 | 88 | setDataDir(data_dir); 89 | } 90 | else { 91 | // Set input to high impedance when not selected. 92 | setDataDir(INPUT); 93 | } 94 | } 95 | 96 | 97 | /* Sets the data bus direction (INPUT or OUTPUT) */ 98 | void setDataDir(byte value) { 99 | if (value == INPUT) { 100 | DDRD = B00000000; 101 | } 102 | else { 103 | DDRD = B11111111; 104 | } 105 | } 106 | 107 | 108 | void blink_status(byte count) { 109 | for (int i = 0; i < count; i++) { 110 | digitalWrite(STATUS_LED, HIGH); 111 | delay(125); 112 | digitalWrite(STATUS_LED, LOW); 113 | delay(125); 114 | } 115 | } 116 | -------------------------------------------------------------------------------- /Projects/S80-Library/S80-Library-rescue.lib: -------------------------------------------------------------------------------- 1 | EESchema-LIBRARY Version 2.4 2 | #encoding utf-8 3 | # 4 | # S80_Interface-S80 5 | # 6 | DEF S80_Interface-S80 I 0 40 Y Y 1 F N 7 | F0 "I" -1000 1700 50 H V L CNN 8 | F1 "S80_Interface-S80" -450 1700 50 H V L CNN 9 | F2 "" -650 700 50 H I C CNN 10 | F3 "" -650 700 50 H I C CNN 11 | $FPLIST 12 | Interface* 13 | $ENDFPLIST 14 | DRAW 15 | T 900 900 300 50 0 0 0 "USER PORT A" Normal 0 C C 16 | T 900 900 -600 50 0 0 0 "USER PORT B" Normal 0 C C 17 | S -1000 1650 -250 -1050 0 1 0 N 18 | S 1250 750 800 -1050 0 1 0 N 19 | X GND 1 -750 1800 150 D 50 50 1 1 P 20 | X A7 10 -100 800 150 L 50 50 1 1 P 21 | X A8 11 -100 700 150 L 50 50 1 1 P 22 | X A9 12 -100 600 150 L 50 50 1 1 P 23 | X A10 13 -100 500 150 L 50 50 1 1 P 24 | X A11 14 -100 400 150 L 50 50 1 1 P 25 | X A12 15 -100 300 150 L 50 50 1 1 P 26 | X A13 16 -100 200 150 L 50 50 1 1 P 27 | X A14 17 -100 100 150 L 50 50 1 1 P 28 | X A15 18 -100 0 150 L 50 50 1 1 P 29 | X D0 19 -100 -200 150 L 50 50 1 1 P 30 | X VCC 2 -500 1800 150 D 50 50 1 1 P 31 | X D1 20 -100 -300 150 L 50 50 1 1 P 32 | X D2 21 -100 -400 150 L 50 50 1 1 P 33 | X D3 22 -100 -500 150 L 50 50 1 1 P 34 | X D4 23 -100 -600 150 L 50 50 1 1 P 35 | X D5 24 -100 -700 150 L 50 50 1 1 P 36 | X D6 25 -100 -800 150 L 50 50 1 1 P 37 | X D7 26 -100 -900 150 L 50 50 1 1 P 38 | X ~RESET~ 27 -1150 1350 150 R 50 50 1 1 P I 39 | X ~CLK~ 28 -1150 1200 150 R 50 50 1 1 P C 40 | X ~NMI~ 29 -1150 900 150 R 50 50 1 1 P I 41 | X A0 3 -100 1500 150 L 50 50 1 1 P 42 | X ~INT~ 30 -1150 800 150 R 50 50 1 1 P I 43 | X ~M1~ 31 -1150 500 150 R 50 50 1 1 P I 44 | X ~RFSH~ 32 -1150 400 150 R 50 50 1 1 P I 45 | X ~WAIT~ 33 -1150 300 150 R 50 50 1 1 P I 46 | X ~HALT~ 34 -1150 200 150 R 50 50 1 1 P I 47 | X ~RD~ 35 -1150 -200 150 R 50 50 1 1 P I 48 | X ~WR~ 36 -1150 -300 150 R 50 50 1 1 P I 49 | X ~MREQ~ 37 -1150 -400 150 R 50 50 1 1 P I 50 | X ~IORQ~ 38 -1150 -500 150 R 50 50 1 1 P I 51 | X ~BUSRQ~ 39 -1150 -800 150 R 50 50 1 1 P I 52 | X A1 4 -100 1400 150 L 50 50 1 1 P 53 | X ~BUSACK~ 40 -1150 -900 150 R 50 50 1 1 P I 54 | X UPA0 41 1400 650 150 L 50 50 1 1 P 55 | X UPA1 42 1400 550 150 L 50 50 1 1 P 56 | X UPA2 43 1400 450 150 L 50 50 1 1 P 57 | X UPA3 44 1400 350 150 L 50 50 1 1 P 58 | X UPA4 45 1400 250 150 L 50 50 1 1 P 59 | X UPA5 46 1400 150 150 L 50 50 1 1 P 60 | X UPA6 47 1400 50 150 L 50 50 1 1 P 61 | X UPA7 48 1400 -50 150 L 50 50 1 1 P 62 | X UPB0 49 1400 -250 150 L 50 50 1 1 P 63 | X A2 5 -100 1300 150 L 50 50 1 1 P 64 | X UPB1 50 1400 -350 150 L 50 50 1 1 P 65 | X UPB2 51 1400 -450 150 L 50 50 1 1 P 66 | X UPB3 52 1400 -550 150 L 50 50 1 1 P 67 | X UPB4 53 1400 -650 150 L 50 50 1 1 P 68 | X UPB5 54 1400 -750 150 L 50 50 1 1 P 69 | X UPB6 55 1400 -850 150 L 50 50 1 1 P 70 | X UPB7 56 1400 -950 150 L 50 50 1 1 P 71 | X A3 6 -100 1200 150 L 50 50 1 1 P 72 | X A4 7 -100 1100 150 L 50 50 1 1 P 73 | X A5 8 -100 1000 150 L 50 50 1 1 P 74 | X A6 9 -100 900 150 L 50 50 1 1 P 75 | ENDDRAW 76 | ENDDEF 77 | # 78 | #End Library 79 | -------------------------------------------------------------------------------- /basic/inmc-BASIC_programs_BOOK_1/russian_roulette.bas: -------------------------------------------------------------------------------- 1 | 10 REM ****** RUSSIAN ROULETTE ****** 2 | 20 REM 3 | 30 REM Adapted for Nascom 1/2 fitted with 4 | 40 REM NAS-SYS 1 or 'T' series monitors. 5 | 50 REM by D. R. Hunt. June 1979 6 | 60 REM from the program by Tom Adamtex, in 7 | 70 REM '101 Basic Computer Games' published 8 | 80 REM Creative Computing. 9 | 90 REM 10 | 170 REM ** Start game 11 | 180 CLS 12 | 190 SCREEN 1,7:N$="":N1$="":PRINT"W"; 13 | 195 I$="":REM Reset user input 14 | 200 INPUT"hat is your name ";N$ 15 | 210 IF N$<>"" THEN 230 16 | 220 SCREEN 1,7:PRINT"Please .. w";:GOTO 200 17 | 230 FOR I=1 TO LEN(N$):A=ASC(MID$(N$,I,1)) 18 | 240 IF I9=1 OR I=1 THEN IF A>=96 THEN A=A-32 19 | 250 IF I9=1 OR I=1 THEN 280 20 | 260 IF A<=57 THEN 280 21 | 270 IF A<=95 THEN A=A+32 22 | 280 N1$=N1$+CHR$(A) 23 | 290 I9=0:IF A=32 THEN N2$="":I9=1:GOTO 310 24 | 300 N2$=N2$+CHR$(A) 25 | 310 IF A<=57 THEN I9=1 26 | 320 IF N2$="Mc" THEN I9=1 27 | 330 NEXT:N$=N1$ 28 | 340 GOSUB 950 29 | 350 PRINT:PRINT:PRINT 30 | 360 PRINT "Ok ";N$;" you'll find this easy." 31 | 370 PRINT "You don't need instructions for thi"; 32 | 380 PRINT "s. Here is a":PRINT"revolver. It has"; 33 | 390 PRINT " six chambers. One is loaded." 34 | 400 PRINT "You only have to survive 10 tries." 35 | 410 PRINT:PRINT "Type 'Y' for a spin." 36 | 420 PRINT "Type 'n' to give up.":N=0:J=0 37 | 440 PRINT:INPUT "Your turn. Go ";I$ 38 | 450 IF I$<>"" AND I$<>"Y" AND I$<>"y" AND I$<>"N" AND I$<>"n" THEN 440 39 | 460 IF I$="N" OR I$="n" THEN 820 40 | 470 IF I$="" OR I$="Y" OR I$="y" THEN 510 41 | 480 PRINT:PRINT "Didn't get that right did "; 42 | 490 PRINT "you ";N$;"." 43 | 500 PRINT "Nervous? Try again!":GOTO 440 44 | 510 N=N+1:IF RND(1)>.833333 THEN 690 45 | 520 PRINT " - CLICK -" 46 | 530 IF N=3 THEN 580 47 | 540 IF N=5 THEN 610 48 | 550 IF N=7 THEN 630 49 | 560 IF N=9 THEN 650 50 | 570 GOTO 660 51 | 580 PRINT "There, ";N$;" its not painful, "; 52 | 590 PRINT "is it?" 53 | 600 GOTO 650 54 | 610 PRINT "Bet you're starting to sweat a bit." 55 | 620 GOTO 660 56 | 630 PRINT "Only a couple more to go now." 57 | 640 GOTO 660 58 | 650 PRINT "Last one now, can't loose really." 59 | 660 IF J=0 THEN 830 60 | 670 IF N > 9 THEN 760 61 | 680 J=0:GOTO 440 62 | 690 PRINT:PRINT " BANG !!!" 63 | 700 PRINT:PRINT "Sorry ";N$;" you're dead." 64 | 710 PRINT "Please lie on the floor and we "; 65 | 720 PRINT "and we will inform your":PRINT "next of kin." 66 | 730 FOR I=1 TO 20000:NEXT 67 | 740 CLS:SCREEN 1,6 68 | 750 PRINT "Next victim please.":GOTO 190 69 | 760 PRINT:PRINT "Congratulations, well done "; 70 | 770 PRINT N$;"," 71 | 780 PRINT "You win. It wasn't difficult "; 72 | 790 PRINT "was it!!" 73 | 800 PRINT "Now let someone else blow his "; 74 | 810 PRINT "brain out.":GOTO 730 75 | 820 PRINT:PRINT "CHICKEN!!!":GOTO 800 76 | 830 FOR I=1 TO 1000:NEXT 77 | 840 PRINT:PRINT "My turn.":N=N+1 78 | 850 IF RND(1)>833333 THEN 870 79 | 860 PRINT " - CLICK -":GOTO 670 80 | 870 PRINT:PRINT " BANG !!!" 81 | 880 PRINT:PRINT "Oh dear, I've shot myself." 82 | 890 FOR I=0 TO 4000:NEXT:CLS 83 | 900 SCREEN 16,7:PRINT "ARGHHHHHHHHHHH!!!" 84 | 910 FOR I=1 TO 800:NEXT:CLS 85 | 920 FOR I=1 TO 32000:NEXT 86 | 930 SCREEN 14,7:PRINT "Bet that fooled you." 87 | 940 FOR I=1 TO 4000:NEXT:CLS:GOTO 740 88 | 950 CLS:PRINT "*** RUSSIAN ROULETTE ***" 89 | 960 FOR I=0 TO 2000:NEXT 90 | 970 RETURN 91 | -------------------------------------------------------------------------------- /Projects/RetroZ-disk/src/DiskController/callstack.z80: -------------------------------------------------------------------------------- 1 | #if !defined(_PC) 2 | 3 | _PC DEFL 0 ;Parameter counter 4 | 5 | 6 | ;Adds the content of ® to the stack and increment the _PARAM_COUNT label. 7 | MACRO _ADDRP ® 8 | PUSH ® 9 | _PC DEFL {_PC + 1} 10 | ENDM 11 | 12 | 13 | ;Adds a litteral 16 bits parameter to the stack then increment the 14 | ;_PC (parameter count) label. Register values are preserved. 15 | MACRO _ADDLP &lit 16 | PUSH HL 17 | LD HL,&lit 18 | EX (SP),HL 19 | _PC DEFL {_PC + 1} 20 | ENDM 21 | 22 | 23 | ;Macro that calls a procedure &proc. This macro cleans the stack from the 24 | ;parameters added with _ADDRP or _ADDLP. Register HL and DE may be 25 | ;changed if the subroutine returns respectively a 16(HL) or 32(DEHL) bits 26 | ;value. 27 | MACRO _CALL &proc 28 | _PC_&proc DEFL {_PC} 29 | _PC DEFL 0 30 | CALL _PUSH 31 | CALL &proc 32 | CALL _POP 33 | _CLEANP _PC_&proc 34 | ENDM 35 | 36 | 37 | ;Recursive macro that cleans &cnt parameters from the stack. 38 | MACRO _CLEANP &cnt 39 | IF &cnt > 0 40 | EX (SP),HL 41 | POP HL 42 | _CLEANP {&cnt - 1} 43 | ENDIF 44 | ENDM 45 | 46 | 47 | ;Loads the register ® with the parameter at index &idx. Parameters can be 48 | ;loaded in BC, DE or HL only due to the way indexed access are wired in the 49 | ;Z80. First parameter is at index 0. This macro changes the content of IY. 50 | MACRO _GETP ®, &idx 51 | LD IY,14 52 | ADD IY,SP 53 | LD ®, (IY+{&idx * 2}) 54 | ENDM 55 | 56 | 57 | ;Return the content of ®1 at the stack position of HL. The content of IY 58 | ;can not be returned using this macro. 59 | MACRO _RET_HL ®1 60 | LD IY,0 61 | ADD IY,SP 62 | LD (IY+12),®1 63 | RET 64 | ENDM 65 | 66 | 67 | ;Return the content of ®1 at the stack position of HL and the 68 | ;content of ®2 at the DE stack position. The content of IX or IY cannot 69 | ;be returned by this macro. 70 | MACRO _RET_DEHL ®1, ®2 71 | LD IY,0 72 | ADD IY,SP 73 | LD (IY+12),®1 74 | LD (IY+10),®2 75 | RET 76 | ENDM 77 | 78 | 79 | #endif 80 | 81 | #if !defined(_PUSH) 82 | 83 | #code _PROGRAM_FOOTER 84 | 85 | ;Save all registers 86 | _PUSH: EX (SP),HL 87 | PUSH DE 88 | PUSH BC 89 | PUSH AF 90 | PUSH IY 91 | PUSH IX 92 | PUSH HL 93 | RET 94 | 95 | 96 | ;Restore all registers 97 | _POP: POP HL 98 | POP IX 99 | POP IY 100 | POP AF 101 | POP BC 102 | POP DE 103 | EX (SP),HL 104 | RET 105 | 106 | #endif 107 | 108 | -------------------------------------------------------------------------------- /Libraries/gamma.kicad_mod: -------------------------------------------------------------------------------- 1 | (module LOGO (layer F.Cu) 2 | (at 0 0) 3 | (fp_text reference "G***" (at 0 0) (layer F.SilkS) hide 4 | (effects (font (thickness 0.3))) 5 | ) 6 | (fp_text value "LOGO" (at 0.75 0) (layer F.SilkS) hide 7 | (effects (font (thickness 0.3))) 8 | ) 9 | (fp_poly (pts (xy -16.574989 -32.738198) (xy -14.709446 -32.156777) (xy -13.074788 -31.055796) (xy -12.011682 -29.780087) (xy -11.142333 -28.100731) (xy -10.249220 -25.801429) (xy -9.352840 -22.966401) (xy -8.473694 -19.679865) 10 | (xy -7.632281 -16.026043) (xy -6.849098 -12.089153) (xy -6.144647 -7.953416) (xy -5.539424 -3.703050) (xy -5.408087 -2.649449) (xy -5.176264 -0.848767) (xy -4.950759 0.700355) (xy -4.753175 1.863070) 11 | (xy -4.605116 2.504529) (xy -4.570410 2.579318) (xy -4.364074 2.425559) (xy -4.065223 1.739667) (xy -3.779861 0.815429) (xy -3.049158 -1.816487) (xy -2.199309 -4.733009) (xy -1.257893 -7.851044) 12 | (xy -0.252486 -11.087498) (xy 0.789334 -14.359277) (xy 1.839988 -17.583288) (xy 2.871899 -20.676438) (xy 3.857489 -23.555632) (xy 4.769180 -26.137778) (xy 5.579394 -28.339782) (xy 6.260554 -30.078550) 13 | (xy 6.785081 -31.270989) (xy 7.002868 -31.673521) (xy 7.343910 -31.879038) (xy 8.113143 -32.001896) (xy 9.400844 -32.049344) (xy 11.297291 -32.028634) (xy 11.394985 -32.026299) (xy 15.501904 -31.926389) 14 | (xy 13.007587 -26.811111) (xy 11.507159 -23.725923) (xy 10.054999 -20.724574) (xy 8.682670 -17.873508) (xy 7.421732 -15.239170) (xy 6.303748 -12.888007) (xy 5.360278 -10.886462) (xy 4.622885 -9.300983) 15 | (xy 4.123129 -8.198012) (xy 3.892572 -7.643997) (xy 3.880555 -7.596299) (xy 3.737659 -7.248437) (xy 3.338569 -6.358029) (xy 2.727682 -5.020848) (xy 1.949397 -3.332670) (xy 1.048112 -1.389267) 16 | (xy 0.068224 0.713585) (xy -0.945869 2.880112) (xy -1.949769 5.014540) (xy -2.748035 6.702778) (xy -3.668126 8.643056) (xy -3.700299 18.697222) (xy -3.721199 22.043933) (xy -3.769183 24.770180) 17 | (xy -3.857555 26.960923) (xy -3.999619 28.701118) (xy -4.208678 30.075724) (xy -4.498038 31.169698) (xy -4.881001 32.067999) (xy -5.370872 32.855585) (xy -5.980955 33.617414) (xy -6.048911 33.695250) 18 | (xy -6.861497 34.492098) (xy -7.644278 34.848187) (xy -8.632026 34.925000) (xy -10.266332 34.642560) (xy -11.107675 34.160213) (xy -12.094549 33.152190) (xy -12.711696 31.914918) (xy -12.972198 30.353238) 19 | (xy -12.889133 28.371991) (xy -12.475583 25.876019) (xy -12.336084 25.223611) (xy -11.665459 22.505177) (xy -10.848898 19.832815) (xy -9.821854 17.022858) (xy -8.519776 13.891637) (xy -7.724569 12.101994) 20 | (xy -7.303999 10.919731) (xy -7.071654 9.777137) (xy -7.055556 9.496279) (xy -7.120141 8.584528) (xy -7.301705 7.086562) (xy -7.581963 5.108633) (xy -7.942630 2.756995) (xy -8.365419 0.137900) 21 | (xy -8.832046 -2.642399) (xy -9.324225 -5.477648) (xy -9.823669 -8.261596) (xy -10.312095 -10.887988) (xy -10.771216 -13.250573) (xy -11.182746 -15.243098) (xy -11.528401 -16.759309) (xy -11.663474 -17.279236) 22 | (xy -12.651578 -20.207195) (xy -13.819024 -22.484918) (xy -15.185174 -24.149348) (xy -15.335453 -24.285229) (xy -16.185513 -24.945558) (xy -16.987728 -25.279625) (xy -18.053873 -25.392892) (xy -18.631002 -25.400000) 23 | (xy -20.173626 -25.296102) (xy -21.325977 -24.917845) (xy -22.189091 -24.165382) (xy -22.864007 -22.938868) (xy -23.451761 -21.138457) (xy -23.628812 -20.461111) (xy -23.969477 -19.222005) (xy -24.274615 -18.514551) 24 | (xy -24.646082 -18.178351) (xy -25.155863 -18.056429) (xy -26.105556 -17.944802) (xy -26.105556 -20.381247) (xy -25.938843 -22.736704) (xy -25.479621 -25.169508) (xy -24.789265 -27.446994) (xy -23.929147 -29.336501) 25 | (xy -23.607414 -29.851432) (xy -22.187632 -31.356676) (xy -20.451013 -32.338990) (xy -18.534489 -32.799216) (xy -16.574989 -32.738198) )(layer F.SilkS) (width 0.010000) 26 | ) 27 | ) 28 | -------------------------------------------------------------------------------- /Projects/RetroZ-RAM24K/IS62C256AL-45ULI-TR.pretty/SOIC127P1210X305-28N.kicad_mod: -------------------------------------------------------------------------------- 1 | (module "SOIC127P1210X305-28N" (layer F.Cu) 2 | (descr "28L 330mil SOP") 3 | (tags "Integrated Circuit") 4 | (attr smd) 5 | (fp_text reference IC** (at 0 0) (layer F.SilkS) 6 | (effects (font (size 1.27 1.27) (thickness 0.254))) 7 | ) 8 | (fp_text user %R (at 0 0) (layer F.Fab) 9 | (effects (font (size 1.27 1.27) (thickness 0.254))) 10 | ) 11 | (fp_text value "SOIC127P1210X305-28N" (at 0 0) (layer F.SilkS) hide 12 | (effects (font (size 1.27 1.27) (thickness 0.254))) 13 | ) 14 | (fp_line (start -6.975 -9.56) (end 6.975 -9.56) (layer F.CrtYd) (width 0.05)) 15 | (fp_line (start 6.975 -9.56) (end 6.975 9.56) (layer F.CrtYd) (width 0.05)) 16 | (fp_line (start 6.975 9.56) (end -6.975 9.56) (layer F.CrtYd) (width 0.05)) 17 | (fp_line (start -6.975 9.56) (end -6.975 -9.56) (layer F.CrtYd) (width 0.05)) 18 | (fp_line (start -4.282 -9.08) (end 4.282 -9.08) (layer F.Fab) (width 0.1)) 19 | (fp_line (start 4.282 -9.08) (end 4.282 9.08) (layer F.Fab) (width 0.1)) 20 | (fp_line (start 4.282 9.08) (end -4.282 9.08) (layer F.Fab) (width 0.1)) 21 | (fp_line (start -4.282 9.08) (end -4.282 -9.08) (layer F.Fab) (width 0.1)) 22 | (fp_line (start -4.282 -7.81) (end -3.012 -9.08) (layer F.Fab) (width 0.1)) 23 | (fp_line (start -4.075 -9.08) (end 4.075 -9.08) (layer F.SilkS) (width 0.2)) 24 | (fp_line (start 4.075 -9.08) (end 4.075 9.08) (layer F.SilkS) (width 0.2)) 25 | (fp_line (start 4.075 9.08) (end -4.075 9.08) (layer F.SilkS) (width 0.2)) 26 | (fp_line (start -4.075 9.08) (end -4.075 -9.08) (layer F.SilkS) (width 0.2)) 27 | (fp_line (start -6.725 -8.955) (end -4.425 -8.955) (layer F.SilkS) (width 0.2)) 28 | (pad 1 smd rect (at -5.575 -8.255 90) (size 0.7 2.3) (layers F.Cu F.Paste F.Mask)) 29 | (pad 2 smd rect (at -5.575 -6.985 90) (size 0.7 2.3) (layers F.Cu F.Paste F.Mask)) 30 | (pad 3 smd rect (at -5.575 -5.715 90) (size 0.7 2.3) (layers F.Cu F.Paste F.Mask)) 31 | (pad 4 smd rect (at -5.575 -4.445 90) (size 0.7 2.3) (layers F.Cu F.Paste F.Mask)) 32 | (pad 5 smd rect (at -5.575 -3.175 90) (size 0.7 2.3) (layers F.Cu F.Paste F.Mask)) 33 | (pad 6 smd rect (at -5.575 -1.905 90) (size 0.7 2.3) (layers F.Cu F.Paste F.Mask)) 34 | (pad 7 smd rect (at -5.575 -0.635 90) (size 0.7 2.3) (layers F.Cu F.Paste F.Mask)) 35 | (pad 8 smd rect (at -5.575 0.635 90) (size 0.7 2.3) (layers F.Cu F.Paste F.Mask)) 36 | (pad 9 smd rect (at -5.575 1.905 90) (size 0.7 2.3) (layers F.Cu F.Paste F.Mask)) 37 | (pad 10 smd rect (at -5.575 3.175 90) (size 0.7 2.3) (layers F.Cu F.Paste F.Mask)) 38 | (pad 11 smd rect (at -5.575 4.445 90) (size 0.7 2.3) (layers F.Cu F.Paste F.Mask)) 39 | (pad 12 smd rect (at -5.575 5.715 90) (size 0.7 2.3) (layers F.Cu F.Paste F.Mask)) 40 | (pad 13 smd rect (at -5.575 6.985 90) (size 0.7 2.3) (layers F.Cu F.Paste F.Mask)) 41 | (pad 14 smd rect (at -5.575 8.255 90) (size 0.7 2.3) (layers F.Cu F.Paste F.Mask)) 42 | (pad 15 smd rect (at 5.575 8.255 90) (size 0.7 2.3) (layers F.Cu F.Paste F.Mask)) 43 | (pad 16 smd rect (at 5.575 6.985 90) (size 0.7 2.3) (layers F.Cu F.Paste F.Mask)) 44 | (pad 17 smd rect (at 5.575 5.715 90) (size 0.7 2.3) (layers F.Cu F.Paste F.Mask)) 45 | (pad 18 smd rect (at 5.575 4.445 90) (size 0.7 2.3) (layers F.Cu F.Paste F.Mask)) 46 | (pad 19 smd rect (at 5.575 3.175 90) (size 0.7 2.3) (layers F.Cu F.Paste F.Mask)) 47 | (pad 20 smd rect (at 5.575 1.905 90) (size 0.7 2.3) (layers F.Cu F.Paste F.Mask)) 48 | (pad 21 smd rect (at 5.575 0.635 90) (size 0.7 2.3) (layers F.Cu F.Paste F.Mask)) 49 | (pad 22 smd rect (at 5.575 -0.635 90) (size 0.7 2.3) (layers F.Cu F.Paste F.Mask)) 50 | (pad 23 smd rect (at 5.575 -1.905 90) (size 0.7 2.3) (layers F.Cu F.Paste F.Mask)) 51 | (pad 24 smd rect (at 5.575 -3.175 90) (size 0.7 2.3) (layers F.Cu F.Paste F.Mask)) 52 | (pad 25 smd rect (at 5.575 -4.445 90) (size 0.7 2.3) (layers F.Cu F.Paste F.Mask)) 53 | (pad 26 smd rect (at 5.575 -5.715 90) (size 0.7 2.3) (layers F.Cu F.Paste F.Mask)) 54 | (pad 27 smd rect (at 5.575 -6.985 90) (size 0.7 2.3) (layers F.Cu F.Paste F.Mask)) 55 | (pad 28 smd rect (at 5.575 -8.255 90) (size 0.7 2.3) (layers F.Cu F.Paste F.Mask)) 56 | (model IS62C256AL-45ULI-TR.stp 57 | (at (xyz 0 0 0)) 58 | (scale (xyz 1 1 1)) 59 | (rotate (xyz 0 0 0)) 60 | ) 61 | ) 62 | -------------------------------------------------------------------------------- /Projects/RetroZ-RAM24K/IS62C256AL-45ULI-TR.pretty/IS62C256AL-45ULI-TR.mod: -------------------------------------------------------------------------------- 1 | PCBNEW-LibModule-V1 2019-08-12 23:13:27 2 | # encoding utf-8 3 | Units mm 4 | $INDEX 5 | SOIC127P1210X305-28N 6 | $EndINDEX 7 | $MODULE SOIC127P1210X305-28N 8 | Po 0 0 0 15 5d51e487 00000000 ~~ 9 | Li SOIC127P1210X305-28N 10 | Cd 28L 330mil SOP 11 | Kw Integrated Circuit 12 | Sc 0 13 | At SMD 14 | AR 15 | Op 0 0 0 16 | T0 0 0 1.27 1.27 0 0.254 N V 21 N "IC**" 17 | T1 0 0 1.27 1.27 0 0.254 N I 21 N "SOIC127P1210X305-28N" 18 | DS -6.975 -9.56 6.975 -9.56 0.05 24 19 | DS 6.975 -9.56 6.975 9.56 0.05 24 20 | DS 6.975 9.56 -6.975 9.56 0.05 24 21 | DS -6.975 9.56 -6.975 -9.56 0.05 24 22 | DS -4.282 -9.08 4.282 -9.08 0.1 24 23 | DS 4.282 -9.08 4.282 9.08 0.1 24 24 | DS 4.282 9.08 -4.282 9.08 0.1 24 25 | DS -4.282 9.08 -4.282 -9.08 0.1 24 26 | DS -4.282 -7.81 -3.012 -9.08 0.1 24 27 | DS -4.075 -9.08 4.075 -9.08 0.2 21 28 | DS 4.075 -9.08 4.075 9.08 0.2 21 29 | DS 4.075 9.08 -4.075 9.08 0.2 21 30 | DS -4.075 9.08 -4.075 -9.08 0.2 21 31 | DS -6.725 -8.955 -4.425 -8.955 0.2 21 32 | $PAD 33 | Po -5.575 -8.255 34 | Sh "1" R 0.7 2.3 0 0 900 35 | At SMD N 00888000 36 | Ne 0 "" 37 | $EndPAD 38 | $PAD 39 | Po -5.575 -6.985 40 | Sh "2" R 0.7 2.3 0 0 900 41 | At SMD N 00888000 42 | Ne 0 "" 43 | $EndPAD 44 | $PAD 45 | Po -5.575 -5.715 46 | Sh "3" R 0.7 2.3 0 0 900 47 | At SMD N 00888000 48 | Ne 0 "" 49 | $EndPAD 50 | $PAD 51 | Po -5.575 -4.445 52 | Sh "4" R 0.7 2.3 0 0 900 53 | At SMD N 00888000 54 | Ne 0 "" 55 | $EndPAD 56 | $PAD 57 | Po -5.575 -3.175 58 | Sh "5" R 0.7 2.3 0 0 900 59 | At SMD N 00888000 60 | Ne 0 "" 61 | $EndPAD 62 | $PAD 63 | Po -5.575 -1.905 64 | Sh "6" R 0.7 2.3 0 0 900 65 | At SMD N 00888000 66 | Ne 0 "" 67 | $EndPAD 68 | $PAD 69 | Po -5.575 -0.635 70 | Sh "7" R 0.7 2.3 0 0 900 71 | At SMD N 00888000 72 | Ne 0 "" 73 | $EndPAD 74 | $PAD 75 | Po -5.575 0.635 76 | Sh "8" R 0.7 2.3 0 0 900 77 | At SMD N 00888000 78 | Ne 0 "" 79 | $EndPAD 80 | $PAD 81 | Po -5.575 1.905 82 | Sh "9" R 0.7 2.3 0 0 900 83 | At SMD N 00888000 84 | Ne 0 "" 85 | $EndPAD 86 | $PAD 87 | Po -5.575 3.175 88 | Sh "10" R 0.7 2.3 0 0 900 89 | At SMD N 00888000 90 | Ne 0 "" 91 | $EndPAD 92 | $PAD 93 | Po -5.575 4.445 94 | Sh "11" R 0.7 2.3 0 0 900 95 | At SMD N 00888000 96 | Ne 0 "" 97 | $EndPAD 98 | $PAD 99 | Po -5.575 5.715 100 | Sh "12" R 0.7 2.3 0 0 900 101 | At SMD N 00888000 102 | Ne 0 "" 103 | $EndPAD 104 | $PAD 105 | Po -5.575 6.985 106 | Sh "13" R 0.7 2.3 0 0 900 107 | At SMD N 00888000 108 | Ne 0 "" 109 | $EndPAD 110 | $PAD 111 | Po -5.575 8.255 112 | Sh "14" R 0.7 2.3 0 0 900 113 | At SMD N 00888000 114 | Ne 0 "" 115 | $EndPAD 116 | $PAD 117 | Po 5.575 8.255 118 | Sh "15" R 0.7 2.3 0 0 900 119 | At SMD N 00888000 120 | Ne 0 "" 121 | $EndPAD 122 | $PAD 123 | Po 5.575 6.985 124 | Sh "16" R 0.7 2.3 0 0 900 125 | At SMD N 00888000 126 | Ne 0 "" 127 | $EndPAD 128 | $PAD 129 | Po 5.575 5.715 130 | Sh "17" R 0.7 2.3 0 0 900 131 | At SMD N 00888000 132 | Ne 0 "" 133 | $EndPAD 134 | $PAD 135 | Po 5.575 4.445 136 | Sh "18" R 0.7 2.3 0 0 900 137 | At SMD N 00888000 138 | Ne 0 "" 139 | $EndPAD 140 | $PAD 141 | Po 5.575 3.175 142 | Sh "19" R 0.7 2.3 0 0 900 143 | At SMD N 00888000 144 | Ne 0 "" 145 | $EndPAD 146 | $PAD 147 | Po 5.575 1.905 148 | Sh "20" R 0.7 2.3 0 0 900 149 | At SMD N 00888000 150 | Ne 0 "" 151 | $EndPAD 152 | $PAD 153 | Po 5.575 0.635 154 | Sh "21" R 0.7 2.3 0 0 900 155 | At SMD N 00888000 156 | Ne 0 "" 157 | $EndPAD 158 | $PAD 159 | Po 5.575 -0.635 160 | Sh "22" R 0.7 2.3 0 0 900 161 | At SMD N 00888000 162 | Ne 0 "" 163 | $EndPAD 164 | $PAD 165 | Po 5.575 -1.905 166 | Sh "23" R 0.7 2.3 0 0 900 167 | At SMD N 00888000 168 | Ne 0 "" 169 | $EndPAD 170 | $PAD 171 | Po 5.575 -3.175 172 | Sh "24" R 0.7 2.3 0 0 900 173 | At SMD N 00888000 174 | Ne 0 "" 175 | $EndPAD 176 | $PAD 177 | Po 5.575 -4.445 178 | Sh "25" R 0.7 2.3 0 0 900 179 | At SMD N 00888000 180 | Ne 0 "" 181 | $EndPAD 182 | $PAD 183 | Po 5.575 -5.715 184 | Sh "26" R 0.7 2.3 0 0 900 185 | At SMD N 00888000 186 | Ne 0 "" 187 | $EndPAD 188 | $PAD 189 | Po 5.575 -6.985 190 | Sh "27" R 0.7 2.3 0 0 900 191 | At SMD N 00888000 192 | Ne 0 "" 193 | $EndPAD 194 | $PAD 195 | Po 5.575 -8.255 196 | Sh "28" R 0.7 2.3 0 0 900 197 | At SMD N 00888000 198 | Ne 0 "" 199 | $EndPAD 200 | $EndMODULE SOIC127P1210X305-28N 201 | $EndLIBRARY 202 | -------------------------------------------------------------------------------- /asm/sinusoid.z80: -------------------------------------------------------------------------------- 1 | #include "sio-init.z80" 2 | 3 | SPACE_TABLE: 4 | DEFB 0,0,1,3,5,7,10,12,14,16,19,21,24,25,27,27 5 | DEFB 27,27,25,24,21,19,16,14,12,10,7,5,3,1,0,0 6 | 7 | VT100: 8 | DEFB 27,"[2;3" ;VT100 command to set character color 9 | VT100_END: 10 | TRACK_WIDTH: 11 | DEFB 7 12 | TRACK_CHAR: 13 | DEFB "#" 14 | 15 | RAM_START: 16 | CURRENT_COLOR: 17 | DEFW 8000h 18 | 19 | CURRENT_INDEX: 20 | DEFW 8000h + 2 21 | 22 | 23 | MAIN: 24 | CALL SIOA_RESET 25 | CALL INT_INIT 26 | CALL A_RTS_ON 27 | 28 | LD A, "X" 29 | OUT (SIOA_D), A 30 | OUT (SIOA_D), A 31 | OUT (SIOA_D), A 32 | 33 | LD IX, SPACE_TABLE ;Init. the SPACE_TABLE index 34 | LD A, "1" 35 | LD (CURRENT_COLOR), A ;Loads the color "1" in RAM. 36 | 37 | ; *** Print leading spaces *** 38 | PRINT_SPACES: 39 | LD B, (IX) ;Loads the number of spaces to print in B 40 | NEXT_SPACE: 41 | LD A, 0 ;If... 42 | OR B ;...the space counter is zero then... 43 | JR Z, PRINT_COLOR ;...print the color. 44 | LD A, " " ;Loads a space and... 45 | OUT (SIOA_D), A ;...outputs it. 46 | DEC B ;Decrement the space counter... 47 | JR NEXT_SPACE ;...and jump to print the next space. 48 | 49 | PRINT_COLOR: 50 | LD B, VT100_END - VT100 ;Loads VT100 header command size in B. 51 | LD IY, VT100 ;Loads the VT100 command pointer. 52 | NEXT_CMD_CHAR: 53 | LD A, 0 ;If... 54 | OR B ;...the command is done printing then... 55 | JR Z, PRINT_COL_VAL ;...print the color value... 56 | LD A, (IY) ;...else load the current character to print... 57 | OUT (SIOA_D),A ;...and outputs it. 58 | INC IY ;Moves the VT100 command pointer forward. 59 | DEC B ;One less character to print. 60 | JR NEXT_CMD_CHAR ;Print the next command character. 61 | PRINT_COL_VAL: 62 | LD A, (CURRENT_COLOR) ;Loads the current color... 63 | OUT (SIOA_D), A ;...and outputs it. 64 | INC A ;Increments the color... 65 | LD (CURRENT_COLOR),A ;...and saves it in memory. 66 | OR "8" ;Checks if the current color is valid. 67 | JR NZ, PRINT_CMD_END ;If valid, print the command's ending character... 68 | LD A, "1" ;...else reset the color to the first one... 69 | LD (CURRENT_COLOR),A ;...and saves it in RAM. 70 | PRINT_CMD_END: 71 | LD A, "m" ;Loads the command's ending char... 72 | OUT (SIOA_D), A ;...and outputs it. 73 | 74 | PRINT_TRACK: 75 | LD HL, TRACK_WIDTH 76 | LD B, (HL) ;Loads the track width counter. 77 | NEXT_TRACK_CHAR: 78 | LD A, 0 ;If... 79 | OR B ;...the track width counter is zero then... 80 | JR NZ, PRINT_NEW_LINE ;...print a new line... 81 | 82 | PRINT_NEW_LINE: 83 | LD A, 10 ;Loads a line feed... 84 | OUT (SIOA_D), A ;...and prints it and... 85 | LD A, 13 ;...loads a carriage return 86 | OUT (SIOA_D), A ;...and prints it. 87 | 88 | INC IX ;Increments the SPACE_TABLE index 89 | LD (CURRENT_INDEX), IX ;Using the current index value... 90 | LD HL, CURRENT_INDEX ;...check if... 91 | LD A, 32 ;...it did not reach the end of the SPACE_TABLE... 92 | XOR (HL) ;...then... 93 | JP NZ, PRINT_SPACES ;...go back to printing spaces for the new line... 94 | LD IX, SPACE_TABLE ;...else reinitialize the space table pointer... 95 | JP PRINT_SPACES ;...and go back to printing spaces for the new line... 96 | 97 | 98 | KEY_PRESSED: 99 | RET 100 | 101 | -------------------------------------------------------------------------------- /Projects/S80-Library/S80.lib: -------------------------------------------------------------------------------- 1 | EESchema-LIBRARY Version 2.4 2 | #encoding utf-8 3 | # 4 | # S80_Interface 5 | # 6 | DEF S80_Interface I 0 40 Y Y 1 F N 7 | F0 "I" -900 1500 50 H V L CNN 8 | F1 "S80_Interface" 900 1500 50 H V R CNN 9 | F2 "" -900 400 50 H I C CNN 10 | F3 "" -900 400 50 H I C CNN 11 | $FPLIST 12 | Interface* 13 | $ENDFPLIST 14 | DRAW 15 | T 0 -400 -1050 50 0 0 0 "USER PORT A" Normal 0 C C 16 | T 0 400 -1050 50 0 0 0 "USER PORT B" Normal 0 C C 17 | S -900 1450 900 -1350 0 1 0 N 18 | X GND 1 200 1600 150 D 50 50 1 1 P 19 | X A7 10 1050 650 150 L 50 50 1 1 P 20 | X A8 11 1050 550 150 L 50 50 1 1 P 21 | X A9 12 1050 450 150 L 50 50 1 1 P 22 | X A10 13 1050 350 150 L 50 50 1 1 P 23 | X A11 14 1050 250 150 L 50 50 1 1 P 24 | X A12 15 1050 150 150 L 50 50 1 1 P 25 | X A13 16 1050 50 150 L 50 50 1 1 P 26 | X A14 17 1050 -50 150 L 50 50 1 1 P 27 | X A15 18 1050 -150 150 L 50 50 1 1 P 28 | X D0 19 1050 -300 150 L 50 50 1 1 P 29 | X VCC 2 -200 1600 150 D 50 50 1 1 P 30 | X D1 20 1050 -400 150 L 50 50 1 1 P 31 | X D2 21 1050 -500 150 L 50 50 1 1 P 32 | X D3 22 1050 -600 150 L 50 50 1 1 P 33 | X D4 23 1050 -700 150 L 50 50 1 1 P 34 | X D5 24 1050 -800 150 L 50 50 1 1 P 35 | X D6 25 1050 -900 150 L 50 50 1 1 P 36 | X D7 26 1050 -1000 150 L 50 50 1 1 P 37 | X ~RESET~ 27 -1050 1350 150 R 50 50 1 1 P I 38 | X ~CLK~ 28 -1050 1200 150 R 50 50 1 1 P C 39 | X ~NMI~ 29 -1050 900 150 R 50 50 1 1 P I 40 | X A0 3 1050 1350 150 L 50 50 1 1 P 41 | X ~INT~ 30 -1050 800 150 R 50 50 1 1 P I 42 | X ~M1~ 31 -1050 500 150 R 50 50 1 1 P I 43 | X ~RFSH~ 32 -1050 400 150 R 50 50 1 1 P I 44 | X ~WAIT~ 33 -1050 300 150 R 50 50 1 1 P I 45 | X ~HALT~ 34 -1050 200 150 R 50 50 1 1 P I 46 | X ~RD~ 35 -1050 -200 150 R 50 50 1 1 P I 47 | X ~WR~ 36 -1050 -300 150 R 50 50 1 1 P I 48 | X ~MREQ~ 37 -1050 -400 150 R 50 50 1 1 P I 49 | X ~IORQ~ 38 -1050 -500 150 R 50 50 1 1 P I 50 | X ~BUSRQ~ 39 -1050 -800 150 R 50 50 1 1 P I 51 | X A1 4 1050 1250 150 L 50 50 1 1 P 52 | X ~BUSACK~ 40 -1050 -900 150 R 50 50 1 1 P I 53 | X MEXT 41 -800 -1500 150 U 50 50 1 1 P 54 | X RxB 42 -700 -1500 150 U 50 50 1 1 P 55 | X TxB 43 -600 -1500 150 U 50 50 1 1 P 56 | X INT0 44 -500 -1500 150 U 50 50 1 1 P 57 | X INT1 45 -400 -1500 150 U 50 50 1 1 P 58 | X INT2 46 -300 -1500 150 U 50 50 1 1 P 59 | X INT3 47 -200 -1500 150 U 50 50 1 1 P 60 | X INT4 48 -100 -1500 150 U 50 50 1 1 P 61 | X UPB0 49 100 -1500 150 U 50 50 1 1 P 62 | X A2 5 1050 1150 150 L 50 50 1 1 P 63 | X UPB1 50 200 -1500 150 U 50 50 1 1 P 64 | X UPB2 51 300 -1500 150 U 50 50 1 1 P 65 | X UPB3 52 400 -1500 150 U 50 50 1 1 P 66 | X UPB4 53 500 -1500 150 U 50 50 1 1 P 67 | X UPB5 54 600 -1500 150 U 50 50 1 1 P 68 | X UPB6 55 700 -1500 150 U 50 50 1 1 P 69 | X UPB7 56 800 -1500 150 U 50 50 1 1 P 70 | X A3 6 1050 1050 150 L 50 50 1 1 P 71 | X A4 7 1050 950 150 L 50 50 1 1 P 72 | X A5 8 1050 850 150 L 50 50 1 1 P 73 | X A6 9 1050 750 150 L 50 50 1 1 P 74 | ENDDRAW 75 | ENDDEF 76 | # 77 | # Z80CPU 78 | # 79 | DEF Z80CPU U 0 40 Y Y 1 F N 80 | F0 "U" -550 1400 50 H V L CNN 81 | F1 "Z80CPU" 250 1400 50 H V L CNN 82 | F2 "" 0 400 50 H I C CNN 83 | F3 "" 0 400 50 H I C CNN 84 | $FPLIST 85 | DIP* 86 | PDIP* 87 | $ENDFPLIST 88 | DRAW 89 | S -550 1350 550 -1350 0 1 10 f 90 | X VCC 11 0 1300 150 D 50 50 0 0 W N 91 | X GND 29 0 -1300 150 U 50 50 0 0 W N 92 | X A11 1 700 100 150 L 50 50 1 1 O 93 | X D6 10 700 -1100 150 L 50 50 1 1 B 94 | X D2 12 700 -700 150 L 50 50 1 1 B 95 | X D7 13 700 -1200 150 L 50 50 1 1 B 96 | X D0 14 700 -500 150 L 50 50 1 1 B 97 | X D1 15 700 -600 150 L 50 50 1 1 B 98 | X ~INT~ 16 -700 500 150 R 50 50 1 1 I I 99 | X ~NMI~ 17 -700 600 150 R 50 50 1 1 I I 100 | X ~HALT~ 18 -700 -100 150 R 50 50 1 1 O I 101 | X ~MREQ~ 19 -700 -700 150 R 50 50 1 1 O I 102 | X A12 2 700 0 150 L 50 50 1 1 O 103 | X ~IORQ~ 20 -700 -800 150 R 50 50 1 1 O I 104 | X ~RD~ 21 -700 -500 150 R 50 50 1 1 O I 105 | X ~WR~ 22 -700 -600 150 R 50 50 1 1 O I 106 | X ~BUSACK~ 23 -700 -1200 150 R 50 50 1 1 O I 107 | X ~WAIT~ 24 -700 0 150 R 50 50 1 1 I I 108 | X ~BUSRQ~ 25 -700 -1100 150 R 50 50 1 1 I I 109 | X ~RESET~ 26 -700 1200 150 R 50 50 1 1 I I 110 | X ~M1~ 27 -700 200 150 R 50 50 1 1 O I 111 | X ~RFSH~ 28 -700 100 150 R 50 50 1 1 O I 112 | X A13 3 700 -100 150 L 50 50 1 1 O 113 | X A0 30 700 1200 150 L 50 50 1 1 O 114 | X A1 31 700 1100 150 L 50 50 1 1 O 115 | X A2 32 700 1000 150 L 50 50 1 1 O 116 | X A3 33 700 900 150 L 50 50 1 1 O 117 | X A4 34 700 800 150 L 50 50 1 1 O 118 | X A5 35 700 700 150 L 50 50 1 1 O 119 | X A6 36 700 600 150 L 50 50 1 1 O 120 | X A7 37 700 500 150 L 50 50 1 1 O 121 | X A8 38 700 400 150 L 50 50 1 1 O 122 | X A9 39 700 300 150 L 50 50 1 1 O 123 | X A14 4 700 -200 150 L 50 50 1 1 O 124 | X A10 40 700 200 150 L 50 50 1 1 O 125 | X A15 5 700 -300 150 L 50 50 1 1 O 126 | X ~CLK~ 6 -700 900 150 R 50 50 1 1 I C 127 | X D4 7 700 -900 150 L 50 50 1 1 B 128 | X D3 8 700 -800 150 L 50 50 1 1 B 129 | X D5 9 700 -1000 150 L 50 50 1 1 B 130 | ENDDRAW 131 | ENDDEF 132 | # 133 | #End Library 134 | -------------------------------------------------------------------------------- /Template/S80Project/S80.lib: -------------------------------------------------------------------------------- 1 | EESchema-LIBRARY Version 2.4 2 | #encoding utf-8 3 | # 4 | # S80_Interface 5 | # 6 | DEF S80_Interface I 0 40 Y Y 1 F N 7 | F0 "I" -900 1500 50 H V L CNN 8 | F1 "S80_Interface" 900 1500 50 H V R CNN 9 | F2 "" -900 400 50 H I C CNN 10 | F3 "" -900 400 50 H I C CNN 11 | $FPLIST 12 | Interface* 13 | $ENDFPLIST 14 | DRAW 15 | T 0 -400 -1050 50 0 0 0 "USER PORT A" Normal 0 C C 16 | T 0 400 -1050 50 0 0 0 "USER PORT B" Normal 0 C C 17 | S -900 1450 900 -1350 0 1 0 N 18 | X GND 1 200 1600 150 D 50 50 1 1 P 19 | X A7 10 1050 650 150 L 50 50 1 1 P 20 | X A8 11 1050 550 150 L 50 50 1 1 P 21 | X A9 12 1050 450 150 L 50 50 1 1 P 22 | X A10 13 1050 350 150 L 50 50 1 1 P 23 | X A11 14 1050 250 150 L 50 50 1 1 P 24 | X A12 15 1050 150 150 L 50 50 1 1 P 25 | X A13 16 1050 50 150 L 50 50 1 1 P 26 | X A14 17 1050 -50 150 L 50 50 1 1 P 27 | X A15 18 1050 -150 150 L 50 50 1 1 P 28 | X D0 19 1050 -300 150 L 50 50 1 1 P 29 | X VCC 2 -200 1600 150 D 50 50 1 1 P 30 | X D1 20 1050 -400 150 L 50 50 1 1 P 31 | X D2 21 1050 -500 150 L 50 50 1 1 P 32 | X D3 22 1050 -600 150 L 50 50 1 1 P 33 | X D4 23 1050 -700 150 L 50 50 1 1 P 34 | X D5 24 1050 -800 150 L 50 50 1 1 P 35 | X D6 25 1050 -900 150 L 50 50 1 1 P 36 | X D7 26 1050 -1000 150 L 50 50 1 1 P 37 | X ~RESET~ 27 -1050 1350 150 R 50 50 1 1 P I 38 | X ~CLK~ 28 -1050 1200 150 R 50 50 1 1 P C 39 | X ~NMI~ 29 -1050 900 150 R 50 50 1 1 P I 40 | X A0 3 1050 1350 150 L 50 50 1 1 P 41 | X ~INT~ 30 -1050 800 150 R 50 50 1 1 P I 42 | X ~M1~ 31 -1050 500 150 R 50 50 1 1 P I 43 | X ~RFSH~ 32 -1050 400 150 R 50 50 1 1 P I 44 | X ~WAIT~ 33 -1050 300 150 R 50 50 1 1 P I 45 | X ~HALT~ 34 -1050 200 150 R 50 50 1 1 P I 46 | X ~RD~ 35 -1050 -200 150 R 50 50 1 1 P I 47 | X ~WR~ 36 -1050 -300 150 R 50 50 1 1 P I 48 | X ~MREQ~ 37 -1050 -400 150 R 50 50 1 1 P I 49 | X ~IORQ~ 38 -1050 -500 150 R 50 50 1 1 P I 50 | X ~BUSRQ~ 39 -1050 -800 150 R 50 50 1 1 P I 51 | X A1 4 1050 1250 150 L 50 50 1 1 P 52 | X ~BUSACK~ 40 -1050 -900 150 R 50 50 1 1 P I 53 | X UPA0 41 -800 -1500 150 U 50 50 1 1 P 54 | X UPA1 42 -700 -1500 150 U 50 50 1 1 P 55 | X UPA2 43 -600 -1500 150 U 50 50 1 1 P 56 | X UPA3 44 -500 -1500 150 U 50 50 1 1 P 57 | X UPA4 45 -400 -1500 150 U 50 50 1 1 P 58 | X UPA5 46 -300 -1500 150 U 50 50 1 1 P 59 | X UPA6 47 -200 -1500 150 U 50 50 1 1 P 60 | X UPA7 48 -100 -1500 150 U 50 50 1 1 P 61 | X UPB0 49 100 -1500 150 U 50 50 1 1 P 62 | X A2 5 1050 1150 150 L 50 50 1 1 P 63 | X UPB1 50 200 -1500 150 U 50 50 1 1 P 64 | X UPB2 51 300 -1500 150 U 50 50 1 1 P 65 | X UPB3 52 400 -1500 150 U 50 50 1 1 P 66 | X UPB4 53 500 -1500 150 U 50 50 1 1 P 67 | X UPB5 54 600 -1500 150 U 50 50 1 1 P 68 | X UPB6 55 700 -1500 150 U 50 50 1 1 P 69 | X UPB7 56 800 -1500 150 U 50 50 1 1 P 70 | X A3 6 1050 1050 150 L 50 50 1 1 P 71 | X A4 7 1050 950 150 L 50 50 1 1 P 72 | X A5 8 1050 850 150 L 50 50 1 1 P 73 | X A6 9 1050 750 150 L 50 50 1 1 P 74 | ENDDRAW 75 | ENDDEF 76 | # 77 | # Z80CPU 78 | # 79 | DEF Z80CPU U 0 40 Y Y 1 F N 80 | F0 "U" -550 1400 50 H V L CNN 81 | F1 "Z80CPU" 250 1400 50 H V L CNN 82 | F2 "" 0 400 50 H I C CNN 83 | F3 "" 0 400 50 H I C CNN 84 | $FPLIST 85 | DIP* 86 | PDIP* 87 | $ENDFPLIST 88 | DRAW 89 | S -550 1350 550 -1350 0 1 10 f 90 | X VCC 11 0 1300 150 D 50 50 0 0 W N 91 | X GND 29 0 -1300 150 U 50 50 0 0 W N 92 | X A11 1 700 100 150 L 50 50 1 1 O 93 | X D6 10 700 -1100 150 L 50 50 1 1 B 94 | X D2 12 700 -700 150 L 50 50 1 1 B 95 | X D7 13 700 -1200 150 L 50 50 1 1 B 96 | X D0 14 700 -500 150 L 50 50 1 1 B 97 | X D1 15 700 -600 150 L 50 50 1 1 B 98 | X ~INT~ 16 -700 500 150 R 50 50 1 1 I I 99 | X ~NMI~ 17 -700 600 150 R 50 50 1 1 I I 100 | X ~HALT~ 18 -700 -100 150 R 50 50 1 1 O I 101 | X ~MREQ~ 19 -700 -700 150 R 50 50 1 1 O I 102 | X A12 2 700 0 150 L 50 50 1 1 O 103 | X ~IORQ~ 20 -700 -800 150 R 50 50 1 1 O I 104 | X ~RD~ 21 -700 -500 150 R 50 50 1 1 O I 105 | X ~WR~ 22 -700 -600 150 R 50 50 1 1 O I 106 | X ~BUSACK~ 23 -700 -1200 150 R 50 50 1 1 O I 107 | X ~WAIT~ 24 -700 0 150 R 50 50 1 1 I I 108 | X ~BUSRQ~ 25 -700 -1100 150 R 50 50 1 1 I I 109 | X ~RESET~ 26 -700 1200 150 R 50 50 1 1 I I 110 | X ~M1~ 27 -700 200 150 R 50 50 1 1 O I 111 | X ~RFSH~ 28 -700 100 150 R 50 50 1 1 O I 112 | X A13 3 700 -100 150 L 50 50 1 1 O 113 | X A0 30 700 1200 150 L 50 50 1 1 O 114 | X A1 31 700 1100 150 L 50 50 1 1 O 115 | X A2 32 700 1000 150 L 50 50 1 1 O 116 | X A3 33 700 900 150 L 50 50 1 1 O 117 | X A4 34 700 800 150 L 50 50 1 1 O 118 | X A5 35 700 700 150 L 50 50 1 1 O 119 | X A6 36 700 600 150 L 50 50 1 1 O 120 | X A7 37 700 500 150 L 50 50 1 1 O 121 | X A8 38 700 400 150 L 50 50 1 1 O 122 | X A9 39 700 300 150 L 50 50 1 1 O 123 | X A14 4 700 -200 150 L 50 50 1 1 O 124 | X A10 40 700 200 150 L 50 50 1 1 O 125 | X A15 5 700 -300 150 L 50 50 1 1 O 126 | X ~CLK~ 6 -700 900 150 R 50 50 1 1 I C 127 | X D4 7 700 -900 150 L 50 50 1 1 B 128 | X D3 8 700 -800 150 L 50 50 1 1 B 129 | X D5 9 700 -1000 150 L 50 50 1 1 B 130 | ENDDRAW 131 | ENDDEF 132 | # 133 | #End Library 134 | -------------------------------------------------------------------------------- /Projects/RetroZ-RAM24K/libs/S80.lib: -------------------------------------------------------------------------------- 1 | EESchema-LIBRARY Version 2.4 2 | #encoding utf-8 3 | # 4 | # S80_Interface 5 | # 6 | DEF S80_Interface I 0 40 Y Y 1 F N 7 | F0 "I" -900 1500 50 H V L CNN 8 | F1 "S80_Interface" 900 1500 50 H V R CNN 9 | F2 "" -900 400 50 H I C CNN 10 | F3 "" -900 400 50 H I C CNN 11 | $FPLIST 12 | Interface* 13 | $ENDFPLIST 14 | DRAW 15 | T 0 -400 -1050 50 0 0 0 "USER PORT A" Normal 0 C C 16 | T 0 400 -1050 50 0 0 0 "USER PORT B" Normal 0 C C 17 | S -900 1450 900 -1350 0 1 0 N 18 | X GND 1 200 1600 150 D 50 50 1 1 P 19 | X A7 10 1050 650 150 L 50 50 1 1 P 20 | X A8 11 1050 550 150 L 50 50 1 1 P 21 | X A9 12 1050 450 150 L 50 50 1 1 P 22 | X A10 13 1050 350 150 L 50 50 1 1 P 23 | X A11 14 1050 250 150 L 50 50 1 1 P 24 | X A12 15 1050 150 150 L 50 50 1 1 P 25 | X A13 16 1050 50 150 L 50 50 1 1 P 26 | X A14 17 1050 -50 150 L 50 50 1 1 P 27 | X A15 18 1050 -150 150 L 50 50 1 1 P 28 | X D0 19 1050 -300 150 L 50 50 1 1 P 29 | X VCC 2 -200 1600 150 D 50 50 1 1 P 30 | X D1 20 1050 -400 150 L 50 50 1 1 P 31 | X D2 21 1050 -500 150 L 50 50 1 1 P 32 | X D3 22 1050 -600 150 L 50 50 1 1 P 33 | X D4 23 1050 -700 150 L 50 50 1 1 P 34 | X D5 24 1050 -800 150 L 50 50 1 1 P 35 | X D6 25 1050 -900 150 L 50 50 1 1 P 36 | X D7 26 1050 -1000 150 L 50 50 1 1 P 37 | X ~RESET~ 27 -1050 1350 150 R 50 50 1 1 P I 38 | X ~CLK~ 28 -1050 1200 150 R 50 50 1 1 P C 39 | X ~NMI~ 29 -1050 900 150 R 50 50 1 1 P I 40 | X A0 3 1050 1350 150 L 50 50 1 1 P 41 | X ~INT~ 30 -1050 800 150 R 50 50 1 1 P I 42 | X ~M1~ 31 -1050 500 150 R 50 50 1 1 P I 43 | X ~RFSH~ 32 -1050 400 150 R 50 50 1 1 P I 44 | X ~WAIT~ 33 -1050 300 150 R 50 50 1 1 P I 45 | X ~HALT~ 34 -1050 200 150 R 50 50 1 1 P I 46 | X ~RD~ 35 -1050 -200 150 R 50 50 1 1 P I 47 | X ~WR~ 36 -1050 -300 150 R 50 50 1 1 P I 48 | X ~MREQ~ 37 -1050 -400 150 R 50 50 1 1 P I 49 | X ~IORQ~ 38 -1050 -500 150 R 50 50 1 1 P I 50 | X ~BUSRQ~ 39 -1050 -800 150 R 50 50 1 1 P I 51 | X A1 4 1050 1250 150 L 50 50 1 1 P 52 | X ~BUSACK~ 40 -1050 -900 150 R 50 50 1 1 P I 53 | X UPA0 41 -800 -1500 150 U 50 50 1 1 P 54 | X UPA1 42 -700 -1500 150 U 50 50 1 1 P 55 | X UPA2 43 -600 -1500 150 U 50 50 1 1 P 56 | X UPA3 44 -500 -1500 150 U 50 50 1 1 P 57 | X UPA4 45 -400 -1500 150 U 50 50 1 1 P 58 | X UPA5 46 -300 -1500 150 U 50 50 1 1 P 59 | X UPA6 47 -200 -1500 150 U 50 50 1 1 P 60 | X UPA7 48 -100 -1500 150 U 50 50 1 1 P 61 | X UPB0 49 100 -1500 150 U 50 50 1 1 P 62 | X A2 5 1050 1150 150 L 50 50 1 1 P 63 | X UPB1 50 200 -1500 150 U 50 50 1 1 P 64 | X UPB2 51 300 -1500 150 U 50 50 1 1 P 65 | X UPB3 52 400 -1500 150 U 50 50 1 1 P 66 | X UPB4 53 500 -1500 150 U 50 50 1 1 P 67 | X UPB5 54 600 -1500 150 U 50 50 1 1 P 68 | X UPB6 55 700 -1500 150 U 50 50 1 1 P 69 | X UPB7 56 800 -1500 150 U 50 50 1 1 P 70 | X A3 6 1050 1050 150 L 50 50 1 1 P 71 | X A4 7 1050 950 150 L 50 50 1 1 P 72 | X A5 8 1050 850 150 L 50 50 1 1 P 73 | X A6 9 1050 750 150 L 50 50 1 1 P 74 | ENDDRAW 75 | ENDDEF 76 | # 77 | # Z80CPU 78 | # 79 | DEF Z80CPU U 0 40 Y Y 1 F N 80 | F0 "U" -550 1400 50 H V L CNN 81 | F1 "Z80CPU" 250 1400 50 H V L CNN 82 | F2 "" 0 400 50 H I C CNN 83 | F3 "" 0 400 50 H I C CNN 84 | $FPLIST 85 | DIP* 86 | PDIP* 87 | $ENDFPLIST 88 | DRAW 89 | S -550 1350 550 -1350 0 1 10 f 90 | X VCC 11 0 1300 150 D 50 50 0 0 W N 91 | X GND 29 0 -1300 150 U 50 50 0 0 W N 92 | X A11 1 700 100 150 L 50 50 1 1 O 93 | X D6 10 700 -1100 150 L 50 50 1 1 B 94 | X D2 12 700 -700 150 L 50 50 1 1 B 95 | X D7 13 700 -1200 150 L 50 50 1 1 B 96 | X D0 14 700 -500 150 L 50 50 1 1 B 97 | X D1 15 700 -600 150 L 50 50 1 1 B 98 | X ~INT~ 16 -700 500 150 R 50 50 1 1 I I 99 | X ~NMI~ 17 -700 600 150 R 50 50 1 1 I I 100 | X ~HALT~ 18 -700 -100 150 R 50 50 1 1 O I 101 | X ~MREQ~ 19 -700 -700 150 R 50 50 1 1 O I 102 | X A12 2 700 0 150 L 50 50 1 1 O 103 | X ~IORQ~ 20 -700 -800 150 R 50 50 1 1 O I 104 | X ~RD~ 21 -700 -500 150 R 50 50 1 1 O I 105 | X ~WR~ 22 -700 -600 150 R 50 50 1 1 O I 106 | X ~BUSACK~ 23 -700 -1200 150 R 50 50 1 1 O I 107 | X ~WAIT~ 24 -700 0 150 R 50 50 1 1 I I 108 | X ~BUSRQ~ 25 -700 -1100 150 R 50 50 1 1 I I 109 | X ~RESET~ 26 -700 1200 150 R 50 50 1 1 I I 110 | X ~M1~ 27 -700 200 150 R 50 50 1 1 O I 111 | X ~RFSH~ 28 -700 100 150 R 50 50 1 1 O I 112 | X A13 3 700 -100 150 L 50 50 1 1 O 113 | X A0 30 700 1200 150 L 50 50 1 1 O 114 | X A1 31 700 1100 150 L 50 50 1 1 O 115 | X A2 32 700 1000 150 L 50 50 1 1 O 116 | X A3 33 700 900 150 L 50 50 1 1 O 117 | X A4 34 700 800 150 L 50 50 1 1 O 118 | X A5 35 700 700 150 L 50 50 1 1 O 119 | X A6 36 700 600 150 L 50 50 1 1 O 120 | X A7 37 700 500 150 L 50 50 1 1 O 121 | X A8 38 700 400 150 L 50 50 1 1 O 122 | X A9 39 700 300 150 L 50 50 1 1 O 123 | X A14 4 700 -200 150 L 50 50 1 1 O 124 | X A10 40 700 200 150 L 50 50 1 1 O 125 | X A15 5 700 -300 150 L 50 50 1 1 O 126 | X ~CLK~ 6 -700 900 150 R 50 50 1 1 I C 127 | X D4 7 700 -900 150 L 50 50 1 1 B 128 | X D3 8 700 -800 150 L 50 50 1 1 B 129 | X D5 9 700 -1000 150 L 50 50 1 1 B 130 | ENDDRAW 131 | ENDDEF 132 | # 133 | #End Library 134 | -------------------------------------------------------------------------------- /Projects/RetroZ-disk/src/DiskController/retroz-bios-inc.z80: -------------------------------------------------------------------------------- 1 | #if !defined(_PC) 2 | 3 | _PC DEFL 0 ;Parameter counter 4 | 5 | 6 | ;Adds the content of ® to the stack and increment the _PARAM_COUNT label. 7 | MACRO _ADDRP ® 8 | PUSH ® 9 | _PC DEFL {_PC + 1} 10 | ENDM 11 | 12 | 13 | ;Adds a litteral 16 bits parameter to the stack then increment the 14 | ;_PARAM_COUNT label. Register values are preserved. 15 | MACRO _ADDLP &lit 16 | PUSH HL 17 | LD HL,&lit 18 | EX (SP),HL 19 | _PC DEFL {_PC + 1} 20 | ENDM 21 | 22 | 23 | ;Macro that calls a procedure &proc. This macro cleans the stack from the 24 | ;parameters added with _ADD_PARAM or ADD_LPARAM. Register HL and DE may be 25 | ;changed if the subroutine returns respectively a 16(HL) or 32(DEHL) bits 26 | ;value. 27 | MACRO _CALL &proc 28 | _PC_&proc DEFL {_PC} 29 | _PC DEFL 0 30 | CALL _PUSH 31 | CALL &proc 32 | CALL _POP 33 | _CLEANP _PC_&proc 34 | ENDM 35 | 36 | 37 | ;Recursive macro that cleans &cnt parameters from the stack. 38 | MACRO _CLEANP &cnt 39 | IF &cnt > 0 40 | EX (SP),HL 41 | POP HL 42 | _CLEANP {&cnt - 1} 43 | ENDIF 44 | ENDM 45 | 46 | 47 | ;Loads the register ® with the parameter at index &idx 48 | ;Since IY is used to get at parameters, its not possible to load 49 | ;a parameter into IX or IY using this macro. First parameter is at index 0. 50 | MACRO _GETP ®, &idx 51 | LD IY,14 52 | ADD IY,SP 53 | LD ®, (IY+{&idx * 2}) 54 | ENDM 55 | 56 | 57 | ;Return the content of ®1 at the stack position of HL. The content of IY 58 | ;can not be returned using this macro. 59 | MACRO _RET_HL ®1 60 | LD IY,0 61 | ADD IY,SP 62 | LD (IY+12),®1 63 | RET 64 | ENDM 65 | 66 | 67 | 68 | ;Return the content of ®1 at the stack position of HL and the 69 | ;content of ®2 at the DE stack position. The content of IX or IY cannot 70 | ;be returned by this macro. 71 | MACRO _RET_DEHL ®1, ®2 72 | LD IY,0 73 | ADD IY,SP 74 | LD (IY+12),®1 75 | LD (IY+10),®2 76 | RET 77 | ENDM 78 | 79 | 80 | #endif 81 | 82 | ; +++ global symbols +++ 83 | 84 | ATTR_BLINK EQU $0035 85 | ATTR_BRIGHT EQU $0031 86 | ATTR_DIM EQU $0032 87 | ATTR_HIDDEN EQU $0038 88 | ATTR_RESET EQU $0030 89 | ATTR_REVERSE EQU $0037 90 | ATTR_UNDERSCORE EQU $0034 91 | BC_DIVBY_DE EQU $02A1 92 | CLS EQU $01B1 93 | COLOR_BLACK EQU $0030 94 | COLOR_BLUE EQU $0034 95 | COLOR_CYAN EQU $0036 96 | COLOR_GREEN EQU $0032 97 | COLOR_MAGENTA EQU $0035 98 | COLOR_RED EQU $0031 99 | COLOR_WHITE EQU $0037 100 | COLOR_YELLOW EQU $0033 101 | DIV16 EQU $02A1 102 | DRAW_LINE EQU $03E7 103 | DRAW_RECT EQU $0462 104 | DRAW_ROW EQU $0423 105 | ESC EQU $001B 106 | GETCHAR EQU $0170 107 | INPC EQU $00F4 108 | ITOA EQU $02BE 109 | MEMDUMP EQU $0554 110 | MUL16 EQU $01F0 111 | MUL8 EQU $01D4 112 | MUL_BC_DE_DEHL EQU $01F0 113 | OUTC EQU $00DE 114 | _POP EQU $06AB 115 | PRINT_ENDL EQU $0165 116 | PRINT EQU $019C 117 | _PUSH EQU $06A1 118 | PUTCHAR EQU $011C 119 | RTS_OFF EQU $00A1 120 | RTS_ON EQU $00AA 121 | SET_ATTRIBUTE EQU $0346 122 | SET_COLOR EQU $0312 123 | SET_POS EQU $0366 124 | SLEEP EQU $01B7 125 | START_RX_INT EQU $00B3 126 | STOP_RX_INT EQU $00BC 127 | TOHEX EQU $065F 128 | -------------------------------------------------------------------------------- /asm/sio2.z80: -------------------------------------------------------------------------------- 1 | #if !defined(_SIO2_Z80) 2 | _SIO2_Z80: 3 | 4 | SIOA_C EQU $00 5 | SIOA_D EQU $01 6 | SIOB_C EQU $02 7 | SIOB_D EQU $03 8 | 9 | 10 | #code INT_VECTOR,$000C,10 11 | DEFW RX_CHA_AVAILABLE 12 | DEFW SPEC_RX_CONDITION 13 | 14 | #code CODE 15 | ORG INT_VECTOR + 10 16 | 17 | SIO2_INIT: 18 | ; SIOA init 19 | LD A,$00 ; write 0 20 | OUT (SIOA_C),A 21 | LD A,$18 ; reset ext/status interrupts 22 | OUT (SIOA_C),A 23 | 24 | LD A,$04 ; write 4 25 | OUT (SIOA_C),A 26 | LD A,$C4 ; X64, no parity, 1 stop 27 | OUT (SIOA_C),A 28 | 29 | LD A,$01 ; write 1 30 | OUT (SIOA_C),A 31 | LD A,$18 ; interrupt on all recv 32 | OUT (SIOA_C),A 33 | 34 | LD A,$03 ; write 3 35 | OUT (SIOA_C),A 36 | LD A,$E1 ; 8 bits, auto enable, rcv enab 37 | OUT (SIOA_C),A 38 | 39 | LD A,$05 ; write 5 40 | OUT (SIOA_C),A 41 | LD A,$EA ; dtr enable, 8 bits, tx enable, rts 42 | OUT (SIOA_C),A 43 | 44 | ; SIOB init 45 | LD A,$00 46 | OUT (SIOB_C),A 47 | LD A,$18 48 | OUT (SIOB_C),A 49 | 50 | LD A,$04 ; write 4 51 | OUT (SIOB_C),A 52 | LD A,$C4 ; X64, no parity, 1 stop 53 | OUT (SIOB_C),A 54 | 55 | LD A,$01 56 | OUT (SIOB_C),A 57 | LD A,$18 58 | OUT (SIOB_C),A 59 | 60 | LD A,$02 ; write reg 2 61 | OUT (SIOB_C),A 62 | LD A,$0C ; INTERRUPT VECTOR ADDRESS 63 | OUT (SIOB_C),A 64 | 65 | LD A,$03 66 | OUT (SIOB_C),A 67 | LD A,$E1 68 | OUT (SIOB_C),A 69 | 70 | LD A,$05 71 | OUT (SIOB_C),A 72 | LD A,$EA 73 | OUT (SIOB_C),A 74 | 75 | CALL INT_INIT 76 | 77 | 78 | ; ***** SIOA ENABLE INTERRUPTS ***** 79 | SIOA_EI: 80 | LD A, $03 ;write into WR0: select WR3 81 | OUT (SIOA_C),A 82 | LD A,$C1 ;RX 8bits, auto enable off, RX on 83 | OUT (SIOA_C),A 84 | RET 85 | 86 | 87 | ; ***** SIOA DISABLE INTERRUPTS ***** 88 | SIOA_DI: 89 | LD A,$03 ;write into WR0: select WR3 90 | OUT (SIOA_C),A 91 | LD A,$C0 ;RX 8bit, auto enable off, RX off 92 | OUT (SIOA_C),A 93 | RET 94 | 95 | 96 | INT_INIT: 97 | LD A,0 98 | LD I,A ;load I reg with zero 99 | IM 2 ;interrupt mode 2 100 | EI ;enable interrupts 101 | RET 102 | 103 | 104 | A_RTS_OFF: 105 | LD A,$05 ;write into WR0: select WR5 106 | OUT (SIOA_C),A 107 | LD A,$E8 ;DTR active, TX 8bit, BREAK off, TX on, RTS off 108 | OUT (SIOA_C),A 109 | RET 110 | 111 | 112 | A_RTS_ON: 113 | LD A,$05 ;write into WR0: select WR5 114 | OUT (SIOA_C),A 115 | LD A,$EA ;DTR active, TX 8bit, BREAK off, TX on, RTS on 116 | OUT (SIOA_C),A 117 | RET 118 | 119 | 120 | RX_CHA_AVAILABLE: 121 | PUSH AF ;backup AF 122 | EXX 123 | WAIT_RX: 124 | SUB A ;Clears A 125 | OUT (SIOA_C),A ;Select RR0 126 | IN A,(SIOA_C) ;Read RR0 127 | BIT 0,A ;Check if character is available 128 | JR Z,WAIT_RX ;Character not recieved yet, check again 129 | 130 | IN A,(SIOA_D) 131 | ; A holds recieved character 132 | 133 | ; do something with the character 134 | CALL KEY_PRESSED 135 | 136 | EXX 137 | POP AF 138 | EI 139 | RETI 140 | 141 | 142 | SPEC_RX_CONDITION: 143 | JP SIO2_INIT 144 | 145 | 146 | ;***************************************************************************** 147 | ; Waits until SIOA port is ready to transmit. Wait for ongoing transmission 148 | ; to finish, then waits for a data carrier to be detected and finally, waits 149 | ; for the clear to send signal to be on. 150 | ; 151 | ; On exit: Register A contains the status bits of the SIOA port. 152 | ;***************************************************************************** 153 | WAIT_TXA_READY MACRO 154 | conout1: 155 | SUB A ; Clears A to select port A READ REGISTER 0 156 | OUT (SIOA_C),A ; Selects port A READ REGISTER 157 | IN A,(SIOA_C) ; Reads the content of RR0 (recieve status) 158 | BIT 2,A ; Set Zero flag if transmitting a character 159 | JR Z,conout1 ; Loop if still transmitting character 160 | BIT 3,A ; Set zero flag if no data carrier is detected 161 | JR Z,conout1 ; Loop if no carrier detected. 162 | BIT 5,A ; Set zero flag if not clear to send 163 | JR Z,conout1 ; Loop if not clear to send. 164 | ; end of WAIT_TXA_READY macro 165 | ENDM 166 | 167 | 168 | #endif 169 | -------------------------------------------------------------------------------- /Projects/RetroZ-disk/RetroZ-disk.pro: -------------------------------------------------------------------------------- 1 | update=2020-03-21 11:36:17 2 | version=1 3 | last_client=kicad 4 | [general] 5 | version=1 6 | RootSch= 7 | BoardNm= 8 | [cvpcb] 9 | version=1 10 | NetIExt=net 11 | [eeschema] 12 | version=1 13 | LibDir= 14 | [eeschema/libraries] 15 | [pcbnew] 16 | version=1 17 | PageLayoutDescrFile= 18 | LastNetListRead=RetroZ-disk.net 19 | CopperLayerCount=2 20 | BoardThickness=1.6 21 | AllowMicroVias=0 22 | AllowBlindVias=0 23 | RequireCourtyardDefinitions=0 24 | ProhibitOverlappingCourtyards=1 25 | MinTrackWidth=0.1524 26 | MinViaDiameter=0.6858 27 | MinViaDrill=0.3302 28 | MinMicroViaDiameter=0 29 | MinMicroViaDrill=0 30 | MinHoleToHole=0.254 31 | TrackWidth1=0.1524 32 | TrackWidth2=0.4572 33 | ViaDiameter1=0.6858 34 | ViaDrill1=0.3302 35 | dPairWidth1=0.1524 36 | dPairGap1=0.1524 37 | dPairViaGap1=0.25 38 | SilkLineWidth=0.15 39 | SilkTextSizeV=1 40 | SilkTextSizeH=1 41 | SilkTextSizeThickness=0.15 42 | SilkTextItalic=0 43 | SilkTextUpright=1 44 | CopperLineWidth=0.2 45 | CopperTextSizeV=1.5 46 | CopperTextSizeH=1.5 47 | CopperTextThickness=0.3 48 | CopperTextItalic=0 49 | CopperTextUpright=1 50 | EdgeCutLineWidth=0.15 51 | CourtyardLineWidth=0.05 52 | OthersLineWidth=0.15 53 | OthersTextSizeV=1 54 | OthersTextSizeH=1 55 | OthersTextSizeThickness=0.15 56 | OthersTextItalic=0 57 | OthersTextUpright=1 58 | SolderMaskClearance=0.051 59 | SolderMaskMinWidth=0.25 60 | SolderPasteClearance=0 61 | SolderPasteRatio=-0 62 | [pcbnew/Layer.F.Cu] 63 | Name=F.Cu 64 | Type=0 65 | Enabled=1 66 | [pcbnew/Layer.In1.Cu] 67 | Name=In1.Cu 68 | Type=0 69 | Enabled=0 70 | [pcbnew/Layer.In2.Cu] 71 | Name=In2.Cu 72 | Type=0 73 | Enabled=0 74 | [pcbnew/Layer.In3.Cu] 75 | Name=In3.Cu 76 | Type=0 77 | Enabled=0 78 | [pcbnew/Layer.In4.Cu] 79 | Name=In4.Cu 80 | Type=0 81 | Enabled=0 82 | [pcbnew/Layer.In5.Cu] 83 | Name=In5.Cu 84 | Type=0 85 | Enabled=0 86 | [pcbnew/Layer.In6.Cu] 87 | Name=In6.Cu 88 | Type=0 89 | Enabled=0 90 | [pcbnew/Layer.In7.Cu] 91 | Name=In7.Cu 92 | Type=0 93 | Enabled=0 94 | [pcbnew/Layer.In8.Cu] 95 | Name=In8.Cu 96 | Type=0 97 | Enabled=0 98 | [pcbnew/Layer.In9.Cu] 99 | Name=In9.Cu 100 | Type=0 101 | Enabled=0 102 | [pcbnew/Layer.In10.Cu] 103 | Name=In10.Cu 104 | Type=0 105 | Enabled=0 106 | [pcbnew/Layer.In11.Cu] 107 | Name=In11.Cu 108 | Type=0 109 | Enabled=0 110 | [pcbnew/Layer.In12.Cu] 111 | Name=In12.Cu 112 | Type=0 113 | Enabled=0 114 | [pcbnew/Layer.In13.Cu] 115 | Name=In13.Cu 116 | Type=0 117 | Enabled=0 118 | [pcbnew/Layer.In14.Cu] 119 | Name=In14.Cu 120 | Type=0 121 | Enabled=0 122 | [pcbnew/Layer.In15.Cu] 123 | Name=In15.Cu 124 | Type=0 125 | Enabled=0 126 | [pcbnew/Layer.In16.Cu] 127 | Name=In16.Cu 128 | Type=0 129 | Enabled=0 130 | [pcbnew/Layer.In17.Cu] 131 | Name=In17.Cu 132 | Type=0 133 | Enabled=0 134 | [pcbnew/Layer.In18.Cu] 135 | Name=In18.Cu 136 | Type=0 137 | Enabled=0 138 | [pcbnew/Layer.In19.Cu] 139 | Name=In19.Cu 140 | Type=0 141 | Enabled=0 142 | [pcbnew/Layer.In20.Cu] 143 | Name=In20.Cu 144 | Type=0 145 | Enabled=0 146 | [pcbnew/Layer.In21.Cu] 147 | Name=In21.Cu 148 | Type=0 149 | Enabled=0 150 | [pcbnew/Layer.In22.Cu] 151 | Name=In22.Cu 152 | Type=0 153 | Enabled=0 154 | [pcbnew/Layer.In23.Cu] 155 | Name=In23.Cu 156 | Type=0 157 | Enabled=0 158 | [pcbnew/Layer.In24.Cu] 159 | Name=In24.Cu 160 | Type=0 161 | Enabled=0 162 | [pcbnew/Layer.In25.Cu] 163 | Name=In25.Cu 164 | Type=0 165 | Enabled=0 166 | [pcbnew/Layer.In26.Cu] 167 | Name=In26.Cu 168 | Type=0 169 | Enabled=0 170 | [pcbnew/Layer.In27.Cu] 171 | Name=In27.Cu 172 | Type=0 173 | Enabled=0 174 | [pcbnew/Layer.In28.Cu] 175 | Name=In28.Cu 176 | Type=0 177 | Enabled=0 178 | [pcbnew/Layer.In29.Cu] 179 | Name=In29.Cu 180 | Type=0 181 | Enabled=0 182 | [pcbnew/Layer.In30.Cu] 183 | Name=In30.Cu 184 | Type=0 185 | Enabled=0 186 | [pcbnew/Layer.B.Cu] 187 | Name=B.Cu 188 | Type=0 189 | Enabled=1 190 | [pcbnew/Layer.B.Adhes] 191 | Enabled=1 192 | [pcbnew/Layer.F.Adhes] 193 | Enabled=1 194 | [pcbnew/Layer.B.Paste] 195 | Enabled=1 196 | [pcbnew/Layer.F.Paste] 197 | Enabled=1 198 | [pcbnew/Layer.B.SilkS] 199 | Enabled=1 200 | [pcbnew/Layer.F.SilkS] 201 | Enabled=1 202 | [pcbnew/Layer.B.Mask] 203 | Enabled=1 204 | [pcbnew/Layer.F.Mask] 205 | Enabled=1 206 | [pcbnew/Layer.Dwgs.User] 207 | Enabled=1 208 | [pcbnew/Layer.Cmts.User] 209 | Enabled=1 210 | [pcbnew/Layer.Eco1.User] 211 | Enabled=1 212 | [pcbnew/Layer.Eco2.User] 213 | Enabled=1 214 | [pcbnew/Layer.Edge.Cuts] 215 | Enabled=1 216 | [pcbnew/Layer.Margin] 217 | Enabled=1 218 | [pcbnew/Layer.B.CrtYd] 219 | Enabled=1 220 | [pcbnew/Layer.F.CrtYd] 221 | Enabled=1 222 | [pcbnew/Layer.B.Fab] 223 | Enabled=1 224 | [pcbnew/Layer.F.Fab] 225 | Enabled=1 226 | [pcbnew/Layer.Rescue] 227 | Enabled=0 228 | [pcbnew/Netclasses] 229 | [pcbnew/Netclasses/Default] 230 | Name=Default 231 | Clearance=0.1524 232 | TrackWidth=0.1524 233 | ViaDiameter=0.6858 234 | ViaDrill=0.3302 235 | uViaDiameter=0.6858 236 | uViaDrill=0.3302 237 | dPairWidth=0.1524 238 | dPairGap=0.1524 239 | dPairViaGap=0.25 240 | [schematic_editor] 241 | version=1 242 | PageLayoutDescrFile= 243 | PlotDirectoryName= 244 | SubpartIdSeparator=0 245 | SubpartFirstId=65 246 | NetFmtName=Pcbnew 247 | SpiceAjustPassiveValues=0 248 | LabSize=50 249 | ERC_TestSimilarLabels=1 250 | -------------------------------------------------------------------------------- /Projects/S80-Library/S80-Library-cache.lib: -------------------------------------------------------------------------------- 1 | EESchema-LIBRARY Version 2.4 2 | #encoding utf-8 3 | # 4 | # MCU_Microchip_ATmega_ATmega328P-PU 5 | # 6 | DEF MCU_Microchip_ATmega_ATmega328P-PU U 0 20 Y Y 1 F N 7 | F0 "U" -500 1450 50 H V L BNN 8 | F1 "MCU_Microchip_ATmega_ATmega328P-PU" 100 -1450 50 H V L TNN 9 | F2 "Package_DIP:DIP-28_W7.62mm" 0 0 50 H I C CIN 10 | F3 "" 0 0 50 H I C CNN 11 | ALIAS ATmega48PA-PU ATmega88A-PU ATmega88PA-PU ATmega168A-PU ATmega168PA-PU ATmega328-PU ATmega328P-PU 12 | $FPLIST 13 | DIP*W7.62mm* 14 | $ENDFPLIST 15 | DRAW 16 | S -500 -1400 500 1400 0 1 10 f 17 | X ~RESET~/PC6 1 600 -300 100 L 50 50 1 1 T 18 | X XTAL2/PB7 10 600 500 100 L 50 50 1 1 T 19 | X PD5 11 600 -1000 100 L 50 50 1 1 T 20 | X PD6 12 600 -1100 100 L 50 50 1 1 T 21 | X PD7 13 600 -1200 100 L 50 50 1 1 T 22 | X PB0 14 600 1200 100 L 50 50 1 1 T 23 | X PB1 15 600 1100 100 L 50 50 1 1 T 24 | X PB2 16 600 1000 100 L 50 50 1 1 T 25 | X PB3 17 600 900 100 L 50 50 1 1 T 26 | X PB4 18 600 800 100 L 50 50 1 1 T 27 | X PB5 19 600 700 100 L 50 50 1 1 T 28 | X PD0 2 600 -500 100 L 50 50 1 1 T 29 | X AVCC 20 100 1500 100 D 50 50 1 1 W 30 | X AREF 21 -600 1200 100 R 50 50 1 1 P 31 | X GND 22 0 -1500 100 U 50 50 1 1 P N 32 | X PC0 23 600 300 100 L 50 50 1 1 T 33 | X PC1 24 600 200 100 L 50 50 1 1 T 34 | X PC2 25 600 100 100 L 50 50 1 1 T 35 | X PC3 26 600 0 100 L 50 50 1 1 T 36 | X PC4 27 600 -100 100 L 50 50 1 1 T 37 | X PC5 28 600 -200 100 L 50 50 1 1 T 38 | X PD1 3 600 -600 100 L 50 50 1 1 T 39 | X PD2 4 600 -700 100 L 50 50 1 1 T 40 | X PD3 5 600 -800 100 L 50 50 1 1 T 41 | X PD4 6 600 -900 100 L 50 50 1 1 T 42 | X VCC 7 0 1500 100 D 50 50 1 1 W 43 | X GND 8 0 -1500 100 U 50 50 1 1 W 44 | X XTAL1/PB6 9 600 600 100 L 50 50 1 1 T 45 | ENDDRAW 46 | ENDDEF 47 | # 48 | # S80_S80_Interface 49 | # 50 | DEF S80_S80_Interface I 0 40 Y Y 1 F N 51 | F0 "I" -900 1500 50 H V L CNN 52 | F1 "S80_S80_Interface" 900 1500 50 H V R CNN 53 | F2 "" -900 400 50 H I C CNN 54 | F3 "" -900 400 50 H I C CNN 55 | $FPLIST 56 | Interface* 57 | $ENDFPLIST 58 | DRAW 59 | T 0 -400 -1050 50 0 0 0 "USER PORT A" Normal 0 C C 60 | T 0 400 -1050 50 0 0 0 "USER PORT B" Normal 0 C C 61 | S -900 1450 900 -1350 0 1 0 N 62 | X GND 1 200 1600 150 D 50 50 1 1 P 63 | X A7 10 1050 650 150 L 50 50 1 1 P 64 | X A8 11 1050 550 150 L 50 50 1 1 P 65 | X A9 12 1050 450 150 L 50 50 1 1 P 66 | X A10 13 1050 350 150 L 50 50 1 1 P 67 | X A11 14 1050 250 150 L 50 50 1 1 P 68 | X A12 15 1050 150 150 L 50 50 1 1 P 69 | X A13 16 1050 50 150 L 50 50 1 1 P 70 | X A14 17 1050 -50 150 L 50 50 1 1 P 71 | X A15 18 1050 -150 150 L 50 50 1 1 P 72 | X D0 19 1050 -300 150 L 50 50 1 1 P 73 | X VCC 2 -200 1600 150 D 50 50 1 1 P 74 | X D1 20 1050 -400 150 L 50 50 1 1 P 75 | X D2 21 1050 -500 150 L 50 50 1 1 P 76 | X D3 22 1050 -600 150 L 50 50 1 1 P 77 | X D4 23 1050 -700 150 L 50 50 1 1 P 78 | X D5 24 1050 -800 150 L 50 50 1 1 P 79 | X D6 25 1050 -900 150 L 50 50 1 1 P 80 | X D7 26 1050 -1000 150 L 50 50 1 1 P 81 | X ~RESET~ 27 -1050 1350 150 R 50 50 1 1 P I 82 | X ~CLK~ 28 -1050 1200 150 R 50 50 1 1 P C 83 | X ~NMI~ 29 -1050 900 150 R 50 50 1 1 P I 84 | X A0 3 1050 1350 150 L 50 50 1 1 P 85 | X ~INT~ 30 -1050 800 150 R 50 50 1 1 P I 86 | X ~M1~ 31 -1050 500 150 R 50 50 1 1 P I 87 | X ~RFSH~ 32 -1050 400 150 R 50 50 1 1 P I 88 | X ~WAIT~ 33 -1050 300 150 R 50 50 1 1 P I 89 | X ~HALT~ 34 -1050 200 150 R 50 50 1 1 P I 90 | X ~RD~ 35 -1050 -200 150 R 50 50 1 1 P I 91 | X ~WR~ 36 -1050 -300 150 R 50 50 1 1 P I 92 | X ~MREQ~ 37 -1050 -400 150 R 50 50 1 1 P I 93 | X ~IORQ~ 38 -1050 -500 150 R 50 50 1 1 P I 94 | X ~BUSRQ~ 39 -1050 -800 150 R 50 50 1 1 P I 95 | X A1 4 1050 1250 150 L 50 50 1 1 P 96 | X ~BUSACK~ 40 -1050 -900 150 R 50 50 1 1 P I 97 | X UPA0 41 -800 -1500 150 U 50 50 1 1 P 98 | X UPA1 42 -700 -1500 150 U 50 50 1 1 P 99 | X UPA2 43 -600 -1500 150 U 50 50 1 1 P 100 | X UPA3 44 -500 -1500 150 U 50 50 1 1 P 101 | X UPA4 45 -400 -1500 150 U 50 50 1 1 P 102 | X UPA5 46 -300 -1500 150 U 50 50 1 1 P 103 | X UPA6 47 -200 -1500 150 U 50 50 1 1 P 104 | X UPA7 48 -100 -1500 150 U 50 50 1 1 P 105 | X UPB0 49 100 -1500 150 U 50 50 1 1 P 106 | X A2 5 1050 1150 150 L 50 50 1 1 P 107 | X UPB1 50 200 -1500 150 U 50 50 1 1 P 108 | X UPB2 51 300 -1500 150 U 50 50 1 1 P 109 | X UPB3 52 400 -1500 150 U 50 50 1 1 P 110 | X UPB4 53 500 -1500 150 U 50 50 1 1 P 111 | X UPB5 54 600 -1500 150 U 50 50 1 1 P 112 | X UPB6 55 700 -1500 150 U 50 50 1 1 P 113 | X UPB7 56 800 -1500 150 U 50 50 1 1 P 114 | X A3 6 1050 1050 150 L 50 50 1 1 P 115 | X A4 7 1050 950 150 L 50 50 1 1 P 116 | X A5 8 1050 850 150 L 50 50 1 1 P 117 | X A6 9 1050 750 150 L 50 50 1 1 P 118 | ENDDRAW 119 | ENDDEF 120 | # 121 | # power_GND 122 | # 123 | DEF power_GND #PWR 0 0 Y Y 1 F P 124 | F0 "#PWR" 0 -250 50 H I C CNN 125 | F1 "power_GND" 0 -150 50 H V C CNN 126 | F2 "" 0 0 50 H I C CNN 127 | F3 "" 0 0 50 H I C CNN 128 | DRAW 129 | P 6 0 1 0 0 0 0 -50 50 -50 0 -100 -50 -50 0 -50 N 130 | X GND 1 0 0 0 D 50 50 1 1 W N 131 | ENDDRAW 132 | ENDDEF 133 | # 134 | # power_VCC 135 | # 136 | DEF power_VCC #PWR 0 0 Y Y 1 F P 137 | F0 "#PWR" 0 -150 50 H I C CNN 138 | F1 "power_VCC" 0 150 50 H V C CNN 139 | F2 "" 0 0 50 H I C CNN 140 | F3 "" 0 0 50 H I C CNN 141 | DRAW 142 | C 0 75 25 0 1 0 N 143 | P 2 0 1 0 0 0 0 50 N 144 | X VCC 1 0 0 0 U 50 50 1 1 W N 145 | ENDDRAW 146 | ENDDEF 147 | # 148 | #End Library 149 | -------------------------------------------------------------------------------- /asm/vt102.z80: -------------------------------------------------------------------------------- 1 | #if !defined(_VT102_Z80) 2 | _VT102_Z80: 3 | 4 | ;Display attribute definitions 5 | ATT_RESET EQU "0" 6 | ATT_BRIGHT EQU "1" 7 | ATT_DIM EQU "2" 8 | ATT_UNDERSCORE EQU "3" 9 | ATT_BLINK EQU "4" 10 | ATT_REVERSE EQU "7" 11 | ATT_HIDDEN EQU "8" 12 | 13 | ;Color definitions 14 | COL_BLACK EQU "0" 15 | COL_RED EQU "1" 16 | COL_GREEN EQU "2" 17 | COL_YELLOW EQU "3" 18 | COL_BLUE EQU "4" 19 | COL_MAGENTA EQU "5" 20 | COL_CYAN EQU "6" 21 | COL_WHITE EQU "7" 22 | 23 | 24 | #data HEAP 25 | 26 | DISPLAY DS 13 ;The terminal display attribute 27 | DISPATT EQU DISPLAY+4 ;The display attribute 28 | FGCOLOR EQU DISPLAY+7 ;The foreground color attribute 29 | BGCOLOR EQU DISPLAY+10 ;The background color attribute 30 | DISPLAY_DIRTY DS 1 ;Variable telling if the DISPLAY changed 31 | ; without being applied. 32 | 33 | #code CODE 34 | DISPLAY_COMMAND DEFB 27,"[0;2;37;40m",0 35 | 36 | 37 | ;***************************************************************************** 38 | ; Initializes the VT102 variables. 39 | ; 40 | ; On exit: A=0, BC=0, HL and DE are changed. 41 | ;***************************************************************************** 42 | VT102_INIT: 43 | LD HL,DISPLAY_COMMAND ;Moves the display command in RAM 44 | LD DE,DISPLAY 45 | LD BC,13 46 | LDIR 47 | LD A,0 ;Loads 0 (false) into the 48 | LD (DISPLAY_DIRTY),A ;DISPLAY_DIRTY variable. 49 | 50 | ;***************************************************************************** 51 | ;Sets the display attribute to &ATT. 52 | ; 53 | ; &ATT: One of the following label values: ATT_RESET, ATT_BRIGHT, ATT_DIM, 54 | ; ATT_UNDERSCORE, ATT_BLINK, ATT_REVERSE or ATT_HIDDEN 55 | ; 56 | ; On exit: register A contains the &ATT value 57 | ;***************************************************************************** 58 | SET_DISPATT MACRO ATT 59 | LD A,1 60 | LD (DISPLAY_DIRTY),A 61 | LD A,&ATT 62 | LD (DISPATT),A 63 | ENDM 64 | 65 | ;***************************************************************************** 66 | ;Gets the display attribute value into register A. 67 | ; 68 | ; On exit: Register A contains the current display attribute value, either: 69 | ; ATT_RESET, ATT_BRIGHT, ATT_DIM, ATT_UNDERSCORE, ATT_BLINK, 70 | ; ATT_REVERSE or ATT_HIDDEN 71 | ;***************************************************************************** 72 | GET_DISPATT MACRO 73 | LD A,(DISPATT) 74 | ENDM 75 | 76 | ;***************************************************************************** 77 | ;Sets the foreground color to &COL. 78 | ; 79 | ; &COL: One of the following label values: COL_BLACK, COL_RED, COL_GREEN, 80 | ; COL_YELLOW, COL_BLUE, COL_MAGENTA, COL_CYAN, COL_WHITE 81 | ; 82 | ; On exit, register A contains the &COL value 83 | ;***************************************************************************** 84 | SET_FGCOLOR MACRO COL 85 | LD A,1 86 | LD (DISPLAY_DIRTY),A 87 | LD A,&COL 88 | LD (FGCOLOR),A 89 | ENDM 90 | 91 | ;***************************************************************************** 92 | ;Gets the foreground color value into register A. 93 | ; 94 | ; On exit: Register A contains the current color value: COL_BLACK, COL_RED, 95 | ; COL_GREEN, COL_YELLOW, COL_BLUE, COL_MAGENTA, COL_CYAN, COL_WHITE 96 | ;***************************************************************************** 97 | GET_FGCOLOR MACRO 98 | LD A,(FGCOLOR) 99 | ENDM 100 | 101 | 102 | ;***************************************************************************** 103 | ;Sets the background color to &COL. 104 | ; 105 | ; &COL: One of the following label values: COL_BLACK, COL_RED, COL_GREEN, 106 | ; COL_YELLOW, COL_BLUE, COL_MAGENTA, COL_CYAN, COL_WHITE 107 | ; 108 | ; On exit, register A contains the &COL value 109 | ;***************************************************************************** 110 | SET_BGCOLOR MACRO COL 111 | LD A,1 112 | LD (DISPLAY_DIRTY),A 113 | LD A,&COL 114 | LD (BGCOLOR),A 115 | ENDM 116 | 117 | ;***************************************************************************** 118 | ;Gets the background color value into register A. 119 | ; 120 | ; On exit: Register A contains the current color value: COL_BLACK, COL_RED, 121 | ; COL_GREEN, COL_YELLOW, COL_BLUE, COL_MAGENTA, COL_CYAN, COL_WHITE 122 | ;***************************************************************************** 123 | GET_BGCOLOR MACRO 124 | LD A,(BGCOLOR) 125 | ENDM 126 | 127 | 128 | ;***************************************************************************** 129 | ;Gets if the display attributes have been applied to the screen. 130 | ; 131 | ; On exit: Z flag is set if the display is dirty. 132 | ; A register contains the DISPLAY_DIRTY value (0 for not dirty, 133 | ; 1 if dirty). 134 | ;***************************************************************************** 135 | IS_DISPLAY_DIRTY MACRO 136 | LD A,(DISPLAY_DIRTY) 137 | CP 1 138 | ENDM 139 | 140 | 141 | #endif 142 | -------------------------------------------------------------------------------- /Libraries/SamacSys_Parts.lib: -------------------------------------------------------------------------------- 1 | EESchema-LIBRARY Version 2.4 2 | #encoding utf-8 3 | # 4 | # ADM803TAKSZ-REEL7 5 | # 6 | DEF ADM803TAKSZ-REEL7 IC 0 30 Y Y 1 F N 7 | F0 "IC" 700 300 50 H V L CNN 8 | F1 "ADM803TAKSZ-REEL7" 700 200 50 H V L CNN 9 | F2 "SOT96P237X112-3N" 700 100 50 H I L CNN 10 | F3 "https://www.mouser.ca/datasheet/2/609/ADM803_809_810-878720.pdf" 700 0 50 H I L CNN 11 | F4 "Analog Devices ADM803TAKSZ-REEL7, Voltage Supervisor, 1.2 5.5 V, 3-Pin SC-70" 700 -100 50 H I L CNN "Description" 12 | F5 "1.12" 700 -200 50 H I L CNN "Height" 13 | F6 "Analog Devices" 700 -300 50 H I L CNN "Manufacturer_Name" 14 | F7 "ADM803TAKSZ-REEL7" 700 -400 50 H I L CNN "Manufacturer_Part_Number" 15 | DRAW 16 | S 200 100 700 -200 0 1 0 N 17 | X GND 1 0 -100 200 R 50 50 0 0 W 18 | X ~RESET 2 900 0 200 L 50 50 0 0 B 19 | X VCC 3 0 0 200 R 50 50 0 0 W 20 | ENDDRAW 21 | ENDDEF 22 | # 23 | # AS6C62256-55PCN 24 | # 25 | DEF AS6C62256-55PCN IC 0 30 Y Y 1 F N 26 | F0 "IC" 850 300 50 H V L CNN 27 | F1 "AS6C62256-55PCN" 850 200 50 H V L CNN 28 | F2 "DIP1587W140P254L3632H381Q28N" 850 100 50 H I L CNN 29 | F3 "https://componentsearchengine.com/Datasheets/1/AS6C62256-55PCN.pdf" 850 0 50 H I L CNN 30 | F4 "Alliance Memory AS6C62256-55PCN SRAM Memory, 256kbit, 2.7 5.5 V, 55ns 28-Pin PDIP" 850 -100 50 H I L CNN "Description" 31 | F5 "3.81" 850 -200 50 H I L CNN "Height" 32 | F6 "913-AS6C62256-55PCN" 850 -300 50 H I L CNN "Mouser Part Number" 33 | F7 "Alliance Memory" 850 -400 50 H I L CNN "Manufacturer_Name" 34 | F8 "AS6C62256-55PCN" 850 -500 50 H I L CNN "Manufacturer_Part_Number" 35 | DRAW 36 | S 200 100 800 -1600 0 1 0 N 37 | X A14 1 0 -1400 200 R 50 50 0 0 I 38 | X A0 10 0 0 200 R 50 50 0 0 I 39 | X DQ0 11 1000 -300 200 L 50 50 0 0 B 40 | X DQ1 12 1000 -400 200 L 50 50 0 0 B 41 | X DQ2 13 1000 -500 200 L 50 50 0 0 B 42 | X GND 14 0 -1500 200 R 50 50 0 0 W 43 | X DQ3 15 1000 -600 200 L 50 50 0 0 B 44 | X DQ4 16 1000 -700 200 L 50 50 0 0 B 45 | X DQ5 17 1000 -800 200 L 50 50 0 0 B 46 | X DQ6 18 1000 -900 200 L 50 50 0 0 B 47 | X DQ7 19 1000 -1000 200 L 50 50 0 0 B 48 | X A12 2 0 -1200 200 R 50 50 0 0 I 49 | X ~CE 20 1000 -1500 200 L 50 50 0 0 I 50 | X A10 21 0 -1000 200 R 50 50 0 0 I 51 | X ~OE 22 1000 -1300 200 L 50 50 0 0 I 52 | X A11 23 0 -1100 200 R 50 50 0 0 I 53 | X A9 24 0 -900 200 R 50 50 0 0 I 54 | X A8 25 0 -800 200 R 50 50 0 0 I 55 | X A13 26 0 -1300 200 R 50 50 0 0 I 56 | X ~WE 27 1000 -1400 200 L 50 50 0 0 I 57 | X VCC 28 1000 0 200 L 50 50 0 0 W 58 | X A7 3 0 -700 200 R 50 50 0 0 I 59 | X A6 4 0 -600 200 R 50 50 0 0 I 60 | X A5 5 0 -500 200 R 50 50 0 0 I 61 | X A4 6 0 -400 200 R 50 50 0 0 I 62 | X A3 7 0 -300 200 R 50 50 0 0 I 63 | X A2 8 0 -200 200 R 50 50 0 0 I 64 | X A1 9 0 -100 200 R 50 50 0 0 I 65 | ENDDRAW 66 | ENDDEF 67 | # 68 | # AT28C256B-15PU 69 | # 70 | DEF AT28C256B-15PU IC 0 30 Y Y 1 F N 71 | F0 "IC" 950 300 50 H V L CNN 72 | F1 "AT28C256B-15PU" 950 200 50 H V L CNN 73 | F2 "" 950 100 50 H I L CNN 74 | F3 "https://componentsearchengine.com/Datasheets/1/AT28C256B-15PU.pdf" 950 0 50 H I L CNN 75 | F4 "AT28C256B-15PU, Parallel EEPROM Memory 256kbit, Parallel, 150ns 4.5 5.5 V, 28-Pin PDIP" 950 -100 50 H I L CNN "Description" 76 | F5 "4.826" 950 -200 50 H I L CNN "Height" 77 | F6 "556-AT28C256B15PU" 950 -300 50 H I L CNN "Mouser Part Number" 78 | F7 "Microchip" 950 -400 50 H I L CNN "Manufacturer_Name" 79 | F8 "AT28C256B-15PU" 950 -500 50 H I L CNN "Manufacturer_Part_Number" 80 | DRAW 81 | S 200 100 900 -1600 0 1 0 N 82 | X A14 1 0 -1400 200 R 50 50 0 0 I 83 | X A0 10 0 0 200 R 50 50 0 0 I 84 | X I/O0 11 1100 -300 200 L 50 50 0 0 B 85 | X I/O1 12 1100 -400 200 L 50 50 0 0 B 86 | X I/O2 13 1100 -500 200 L 50 50 0 0 B 87 | X GND 14 0 -1500 200 R 50 50 0 0 W 88 | X I/O3 15 1100 -600 200 L 50 50 0 0 B 89 | X I/O4 16 1100 -700 200 L 50 50 0 0 B 90 | X I/O5 17 1100 -800 200 L 50 50 0 0 B 91 | X I/O6 18 1100 -900 200 L 50 50 0 0 B 92 | X I/O7 19 1100 -1000 200 L 50 50 0 0 B 93 | X A12 2 0 -1200 200 R 50 50 0 0 I 94 | X ~CE 20 1100 -1500 200 L 50 50 0 0 I 95 | X A10 21 0 -1000 200 R 50 50 0 0 I 96 | X ~OE 22 1100 -1300 200 L 50 50 0 0 I 97 | X A11 23 0 -1100 200 R 50 50 0 0 I 98 | X A9 24 0 -900 200 R 50 50 0 0 I 99 | X A8 25 0 -800 200 R 50 50 0 0 I 100 | X A13 26 0 -1300 200 R 50 50 0 0 I 101 | X ~WE 27 1100 -1400 200 L 50 50 0 0 I 102 | X VCC 28 1100 0 200 L 50 50 0 0 W 103 | X A7 3 0 -700 200 R 50 50 0 0 I 104 | X A6 4 0 -600 200 R 50 50 0 0 I 105 | X A5 5 0 -500 200 R 50 50 0 0 I 106 | X A4 6 0 -400 200 R 50 50 0 0 I 107 | X A3 7 0 -300 200 R 50 50 0 0 I 108 | X A2 8 0 -200 200 R 50 50 0 0 I 109 | X A1 9 0 -100 200 R 50 50 0 0 I 110 | ENDDRAW 111 | ENDDEF 112 | # 113 | # NE555D 114 | # 115 | DEF NE555D IC 0 30 Y Y 1 F N 116 | F0 "IC" 550 150 50 H V C CNN 117 | F1 "NE555D" 550 -450 50 H V C CNN 118 | F2 "SOIC127P600X175-8N" 550 -550 50 H I C CNN 119 | F3 "http: //www.ti.com/lit/ds/symlink/ne555.pdf" 550 -650 50 H I C CNN 120 | F4 "NE555DG4, Timer, 4.5 To 16V, 8-Pin SOIC-8" 550 -750 50 H I C CNN "Description" 121 | F5 "Texas Instruments" 550 -850 50 H I C CNN "Manufacturer_Name" 122 | F6 "NE555D" 550 -950 50 H I C CNN "Manufacturer_Part_Number" 123 | F7 "RS" 550 -1050 50 H I C CNN "Supplier_Name" 124 | F8 "6624661P" 550 -1150 50 H I C CNN "RS Part Number" 125 | F9 "1.75" 550 -1250 50 H I C CNN "Height" 126 | DRAW 127 | S 200 100 900 -400 0 0 10 f 128 | X GND 1 0 0 200 R 50 50 0 0 W 129 | X TRIG 2 0 -100 200 R 50 50 0 0 U 130 | X OUT 3 0 -200 200 R 50 50 0 0 O 131 | X Reset 4 0 -300 200 R 50 50 0 0 U 132 | X CONT 5 1100 -300 200 L 50 50 0 0 U 133 | X THRES 6 1100 -200 200 L 50 50 0 0 U 134 | X DISCH 7 1100 -100 200 L 50 50 0 0 U 135 | X VCC 8 1100 0 200 L 50 50 0 0 W 136 | ENDDRAW 137 | ENDDEF 138 | # 139 | #End Library 140 | -------------------------------------------------------------------------------- /asm/sio-init.z80: -------------------------------------------------------------------------------- 1 | #code _INIT_SIO 2 | 3 | NULL EQU 0 4 | 5 | SIOA_C EQU $00 6 | SIOA_D EQU $01 7 | SIOB_C EQU $02 8 | SIOB_D EQU $03 9 | 10 | 11 | ORG $0000 12 | RESET: 13 | LD SP,$0000 ;sets the stack starting address to 65535 14 | CALL SIOA_RESET 15 | CALL INT_INIT 16 | JP MAIN 17 | 18 | INT_VECT: 19 | ORG $0C 20 | DEFW RX_CHA_AVAILABLE 21 | ORG $0E 22 | DEFW SPEC_RX_CONDITION 23 | 24 | 25 | SIOA_RESET: 26 | LD A,$00 ; write 0 27 | OUT (SIOA_C),A 28 | LD A,$18 ; reset ext/status interrupts 29 | OUT (SIOA_C),A 30 | 31 | LD A,$04 ; write 4 32 | OUT (SIOA_C),A 33 | LD A,$C4 ; X64, no parity, 1 stop 34 | OUT (SIOA_C),A 35 | 36 | LD A,$01 ; write 1 37 | OUT (SIOA_C),A 38 | LD A,$18 ; interrupt on all recv 39 | OUT (SIOA_C),A 40 | 41 | LD A,$03 ; write 3 42 | OUT (SIOA_C),A 43 | LD A,$E1 ; 8 bits, auto enable, rcv enab 44 | OUT (SIOA_C),A 45 | 46 | LD A,$05 ; write 5 47 | OUT (SIOA_C),A 48 | LD A,$EA ; dtr enable, 8 bits, tx enable, rts 49 | OUT (SIOA_C),A 50 | 51 | LD A,$00 52 | OUT (SIOB_C),A 53 | LD A,$18 54 | OUT (SIOB_C),A 55 | 56 | LD A,$04 ; write 4 57 | OUT (SIOB_C),A 58 | LD A,$44 ; X16, no parity, 1 stop 59 | OUT (SIOB_C),A 60 | 61 | LD A,$01 62 | OUT (SIOB_C),A 63 | LD A,$18 64 | OUT (SIOB_C),A 65 | 66 | LD A,$02 ; write reg 2 67 | OUT (SIOB_C),A 68 | LD A,$0C ; INTERRUPT VECTOR ADDRESS 69 | OUT (SIOB_C),A 70 | 71 | LD A,$03 72 | OUT (SIOB_C),A 73 | LD A,$E1 74 | OUT (SIOB_C),A 75 | 76 | LD A,$05 77 | OUT (SIOB_C),A 78 | LD A,$EA 79 | OUT (SIOB_C),A 80 | 81 | 82 | ; ***** SIOA ENABLE INTERRUPTS ***** 83 | SIOA_EI: 84 | LD A, $03 ;write into WR0: select WR3 85 | OUT (SIOA_C),A 86 | LD A,$C1 ;RX 8bits, auto enable off, RX on 87 | OUT (SIOA_C),A 88 | RET 89 | 90 | 91 | ; ***** SIOA DISABLE INTERRUPTS ***** 92 | SIOA_DI: 93 | LD A,$03 ;write into WR0: select WR3 94 | OUT (SIOA_C),A 95 | LD A,$C0 ;RX 8bit, auto enable off, RX off 96 | OUT (SIOA_C),A 97 | RET 98 | 99 | 100 | INT_INIT: 101 | LD A,0 102 | LD I,A ;load I reg with zero 103 | IM 2 ;interrupt mode 2 104 | EI ;enable interrupts 105 | RET 106 | 107 | 108 | A_RTS_OFF: 109 | LD A,$05 ;write into WR0: select WR5 110 | OUT (SIOA_C),A 111 | LD A,$E8 ;DTR active, TX 8bit, BREAK off, TX on, RTS off 112 | OUT (SIOA_C),A 113 | RET 114 | 115 | 116 | A_RTS_ON: 117 | LD A,$05 ;write into WR0: select WR5 118 | OUT (SIOA_C),A 119 | LD A,$EA ;DTR active, TX 8bit, BREAK off, TX on, RTS on 120 | OUT (SIOA_C),A 121 | RET 122 | 123 | 124 | RX_CHA_AVAILABLE: 125 | PUSH AF ;backup AF 126 | EXX 127 | WAIT_RX: 128 | SUB A ;Clears A 129 | OUT (SIOA_C),A ;Select RR0 130 | IN A,(SIOA_C) ;Read RR0 131 | BIT 0,A ;Check if character is available 132 | JR Z,WAIT_RX ;Character not recieved yet, check again 133 | 134 | IN A,(SIOA_D) 135 | ; A holds recieved character 136 | 137 | ; do something with the character 138 | CALL KEY_PRESSED 139 | 140 | EXX 141 | POP AF 142 | EI 143 | RETI 144 | 145 | 146 | SPEC_RX_CONDITION: 147 | JP RESET 148 | 149 | 150 | ; *************************************************************************** 151 | ; Sends the content of register A to SIOA_D. 152 | ; *************************************************************************** 153 | PUTCHAR: 154 | PUSH AF ; Store character 155 | conout1: 156 | SUB A ; Wait for previous transmission to end 157 | OUT (SIOA_C),A 158 | IN A,(SIOA_C) 159 | BIT 2,A ; Set Zero flag if transmitting a character 160 | JR Z,conout1 ; Loop if still transmitting character 161 | BIT 3,A ; Set zero flag if no data carrier is detected 162 | JR Z,conout1 ; Loop if no carrier detected. 163 | BIT 5,A ; Set zero flag if not clear to send 164 | JR Z,conout1 ; Loop if not clear to send. 165 | POP AF ; Retrieve character 166 | OUT (SIOA_D),A ; Output the character 167 | RET 168 | 169 | 170 | ; *************************************************************************** 171 | ; Prints the NULL terminated string pointed by HL to SIOA_D. 172 | ; When this function returns, no register is modified. 173 | ; *************************************************************************** 174 | PRINT: 175 | PUSH AF 176 | PUSH HL 177 | 178 | PRINT_NEXT_CHAR: 179 | LD A,(HL) ;Reads the next character 180 | OR A ;Check if that character is null. 181 | JR Z,PRINT_EXIT ;If the null char is reached, exit. 182 | CALL PUTCHAR ;Print the character and 183 | INC HL ;move to the next char. 184 | JR PRINT_NEXT_CHAR ;Print the next char 185 | 186 | PRINT_EXIT: 187 | POP HL 188 | POP AF 189 | RET 190 | -------------------------------------------------------------------------------- /Libraries/Z84C40-SIO2.lib: -------------------------------------------------------------------------------- 1 | EESchema-LIBRARY Version 2.3 2 | #encoding utf-8 3 | # 4 | # Z80CPU 5 | # 6 | DEF Z80CPU U 0 40 Y Y 1 F N 7 | F0 "U" -550 1400 50 H V L CNN 8 | F1 "Z80CPU" 250 1400 50 H V L CNN 9 | F2 "" 0 400 50 H I C CNN 10 | F3 "" 0 400 50 H I C CNN 11 | $FPLIST 12 | DIP* 13 | PDIP* 14 | $ENDFPLIST 15 | DRAW 16 | S -550 1350 550 -1350 0 1 10 f 17 | X A11 1 700 100 150 L 50 50 1 1 O 18 | X A12 2 700 0 150 L 50 50 1 1 O 19 | X A13 3 700 -100 150 L 50 50 1 1 O 20 | X A14 4 700 -200 150 L 50 50 1 1 O 21 | X A15 5 700 -300 150 L 50 50 1 1 O 22 | X ~CLK~ 6 -700 900 150 R 50 50 1 1 I C 23 | X D4 7 700 -900 150 L 50 50 1 1 B 24 | X D3 8 700 -800 150 L 50 50 1 1 B 25 | X D5 9 700 -1000 150 L 50 50 1 1 B 26 | X D6 10 700 -1100 150 L 50 50 1 1 B 27 | X ~IORQ~ 20 -700 -800 150 R 50 50 1 1 O I 28 | X A0 30 700 1200 150 L 50 50 1 1 O 29 | X A10 40 700 200 150 L 50 50 1 1 O 30 | X VCC 11 0 1500 150 D 50 50 1 1 W 31 | X ~RD~ 21 -700 -500 150 R 50 50 1 1 O I 32 | X A1 31 700 1100 150 L 50 50 1 1 O 33 | X D2 12 700 -700 150 L 50 50 1 1 B 34 | X ~WR~ 22 -700 -600 150 R 50 50 1 1 O I 35 | X A2 32 700 1000 150 L 50 50 1 1 O 36 | X D7 13 700 -1200 150 L 50 50 1 1 B 37 | X ~BUSACK~ 23 -700 -1200 150 R 50 50 1 1 O I 38 | X A3 33 700 900 150 L 50 50 1 1 O 39 | X D0 14 700 -500 150 L 50 50 1 1 B 40 | X ~WAIT~ 24 -700 0 150 R 50 50 1 1 I I 41 | X A4 34 700 800 150 L 50 50 1 1 O 42 | X D1 15 700 -600 150 L 50 50 1 1 B 43 | X ~BUSRQ~ 25 -700 -1100 150 R 50 50 1 1 I I 44 | X A5 35 700 700 150 L 50 50 1 1 O 45 | X ~INT~ 16 -700 500 150 R 50 50 1 1 I I 46 | X ~RESET~ 26 -700 1200 150 R 50 50 1 1 I I 47 | X A6 36 700 600 150 L 50 50 1 1 O 48 | X ~NMI~ 17 -700 600 150 R 50 50 1 1 I I 49 | X ~M1~ 27 -700 200 150 R 50 50 1 1 O I 50 | X A7 37 700 500 150 L 50 50 1 1 O 51 | X ~HALT~ 18 -700 -100 150 R 50 50 1 1 O I 52 | X ~RFSH~ 28 -700 100 150 R 50 50 1 1 O I 53 | X A8 38 700 400 150 L 50 50 1 1 O 54 | X ~MREQ~ 19 -700 -700 150 R 50 50 1 1 O I 55 | X GND 29 0 -1500 150 U 50 50 1 1 W 56 | X A9 39 700 300 150 L 50 50 1 1 O 57 | ENDDRAW 58 | ENDDEF 59 | # 60 | # Z84C40 61 | # 62 | DEF Z84C40 U 0 40 Y Y 1 F N 63 | F0 "U" -650 1400 50 H V L CNN 64 | F1 "Z84C40" 350 1400 50 H V L CNN 65 | F2 "" 0 0 50 H I C CNN 66 | F3 "" 0 0 50 H I C CNN 67 | $FPLIST 68 | DIP* 69 | PDIP* 70 | $ENDFPLIST 71 | DRAW 72 | T 0 0 0 60 0 0 0 Z80~SIO/2 Normal 0 C C 73 | X VCC 9 0 1250 150 D 50 50 0 0 W N 74 | X GND 31 0 -1200 150 U 50 50 0 0 W N 75 | S -650 -1350 650 1350 0 1 10 f 76 | X D1 1 -800 1150 150 R 50 50 1 1 I 77 | X D3 2 -800 950 150 R 50 50 1 1 I 78 | X D5 3 -800 750 150 R 50 50 1 1 I 79 | X D7 4 -800 550 150 R 50 50 1 1 I 80 | X ~INT 5 -800 -1050 150 R 50 50 1 1 C I 81 | X IEI 6 -800 -1150 150 R 50 50 1 1 I 82 | X IEO 7 -800 -1250 150 R 50 50 1 1 O 83 | X ~M1 8 -800 50 150 R 50 50 1 1 I I 84 | X ~W~/~RDYA~ 10 800 650 150 L 50 50 1 1 E I 85 | X CLK 20 -800 -800 150 R 50 50 1 1 I C 86 | X ~W~/~RDYB 30 800 -650 150 L 50 50 1 1 E I 87 | X D0 40 -800 1250 150 R 50 50 1 1 I 88 | X ~SYNCA~ 11 800 750 150 L 50 50 1 1 B I 89 | X ~RESET 21 -800 150 150 R 50 50 1 1 I I 90 | X RxDA 12 800 1150 150 L 50 50 1 1 I 91 | X ~DCDB 22 800 -1150 150 L 50 50 1 1 I I 92 | X ~RD 32 -800 -150 150 R 50 50 1 1 I I 93 | X ~RxCA 13 800 1050 150 L 50 50 1 1 I IC 94 | X ~CTSB 23 800 -950 150 L 50 50 1 1 I I 95 | X C/~D 33 -800 -450 150 R 50 50 1 1 I 96 | X ~TxCA 14 800 850 150 L 50 50 1 1 I IC 97 | X ~RTSB 24 800 -850 150 L 50 50 1 1 O I 98 | X B/~A 34 -800 -550 150 R 50 50 1 1 I 99 | X TxDA 15 800 950 150 L 50 50 1 1 O 100 | X ~DTRB 25 800 -1050 150 L 50 50 1 1 O I 101 | X ~CE 35 -800 250 150 R 50 50 1 1 I I 102 | X ~DTRA 16 800 250 150 L 50 50 1 1 O I 103 | X TxDB 26 800 -450 150 L 50 50 1 1 O 104 | X ~IORQ 36 -800 -50 150 R 50 50 1 1 I I 105 | X ~RTSA 17 800 450 150 L 50 50 1 1 O I 106 | X ~TxCB 27 800 -550 150 L 50 50 1 1 I IC 107 | X D6 37 -800 650 150 R 50 50 1 1 I 108 | X ~CTSA 18 800 350 150 L 50 50 1 1 I I 109 | X ~RxCB 28 800 -350 150 L 50 50 1 1 I IC 110 | X D4 38 -800 850 150 R 50 50 1 1 I 111 | X ~DCDA 19 800 150 150 L 50 50 1 1 I I 112 | X RxDB 29 800 -250 150 L 50 50 1 1 I 113 | X D2 39 -800 1050 150 R 50 50 1 1 I 114 | ENDDRAW 115 | ENDDEF 116 | # 117 | # Z8530 118 | # 119 | DEF Z8530 U 0 40 Y Y 1 F N 120 | F0 "U" -650 1400 50 H V L CNN 121 | F1 "Z8530" 400 1400 50 H V L CNN 122 | F2 "" 0 0 50 H I C CNN 123 | F3 "" 0 0 50 H I C CNN 124 | $FPLIST 125 | DIP* 126 | PDIP* 127 | $ENDFPLIST 128 | DRAW 129 | S -650 -1350 650 1350 0 1 10 f 130 | X D1 1 -800 1100 150 R 50 50 1 1 I 131 | X D3 2 -800 900 150 R 50 50 1 1 I 132 | X D5 3 -800 700 150 R 50 50 1 1 I 133 | X D7 4 -800 500 150 R 50 50 1 1 I 134 | X ~INT 5 -800 -500 150 R 50 50 1 1 C I 135 | X IEO 6 -800 -600 150 R 50 50 1 1 O 136 | X IEI 7 -800 -700 150 R 50 50 1 1 I 137 | X ~INTACK 8 -800 -800 150 R 50 50 1 1 I I 138 | X VCC 9 0 1500 150 D 50 50 1 1 W 139 | X ~W/REQA~ 10 800 600 150 L 50 50 1 1 O I 140 | X PCLK 20 -800 -1200 150 R 50 50 1 1 I C 141 | X ~W/REQB 30 800 -800 150 L 50 50 1 1 O I 142 | X D0 40 -800 1200 150 R 50 50 1 1 I 143 | X ~SYNCA~ 11 800 700 150 L 50 50 1 1 B I 144 | X ~DCDB 21 800 -1200 150 L 50 50 1 1 I I 145 | X GND 31 0 -1500 150 U 50 50 1 1 W 146 | X ~RTXCA 12 800 900 150 L 50 50 1 1 I I 147 | X ~CTSB 22 800 -1100 150 L 50 50 1 1 I I 148 | X D/~C~ 32 -800 -200 150 R 50 50 1 1 I 149 | X RXDA 13 800 1100 150 L 50 50 1 1 I 150 | X ~RTSB 23 800 -1000 150 L 50 50 1 1 O I 151 | X ~CE 33 -800 0 150 R 50 50 1 1 I I 152 | X ~TRXCA 14 800 1000 150 L 50 50 1 1 B I 153 | X ~DTR/REQB 24 800 -900 150 L 50 50 1 1 O I 154 | X A/~B~ 34 -800 -100 150 R 50 50 1 1 I 155 | X TXDA 15 800 1200 150 L 50 50 1 1 O 156 | X TXDB 25 800 -200 150 L 50 50 1 1 O 157 | X ~WR 35 -800 200 150 R 50 50 1 1 I I 158 | X ~DTR/REQA 16 800 500 150 L 50 50 1 1 O I 159 | X ~TRXCB 26 800 -400 150 L 50 50 1 1 B I 160 | X ~RD 36 -800 300 150 R 50 50 1 1 I I 161 | X ~RTSA 17 800 400 150 L 50 50 1 1 O I 162 | X RXDB 27 800 -300 150 L 50 50 1 1 I 163 | X D6 37 -800 600 150 R 50 50 1 1 I 164 | X ~CTSA 18 800 300 150 L 50 50 1 1 I I 165 | X ~RTXCB 28 800 -500 150 L 50 50 1 1 I I 166 | X D4 38 -800 800 150 R 50 50 1 1 I 167 | X ~DCDA 19 800 200 150 L 50 50 1 1 I I 168 | X ~SYNCB 29 800 -700 150 L 50 50 1 1 B I 169 | X D2 39 -800 1000 150 R 50 50 1 1 I 170 | ENDDRAW 171 | ENDDEF 172 | # 173 | #End Library 174 | -------------------------------------------------------------------------------- /Projects/RetroZ-disk/RetroZ-disk-rescue.lib: -------------------------------------------------------------------------------- 1 | EESchema-LIBRARY Version 2.4 2 | #encoding utf-8 3 | # 4 | # ATMEGA328P-PU-atmel 5 | # 6 | DEF ATMEGA328P-PU-atmel U 0 40 Y Y 1 F N 7 | F0 "U" -750 1250 50 H V L BNN 8 | F1 "ATMEGA328P-PU-atmel" 400 -1400 50 H V L BNN 9 | F2 "DIL28" 0 0 50 H I C CIN 10 | F3 "" 0 0 50 H I C CNN 11 | $FPLIST 12 | 28DIP-ELL600 13 | 28dip600 14 | $ENDFPLIST 15 | DRAW 16 | S -750 1200 850 -1300 0 1 10 f 17 | X (PCINT14/~RESET~)PC6 1 -900 1100 150 R 40 40 1 1 B 18 | X (PCINT7/XTAL2/TOSC2)PB7 10 -900 -700 150 R 40 40 1 1 B 19 | X (PCINT21/OC0B/T1)PD5 11 1000 -1000 150 L 40 40 1 1 B 20 | X (PCINT22/OC0A/AIN0)PD6 12 1000 -1100 150 L 40 40 1 1 B 21 | X (PCINT23/AIN1)PD7 13 1000 -1200 150 L 40 40 1 1 B 22 | X (PCINT0/CLKO/ICP1)PB0 14 1000 1100 150 L 40 40 1 1 B 23 | X (PCINT1/OC1A)PB1 15 1000 1000 150 L 40 40 1 1 B 24 | X (PCINT2/OC1B/~SS~)PB2 16 1000 900 150 L 40 40 1 1 B 25 | X (PCINT3/OC2A/MOSI)PB3 17 1000 800 150 L 40 40 1 1 B 26 | X (PCINT4/MISO)PB4 18 1000 700 150 L 40 40 1 1 B 27 | X (PCINT5/SCK)PB5 19 1000 600 150 L 40 40 1 1 B 28 | X (PCINT16/RXD)PD0 2 1000 -500 150 L 40 40 1 1 B 29 | X AVCC 20 -900 500 150 R 40 40 1 1 W 30 | X AREF 21 -900 400 150 R 40 40 1 1 B 31 | X GND 22 -900 -1100 150 R 40 40 1 1 W 32 | X (PCINT8/ADC0)PC0 23 1000 250 150 L 40 40 1 1 B 33 | X (PCINT9/ADC1)PC1 24 1000 150 150 L 40 40 1 1 B 34 | X (PCINT10/ADC2)PC2 25 1000 50 150 L 40 40 1 1 B 35 | X (PCINT11/ADC3)PC3 26 1000 -50 150 L 40 40 1 1 B 36 | X (PCINT12/SDA/ADC4)PC4 27 1000 -150 150 L 40 40 1 1 B 37 | X (PCINT13/SCL/ADC5)PC5 28 1000 -250 150 L 40 40 1 1 B 38 | X (PCINT17/TXD)PD1 3 1000 -600 150 L 40 40 1 1 B 39 | X (PCINT18/INT0)PD2 4 1000 -700 150 L 40 40 1 1 B 40 | X (PCINT19/OC2B/INT1)PD3 5 1000 -800 150 L 40 40 1 1 B 41 | X (PCINT20/XCK/T0)PD4 6 1000 -900 150 L 40 40 1 1 B 42 | X VCC 7 -900 600 150 R 40 40 1 1 W 43 | X GND 8 -900 -1200 150 R 40 40 1 1 W 44 | X (PCINT6/XTAL1/TOSC1)PB6 9 -900 -400 150 R 40 40 1 1 B 45 | ENDDRAW 46 | ENDDEF 47 | # 48 | # CD74HC4050M-SamacSys_Parts 49 | # 50 | DEF CD74HC4050M-SamacSys_Parts IC 0 30 Y Y 1 F N 51 | F0 "IC" 950 300 50 H V L CNN 52 | F1 "CD74HC4050M-SamacSys_Parts" 950 200 50 H V L CNN 53 | F2 "SOIC127P600X175-16N" 950 100 50 H I L CNN 54 | F3 "http://www.ti.com/lit/ds/symlink/cd74hc4050.pdf" 950 0 50 H I L CNN 55 | F4 "CD74HC4050MG4, Hex Buffer, Converter, HC, Non-Inverting 2 to 6V 16-Pin SOIC" 950 -100 50 H I L CNN "Description" 56 | F5 "1.75" 950 -200 50 H I L CNN "Height" 57 | F6 "Texas Instruments" 950 -300 50 H I L CNN "Manufacturer_Name" 58 | F7 "CD74HC4050M" 950 -400 50 H I L CNN "Manufacturer_Part_Number" 59 | F8 "595-CD74HC4050M" 950 -500 50 H I L CNN "Mouser Part Number" 60 | F9 "https://www.mouser.com/Search/Refine.aspx?Keyword=595-CD74HC4050M" 950 -600 50 H I L CNN "Mouser Price/Stock" 61 | F10 "0527760" 950 -700 50 H I L CNN "RS Part Number" 62 | F11 "http://uk.rs-online.com/web/p/products/0527760" 950 -800 50 H I L CNN "RS Price/Stock" 63 | DRAW 64 | P 5 0 1 6 200 100 900 100 900 -800 200 -800 200 100 N 65 | X VDD 1 0 0 200 R 50 50 0 0 W 66 | X 4Y 10 1100 -400 200 L 50 50 0 0 O 67 | X 5A 11 0 -500 200 R 50 50 0 0 I 68 | X 5Y 12 1100 -500 200 L 50 50 0 0 O 69 | X NC 13 1100 -700 200 L 50 50 0 0 N 70 | X 6A 14 0 -600 200 R 50 50 0 0 I 71 | X 6Y 15 1100 -600 200 L 50 50 0 0 O 72 | X NC_1 16 1100 0 200 L 50 50 0 0 N 73 | X 1Y 2 1100 -100 200 L 50 50 0 0 O 74 | X 1A 3 0 -100 200 R 50 50 0 0 I 75 | X 2Y 4 1100 -200 200 L 50 50 0 0 O 76 | X 2A 5 0 -200 200 R 50 50 0 0 I 77 | X 3Y 6 1100 -300 200 L 50 50 0 0 O 78 | X 3A 7 0 -300 200 R 50 50 0 0 I 79 | X GND 8 0 -700 200 R 50 50 0 0 W 80 | X 4A 9 0 -400 200 R 50 50 0 0 I 81 | ENDDRAW 82 | ENDDEF 83 | # 84 | # S80_Interface-S80 85 | # 86 | DEF S80_Interface-S80 I 0 40 Y Y 1 F N 87 | F0 "I" -900 1500 50 H V L CNN 88 | F1 "S80_Interface-S80" 900 1500 50 H V R CNN 89 | F2 "" -900 400 50 H I C CNN 90 | F3 "" -900 400 50 H I C CNN 91 | $FPLIST 92 | Interface* 93 | $ENDFPLIST 94 | DRAW 95 | T 0 -400 -1050 50 0 0 0 "USER PORT A" Normal 0 C C 96 | T 0 400 -1050 50 0 0 0 "USER PORT B" Normal 0 C C 97 | S -900 1450 900 -1350 0 1 0 N 98 | X GND 1 200 1600 150 D 50 50 1 1 P 99 | X A7 10 1050 650 150 L 50 50 1 1 P 100 | X A8 11 1050 550 150 L 50 50 1 1 P 101 | X A9 12 1050 450 150 L 50 50 1 1 P 102 | X A10 13 1050 350 150 L 50 50 1 1 P 103 | X A11 14 1050 250 150 L 50 50 1 1 P 104 | X A12 15 1050 150 150 L 50 50 1 1 P 105 | X A13 16 1050 50 150 L 50 50 1 1 P 106 | X A14 17 1050 -50 150 L 50 50 1 1 P 107 | X A15 18 1050 -150 150 L 50 50 1 1 P 108 | X D0 19 1050 -300 150 L 50 50 1 1 P 109 | X VCC 2 -200 1600 150 D 50 50 1 1 P 110 | X D1 20 1050 -400 150 L 50 50 1 1 P 111 | X D2 21 1050 -500 150 L 50 50 1 1 P 112 | X D3 22 1050 -600 150 L 50 50 1 1 P 113 | X D4 23 1050 -700 150 L 50 50 1 1 P 114 | X D5 24 1050 -800 150 L 50 50 1 1 P 115 | X D6 25 1050 -900 150 L 50 50 1 1 P 116 | X D7 26 1050 -1000 150 L 50 50 1 1 P 117 | X ~RESET~ 27 -1050 1350 150 R 50 50 1 1 P I 118 | X ~CLK~ 28 -1050 1200 150 R 50 50 1 1 P C 119 | X ~NMI~ 29 -1050 900 150 R 50 50 1 1 P I 120 | X A0 3 1050 1350 150 L 50 50 1 1 P 121 | X ~INT~ 30 -1050 800 150 R 50 50 1 1 P I 122 | X ~M1~ 31 -1050 500 150 R 50 50 1 1 P I 123 | X ~RFSH~ 32 -1050 400 150 R 50 50 1 1 P I 124 | X ~WAIT~ 33 -1050 300 150 R 50 50 1 1 P I 125 | X ~HALT~ 34 -1050 200 150 R 50 50 1 1 P I 126 | X ~RD~ 35 -1050 -200 150 R 50 50 1 1 P I 127 | X ~WR~ 36 -1050 -300 150 R 50 50 1 1 P I 128 | X ~MREQ~ 37 -1050 -400 150 R 50 50 1 1 P I 129 | X ~IORQ~ 38 -1050 -500 150 R 50 50 1 1 P I 130 | X ~BUSRQ~ 39 -1050 -800 150 R 50 50 1 1 P I 131 | X A1 4 1050 1250 150 L 50 50 1 1 P 132 | X ~BUSACK~ 40 -1050 -900 150 R 50 50 1 1 P I 133 | X MEXT 41 -800 -1500 150 U 50 50 1 1 P 134 | X RxB 42 -700 -1500 150 U 50 50 1 1 P 135 | X TxB 43 -600 -1500 150 U 50 50 1 1 P 136 | X INT0 44 -500 -1500 150 U 50 50 1 1 P 137 | X INT1 45 -400 -1500 150 U 50 50 1 1 P 138 | X INT2 46 -300 -1500 150 U 50 50 1 1 P 139 | X INT3 47 -200 -1500 150 U 50 50 1 1 P 140 | X INT4 48 -100 -1500 150 U 50 50 1 1 P 141 | X UPB0 49 100 -1500 150 U 50 50 1 1 P 142 | X A2 5 1050 1150 150 L 50 50 1 1 P 143 | X UPB1 50 200 -1500 150 U 50 50 1 1 P 144 | X UPB2 51 300 -1500 150 U 50 50 1 1 P 145 | X UPB3 52 400 -1500 150 U 50 50 1 1 P 146 | X UPB4 53 500 -1500 150 U 50 50 1 1 P 147 | X UPB5 54 600 -1500 150 U 50 50 1 1 P 148 | X UPB6 55 700 -1500 150 U 50 50 1 1 P 149 | X UPB7 56 800 -1500 150 U 50 50 1 1 P 150 | X A3 6 1050 1050 150 L 50 50 1 1 P 151 | X A4 7 1050 950 150 L 50 50 1 1 P 152 | X A5 8 1050 850 150 L 50 50 1 1 P 153 | X A6 9 1050 750 150 L 50 50 1 1 P 154 | ENDDRAW 155 | ENDDEF 156 | # 157 | #End Library 158 | -------------------------------------------------------------------------------- /asm/sinusoid2.z80: -------------------------------------------------------------------------------- 1 | #target rom 2 | 3 | #code _INIT_SIO 4 | 5 | NULL EQU 0 6 | 7 | SIOA_C EQU $00 8 | SIOA_D EQU $01 9 | SIOB_C EQU $02 10 | SIOB_D EQU $03 11 | 12 | 13 | ORG $0000 14 | RESET: 15 | LD SP,$FFFF ;sets the stack starting address to 65535 16 | JP MAIN 17 | 18 | INT_VECT: 19 | ORG $0C 20 | DEFW RX_CHA_AVAILABLE 21 | ORG $0E 22 | DEFW SPEC_RX_CONDITION 23 | 24 | 25 | SIOA_RESET: 26 | LD A,00110000b ;write into WR0: error reset; select WR0 27 | OUT (SIOA_C),A 28 | 29 | LD A,00011000b ;write into WR0: channel reset 30 | OUT (SIOA_C),A 31 | 32 | LD A,$04 ;write into WR0: select WR4 33 | OUT (SIOA_C),A 34 | LD A,$C4 ;write into WR4: x64, 1 stop bit 35 | OUT (SIOA_C),A 36 | 37 | LD A,$05 ;write into WR0: select WR5 38 | OUT (SIOA_C),A 39 | LD A,$E8 ;DTR, TX 8bits, BREAK off, TX on, RTS off 40 | OUT (SIOA_C),A 41 | 42 | LD A,$02 ;write into WRO: select WR2 43 | OUT (SIOA_C),A 44 | LD A,$0C ;write WR2: cmd line int vect (see int vect tbl) 45 | OUT (SIOA_C),A 46 | 47 | LD A,$01 ;write WR0: select WR1 48 | OUT (SIOA_C),A 49 | LD A,00011000b ;interrupt on all RX char, parity not spec cond 50 | OUT (SIOA_C),A ;buffer overrun is a spec RX cond 51 | 52 | 53 | ; ***** SIOA ENABLE INTERRUPTS ***** 54 | SIOA_EI: 55 | LD A, $03 ;write into WR0: select WR3 56 | OUT (SIOA_C),A 57 | LD A,$C1 ;RX 8bits, auto enable off, RX on 58 | OUT (SIOA_C),A 59 | RET 60 | 61 | 62 | ; ***** SIOA DISABLE INTERRUPTS ***** 63 | SIOA_DI: 64 | LD A,$03 ;write into WR0: select WR3 65 | OUT (SIOA_C),A 66 | LD A,$C0 ;RX 8bit, auto enable off, RX off 67 | OUT (SIOA_C),A 68 | RET 69 | 70 | 71 | INT_INIT: 72 | LD A,0 73 | LD I,A ;load I reg with zero 74 | IM 2 ;interrupt mode 2 75 | EI ;enable interrupts 76 | RET 77 | 78 | 79 | A_RTS_OFF: 80 | LD A,$05 ;write into WR0: select WR5 81 | OUT (SIOA_C),A 82 | LD A,$E8 ;DTR active, TX 8bit, BREAK off, TX on, RTS off 83 | OUT (SIOA_C),A 84 | RET 85 | 86 | 87 | A_RTS_ON: 88 | LD A,$05 ;write into WR0: select WR5 89 | OUT (SIOA_C),A 90 | LD A,$EA ;DTR active, TX 8bit, BREAK off, TX on, RTS on 91 | OUT (SIOA_C),A 92 | RET 93 | 94 | ; Sends a character to the data port A and waits the end of the transmission. 95 | ; after a call to PRINTC or WAIT_TX, the content of the A register is lost. 96 | PRINTC: 97 | OUT (SIOA_D),A 98 | WAIT_TX: 99 | SUB A ;clear a 100 | INC A ;select RR1 101 | OUT (SIOA_C),A 102 | IN A,(SIOA_C) ;read RR1 103 | BIT 0,A ;check if bit 'all sent' is set 104 | JP Z,WAIT_TX ;bit not set, check again 105 | RET ;bit set, return 106 | 107 | 108 | RX_CHA_AVAILABLE: 109 | PUSH AF ;backup AF 110 | EXX 111 | CALL A_RTS_OFF 112 | IN A,(SIOA_D) 113 | 114 | ; A holds recieved character 115 | 116 | ; do something with the character 117 | CALL KEY_PRESSED 118 | 119 | ;OUT (SIOA_D),A ;echo character to host 120 | ;CALL WAIT_TX 121 | EI 122 | CALL A_RTS_ON 123 | EXX 124 | POP AF 125 | RETI 126 | 127 | 128 | SPEC_RX_CONDITION: 129 | JP RESET 130 | 131 | 132 | KEY_PRESSED: 133 | CALL PRINTC ;the character value of the pressed key is already in A 134 | RET 135 | 136 | 137 | #data _HEAP,$8000 138 | 139 | TRACK DEFS TRACK_SZ 140 | CURR_INDEX 141 | DEFS 1 142 | 143 | COLOR EQU TRACK + 5 144 | 145 | 146 | 147 | 148 | #code _MAIN 149 | 150 | SPACE_TABLE_SZ EQU 32 151 | 152 | SPACE_TABLE: 153 | DEFB 0,0,1,3,5,7,10,12,14,16,19,21,24,25,27,27 154 | DEFB 27,27,25,24,21,19,16,14,12,10,7,5,3,1,0,0 155 | 156 | TRACK_D DEFB 27,"[2;31m#######",10,13,NULL 157 | TRACK_D_END: 158 | TRACK_SZ EQU TRACK_D_END - TRACK_D 159 | 160 | MAIN: ; Initialize the SIO/2 chip 161 | CALL SIOA_RESET 162 | CALL INT_INIT 163 | CALL A_RTS_ON 164 | 165 | ; Initializes the color variable 166 | LD HL,TRACK_D ;copy from TRACK_D (data in ROM) addess 167 | LD DE,TRACK ;to the TRACK variable address (in RAM) 168 | LD BC,TRACK_SZ ;a total of TRACK_SZ bytes 169 | LDIR ;do the copy 170 | 171 | LD IX,SPACE_TABLE ;initialize the space table index 172 | LD A,0 173 | LD (CURR_INDEX),A ;initialize the current index variable 174 | 175 | PROG_LOOP: 176 | CALL PRINT_TRACK 177 | CALL INC_STATES 178 | JR PROG_LOOP 179 | 180 | 181 | 182 | ; *************************************************************************** 183 | ; Increments the space table pointer address (IX) and the COLOR variable. 184 | ; Resets IX to SPACE_TABLE address if it overflows the SPACE_TABLE size. 185 | ; Resets the COLOR variable to "1" when it reaches "8", making it loop from 186 | ; "1" to "7". 187 | ; *************************************************************************** 188 | INC_STATES: 189 | INC IX ;Increments the SPACE_TABLE pointer address. 190 | LD HL,CURR_INDEX 191 | INC (HL) ;Increment the matching index value. 192 | LD A,(CURR_INDEX) ;Loads the current SPACE_TABLE index into A 193 | XOR SPACE_TABLE_SZ ;to compare with the table size and jump to 194 | JR NZ,INC_COLOR ;increment color if the table end is not 195 | ;reached. 196 | LD A,0 197 | LD (CURR_INDEX),A ;Resets the CURRENT_INDEX variable value to 0 198 | LD IX,SPACE_TABLE ;and bring back the SPACE_TABLE pointer to the 199 | ;start of the space table. 200 | INC_COLOR: 201 | LD HL,COLOR 202 | INC (HL) ;Increments the color value of the VT100 203 | LD A,(COLOR) ;command and check if it reached the end 204 | XOR "8" ;of the available color values. 205 | JR NZ,COLOR_NOT_RESET ;Jumps if the color don't need reset. 206 | LD A,"1" 207 | LD (COLOR),A ;Resets the color to the first one. 208 | COLOR_NOT_RESET: 209 | RET 210 | 211 | ; *************************************************************************** 212 | ; Prints the number of spaces indicated in IX and prints the track. 213 | ; *************************************************************************** 214 | PRINT_TRACK: 215 | LD B,(IX) 216 | CALL PSPACES 217 | LD HL,TRACK 218 | CALL PRINT 219 | RET 220 | 221 | 222 | ; *************************************************************************** 223 | ; Prints a number of spaces to SIOA_D specified by the register B. Upon 224 | ; return B, contains 0. 225 | ; *************************************************************************** 226 | PSPACES: 227 | LD A,0 ;Checks if register b... 228 | OR B ;...is equal to 0. 229 | JR Z,PSPACES_END ;if it is zero, return 230 | LD A," " 231 | CALL PRINTC ;Print a space. 232 | DEC B ;one less space to print. 233 | JR PSPACES ;continue printing spaces 234 | PSPACES_END: 235 | RET 236 | 237 | ; *************************************************************************** 238 | ; Prints the NULL terminated string pointed by HL to SIOA_D. 239 | ; When this function returns, HL contains the address of the NULL character. 240 | ; *************************************************************************** 241 | PRINT: 242 | LD A,(HL) 243 | OR A,NULL ;Checks if the content of A is null 244 | JR Z,PRINT_END ;If null, then exit the function 245 | CALL PRINTC ;Print the character and... 246 | INC HL ;...move to the next char 247 | JR PRINT ;Print the next char 248 | PRINT_END: 249 | RET 250 | 251 | 252 | 253 | 254 | 255 | #END 256 | -------------------------------------------------------------------------------- /Projects/RetroZ-SBC/RetroZ-SBC-rescue.lib: -------------------------------------------------------------------------------- 1 | EESchema-LIBRARY Version 2.4 2 | #encoding utf-8 3 | # 4 | # ADM803TAKSZ-REEL7-SamacSys_Parts 5 | # 6 | DEF ADM803TAKSZ-REEL7-SamacSys_Parts IC 0 30 Y Y 1 F N 7 | F0 "IC" 700 300 50 H V L CNN 8 | F1 "ADM803TAKSZ-REEL7-SamacSys_Parts" 700 200 50 H V L CNN 9 | F2 "SOT96P237X112-3N" 700 100 50 H I L CNN 10 | F3 "https://www.mouser.ca/datasheet/2/609/ADM803_809_810-878720.pdf" 700 0 50 H I L CNN 11 | F4 "Analog Devices ADM803TAKSZ-REEL7, Voltage Supervisor, 1.2 5.5 V, 3-Pin SC-70" 700 -100 50 H I L CNN "Description" 12 | F5 "1.12" 700 -200 50 H I L CNN "Height" 13 | F6 "Analog Devices" 700 -300 50 H I L CNN "Manufacturer_Name" 14 | F7 "ADM803TAKSZ-REEL7" 700 -400 50 H I L CNN "Manufacturer_Part_Number" 15 | DRAW 16 | S 200 100 700 -200 0 1 0 N 17 | X GND 1 0 -100 200 R 50 50 0 0 W 18 | X ~RESET 2 900 0 200 L 50 50 0 0 B 19 | X VCC 3 0 0 200 R 50 50 0 0 W 20 | ENDDRAW 21 | ENDDEF 22 | # 23 | # AS6C62256-55PCN-SamacSys_Parts 24 | # 25 | DEF AS6C62256-55PCN-SamacSys_Parts IC 0 30 Y Y 1 F N 26 | F0 "IC" 850 300 50 H V L CNN 27 | F1 "AS6C62256-55PCN-SamacSys_Parts" 850 200 50 H V L CNN 28 | F2 "DIP1587W140P254L3632H381Q28N" 850 100 50 H I L CNN 29 | F3 "https://componentsearchengine.com/Datasheets/1/AS6C62256-55PCN.pdf" 850 0 50 H I L CNN 30 | F4 "Alliance Memory AS6C62256-55PCN SRAM Memory, 256kbit, 2.7 5.5 V, 55ns 28-Pin PDIP" 850 -100 50 H I L CNN "Description" 31 | F5 "3.81" 850 -200 50 H I L CNN "Height" 32 | F6 "913-AS6C62256-55PCN" 850 -300 50 H I L CNN "Mouser Part Number" 33 | F7 "Alliance Memory" 850 -400 50 H I L CNN "Manufacturer_Name" 34 | F8 "AS6C62256-55PCN" 850 -500 50 H I L CNN "Manufacturer_Part_Number" 35 | DRAW 36 | S 200 100 800 -1600 0 1 0 N 37 | X A14 1 0 -1400 200 R 50 50 0 0 I 38 | X A0 10 0 0 200 R 50 50 0 0 I 39 | X DQ0 11 1000 -300 200 L 50 50 0 0 B 40 | X DQ1 12 1000 -400 200 L 50 50 0 0 B 41 | X DQ2 13 1000 -500 200 L 50 50 0 0 B 42 | X GND 14 0 -1500 200 R 50 50 0 0 W 43 | X DQ3 15 1000 -600 200 L 50 50 0 0 B 44 | X DQ4 16 1000 -700 200 L 50 50 0 0 B 45 | X DQ5 17 1000 -800 200 L 50 50 0 0 B 46 | X DQ6 18 1000 -900 200 L 50 50 0 0 B 47 | X DQ7 19 1000 -1000 200 L 50 50 0 0 B 48 | X A12 2 0 -1200 200 R 50 50 0 0 I 49 | X ~CE 20 1000 -1500 200 L 50 50 0 0 I 50 | X A10 21 0 -1000 200 R 50 50 0 0 I 51 | X ~OE 22 1000 -1300 200 L 50 50 0 0 I 52 | X A11 23 0 -1100 200 R 50 50 0 0 I 53 | X A9 24 0 -900 200 R 50 50 0 0 I 54 | X A8 25 0 -800 200 R 50 50 0 0 I 55 | X A13 26 0 -1300 200 R 50 50 0 0 I 56 | X ~WE 27 1000 -1400 200 L 50 50 0 0 I 57 | X VCC 28 1000 0 200 L 50 50 0 0 W 58 | X A7 3 0 -700 200 R 50 50 0 0 I 59 | X A6 4 0 -600 200 R 50 50 0 0 I 60 | X A5 5 0 -500 200 R 50 50 0 0 I 61 | X A4 6 0 -400 200 R 50 50 0 0 I 62 | X A3 7 0 -300 200 R 50 50 0 0 I 63 | X A2 8 0 -200 200 R 50 50 0 0 I 64 | X A1 9 0 -100 200 R 50 50 0 0 I 65 | ENDDRAW 66 | ENDDEF 67 | # 68 | # AT28C64B-15PU-SamacSys_Parts 69 | # 70 | DEF AT28C64B-15PU-SamacSys_Parts IC 0 30 Y Y 1 F N 71 | F0 "IC" 950 300 50 H V L CNN 72 | F1 "AT28C64B-15PU-SamacSys_Parts" 950 200 50 H V L CNN 73 | F2 "DIP1556W56P254L3702H483Q28N" 950 100 50 H I L CNN 74 | F3 "https://componentsearchengine.com/Datasheets/1/AT28C64B-15PU.pdf" 950 0 50 H I L CNN 75 | F4 "AT28C64B-15PU, Parallel EEPROM Memory 64kbit, Parallel, 150ns 4.5 5.5 V, 28-Pin PDIP" 950 -100 50 H I L CNN "Description" 76 | F5 "4.826" 950 -200 50 H I L CNN "Height" 77 | F6 "556-AT28C64B15PU" 950 -300 50 H I L CNN "Mouser Part Number" 78 | F7 "Microchip" 950 -400 50 H I L CNN "Manufacturer_Name" 79 | F8 "AT28C64B-15PU" 950 -500 50 H I L CNN "Manufacturer_Part_Number" 80 | DRAW 81 | S 200 100 900 -1600 0 1 0 N 82 | X NC/A14 1 0 -1400 200 R 50 50 0 0 I 83 | X A0 10 0 0 200 R 50 50 0 0 I 84 | X I/O0 11 1100 -300 200 L 50 50 0 0 B 85 | X I/O1 12 1100 -400 200 L 50 50 0 0 B 86 | X I/O2 13 1100 -500 200 L 50 50 0 0 B 87 | X GND 14 0 -1500 200 R 50 50 0 0 W 88 | X I/O3 15 1100 -600 200 L 50 50 0 0 B 89 | X I/O4 16 1100 -700 200 L 50 50 0 0 B 90 | X I/O5 17 1100 -800 200 L 50 50 0 0 B 91 | X I/O6 18 1100 -900 200 L 50 50 0 0 B 92 | X I/O7 19 1100 -1000 200 L 50 50 0 0 B 93 | X A12 2 0 -1200 200 R 50 50 0 0 I 94 | X ~CE 20 1100 -1500 200 L 50 50 0 0 I 95 | X A10 21 0 -1000 200 R 50 50 0 0 I 96 | X ~OE 22 1100 -1300 200 L 50 50 0 0 I 97 | X A11 23 0 -1100 200 R 50 50 0 0 I 98 | X A9 24 0 -900 200 R 50 50 0 0 I 99 | X A8 25 0 -800 200 R 50 50 0 0 I 100 | X NC/A13 26 0 -1300 200 R 50 50 0 0 I 101 | X ~WE 27 1100 -1400 200 L 50 50 0 0 I 102 | X VCC 28 1100 0 200 L 50 50 0 0 W 103 | X A7 3 0 -700 200 R 50 50 0 0 I 104 | X A6 4 0 -600 200 R 50 50 0 0 I 105 | X A5 5 0 -500 200 R 50 50 0 0 I 106 | X A4 6 0 -400 200 R 50 50 0 0 I 107 | X A3 7 0 -300 200 R 50 50 0 0 I 108 | X A2 8 0 -200 200 R 50 50 0 0 I 109 | X A1 9 0 -100 200 R 50 50 0 0 I 110 | ENDDRAW 111 | ENDDEF 112 | # 113 | # FT230XS-U-FT230XS-U 114 | # 115 | DEF FT230XS-U-FT230XS-U U 0 20 Y Y 1 F N 116 | F0 "U" 50 50 60 H V C CNN 117 | F1 "FT230XS-U-FT230XS-U" 425 -800 60 H V C CNN 118 | F2 "Housings_SSOP:TSSOP-16_4.4x5mm_Pitch0.65mm" 250 200 60 H I C CNN 119 | F3 "https://www.mouser.ca/datasheet/2/163/DS_FT230X-5395.pdf" 275 350 60 H I C CNN 120 | DRAW 121 | S 0 0 850 -750 0 1 0 N 122 | X VCC 12 175 -475 200 R 50 50 0 0 W N 123 | X GND 13 175 -625 200 R 50 50 0 0 W N 124 | X GND 5 175 -550 200 R 50 50 0 0 W N 125 | X TXD 1 -200 -375 200 R 50 50 1 1 O 126 | X 3V3OUT 10 1050 -325 200 L 50 50 1 1 w 127 | X ~RESET 11 -200 -275 200 R 50 50 1 1 I L 128 | X CBUS1/~RXLED 14 -200 -75 200 R 50 50 1 1 B 129 | X CBUS0/TXDEN 15 1050 -575 200 L 50 50 1 1 B 130 | X CBUS3/~SLEEP 16 1050 -675 200 L 50 50 1 1 B 131 | X ~RTS 2 -200 -675 200 R 50 50 1 1 O V 132 | X VCCIO 3 1050 -425 200 L 50 50 1 1 W 133 | X RXD 4 -200 -475 200 R 50 50 1 1 I 134 | X ~CTS 6 -200 -575 200 R 50 50 1 1 I L 135 | X CBUS2/~TXLED 7 -200 -175 200 R 50 50 1 1 B 136 | X USBDP 8 1050 -75 200 L 50 50 1 1 I 137 | X USBDM 9 1050 -175 200 L 50 50 1 1 I 138 | ENDDRAW 139 | ENDDEF 140 | # 141 | # USB_OTG-Connector 142 | # 143 | DEF USB_OTG-Connector J 0 40 Y Y 1 F N 144 | F0 "J" -200 450 50 H V L CNN 145 | F1 "USB_OTG-Connector" -200 350 50 H V L CNN 146 | F2 "" 150 -50 50 H I C CNN 147 | F3 "" 150 -50 50 H I C CNN 148 | $FPLIST 149 | USB* 150 | $ENDFPLIST 151 | DRAW 152 | C -150 85 25 0 1 10 F 153 | C -25 135 15 0 1 10 F 154 | S -200 -300 200 300 0 1 10 f 155 | S -5 -300 5 -270 0 1 0 N 156 | S 10 50 -20 20 0 1 10 F 157 | S 200 -205 170 -195 0 1 0 N 158 | S 200 -105 170 -95 0 1 0 N 159 | S 200 -5 170 5 0 1 0 N 160 | S 200 195 170 205 0 1 0 N 161 | P 2 0 1 10 -75 85 25 85 N 162 | P 4 0 1 10 -125 85 -100 85 -50 135 -25 135 N 163 | P 4 0 1 10 -100 85 -75 85 -50 35 0 35 N 164 | P 4 0 1 10 25 110 25 60 75 85 25 110 F 165 | P 5 0 1 0 -170 220 -70 220 -80 190 -160 190 -170 220 F 166 | P 9 0 1 0 -185 230 -185 220 -175 190 -175 180 -65 180 -65 190 -55 220 -55 230 -185 230 N 167 | X VBUS 1 300 200 100 L 50 50 1 1 w 168 | X D- 2 300 -100 100 L 50 50 1 1 P 169 | X D+ 3 300 0 100 L 50 50 1 1 P 170 | X ID 4 300 -200 100 L 50 50 1 1 P 171 | X GND 5 0 -400 100 U 50 50 1 1 W 172 | X Shield 6 -100 -400 100 U 50 50 1 1 P 173 | ENDDRAW 174 | ENDDEF 175 | # 176 | # Z84C40-Z84C40-SIO2 177 | # 178 | DEF Z84C40-Z84C40-SIO2 U 0 40 Y Y 1 F N 179 | F0 "U" -650 1400 50 H V L CNN 180 | F1 "Z84C40-Z84C40-SIO2" 350 1400 50 H V L CNN 181 | F2 "" 0 0 50 H I C CNN 182 | F3 "" 0 0 50 H I C CNN 183 | $FPLIST 184 | DIP* 185 | PDIP* 186 | $ENDFPLIST 187 | DRAW 188 | T 0 0 0 60 0 0 0 "Z80 SIO/2" Normal 0 C C 189 | S -650 -1350 650 1350 0 1 10 f 190 | X GND 31 0 -1200 150 U 50 50 0 0 W N 191 | X VCC 9 0 1250 150 D 50 50 0 0 W N 192 | X D1 1 -800 1150 150 R 50 50 1 1 I 193 | X ~W~/~RDYA~ 10 800 650 150 L 50 50 1 1 E I 194 | X ~SYNCA~ 11 800 750 150 L 50 50 1 1 B I 195 | X RxDA 12 800 1150 150 L 50 50 1 1 I 196 | X ~RxCA 13 800 1050 150 L 50 50 1 1 I IC 197 | X ~TxCA 14 800 850 150 L 50 50 1 1 I IC 198 | X TxDA 15 800 950 150 L 50 50 1 1 O 199 | X ~DTRA 16 800 250 150 L 50 50 1 1 O I 200 | X ~RTSA 17 800 450 150 L 50 50 1 1 O I 201 | X ~CTSA 18 800 350 150 L 50 50 1 1 I I 202 | X ~DCDA 19 800 150 150 L 50 50 1 1 I I 203 | X D3 2 -800 950 150 R 50 50 1 1 I 204 | X CLK 20 -800 -800 150 R 50 50 1 1 I C 205 | X ~RESET 21 -800 150 150 R 50 50 1 1 I I 206 | X ~DCDB 22 800 -1150 150 L 50 50 1 1 I I 207 | X ~CTSB 23 800 -950 150 L 50 50 1 1 I I 208 | X ~RTSB 24 800 -850 150 L 50 50 1 1 O I 209 | X ~DTRB 25 800 -1050 150 L 50 50 1 1 O I 210 | X TxDB 26 800 -450 150 L 50 50 1 1 O 211 | X ~TxCB 27 800 -550 150 L 50 50 1 1 I IC 212 | X ~RxCB 28 800 -350 150 L 50 50 1 1 I IC 213 | X RxDB 29 800 -250 150 L 50 50 1 1 I 214 | X D5 3 -800 750 150 R 50 50 1 1 I 215 | X ~W~/~RDYB 30 800 -650 150 L 50 50 1 1 E I 216 | X ~RD 32 -800 -150 150 R 50 50 1 1 I I 217 | X C/~D 33 -800 -450 150 R 50 50 1 1 I 218 | X B/~A 34 -800 -550 150 R 50 50 1 1 I 219 | X ~CE 35 -800 250 150 R 50 50 1 1 I I 220 | X ~IORQ 36 -800 -50 150 R 50 50 1 1 I I 221 | X D6 37 -800 650 150 R 50 50 1 1 I 222 | X D4 38 -800 850 150 R 50 50 1 1 I 223 | X D2 39 -800 1050 150 R 50 50 1 1 I 224 | X D7 4 -800 550 150 R 50 50 1 1 I 225 | X D0 40 -800 1250 150 R 50 50 1 1 I 226 | X ~INT 5 -800 -1050 150 R 50 50 1 1 C I 227 | X IEI 6 -800 -1150 150 R 50 50 1 1 I 228 | X IEO 7 -800 -1250 150 R 50 50 1 1 O 229 | X ~M1 8 -800 50 150 R 50 50 1 1 I I 230 | ENDDRAW 231 | ENDDEF 232 | # 233 | #End Library 234 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # RetroZ SBC S80 2 | A minimalist single board Z80 retro computer based on the S80 design 3 | specifications. 4 | 5 | This board is developped using the S80 physical specifications. The 6 | specifications are not currently available online but I plan to fix that in a 7 | future revision. 8 | 9 | ![RetroZ SBC for S80 Architecture](https://raw.githubusercontent.com/formix/RetroZ/master/Documents/RetroZ-SBC-Front.png) 10 | *Front of the board* 11 | 12 | [Back of the board](https://raw.githubusercontent.com/formix/RetroZ/master/Documents/RetroZ-SBC-Back.png) 13 | 14 | You can find the board schematic as a PDF [here](https://github.com/formix/RetroZ/blob/master/Documents/RetroZ-SBC.pdf). 15 | 16 | ## BOM 17 | 18 | You can download the BOM [here](https://github.com/formix/RetroZ/blob/master/Projects/RetroZ-SBC/RetroZ-SBC-BOM.ods?raw=true). It is an Open Document Worksheet file and you should be able to open it with Open/Libre Office or MS Excel. If you have issue, contact me. 19 | 20 | | Comp. | Mouser# | Digikey# | Mfr# | Qty | Description | 21 | |----------------------------|----------|---------------|--------------------|-----|------------------------------------| 22 | | C1,C2 | | | C317C200J5G5TA | 2 | 20pf Capacitor | 23 | | C3,C4 | | | FG28C0G1H470JNT06 | 2 | 47pF Capacitor | 24 | | C5,C6,C7,C8,C9,C10,C11,C12 | | | C322C104K5R5TA7301 | 8 | 0,1uF Capacitors | 25 | | D1 | | | 151051VS04000 | 1 | Green Led 5mm | 26 | | D2,D3 | | | 151031SS06000 | 2 | Red Led 3mm Round, FwdV 2.2 | 27 | | IC1 | | | ADM803TAKSZ-REEL7 | 1 | Power-on Reset chip | 28 | | IC2 | | | AT28C256-15PU | 1 | EEPROM 256kbit 28-Pin PDIP | 29 | | IC2,IC3 | | | 4828-6004-CP | 2 | CONN IC DIP SOCKET 28POS TIN | 30 | | IC3 | | | AS6C62256-55PCN | 1 | IC SRAM 256K PARALLEL 28DIP | 31 | | J1 | 485-2223 | 1528-1385-ND | 2223 | 1 | Adafruit stacking header 2x20 | 32 | | J2,J3 | 485-85 | 1528-1074-ND | 85 | 1 | STACKING HEADER ARDUINO SHIELD | 33 | | J4 | | | PRPC005DAAN-RC | 1 | 5x2 Pin Connector | 34 | | J4,J6 | | | QPC02SXGN-RC | 2 | 1x2 Shunt connector | 35 | | J5 | | | 629105150521 | 1 | USB Microb B SMT Connector | 36 | | J6 | | | PRPC004DAAN-RC | 1 | 4x2 Pin Connector | 37 | | R1 | | | RNF14FTD1M00 | 1 | 1M Ohm Resistor | 38 | | R10,R11 | | | RNF14FTD332R | 2 | 332 Ohm resistor | 39 | | R2 | | | RNF14FTD1K00 | 1 | 1k Ohm Resistor | 40 | | R3,R4,R5,R6,R12,R13,R14 | | | RNF14FTD10K0 | 7 | 10k Ohm Resistor | 41 | | R7 | | | RNF14FTD221R | 1 | 221 Ohm Resistor | 42 | | R8,R9 | | | RNF14FTD27R4 | 2 | 27 Ohm Resistors | 43 | | SW2 | | | BD01 | 1 | DIP Switch x1 | 44 | | U1 | | | 74LS32 | 1 | Quand OR | 45 | | U2 | | | 74HCT04 | 1 | Hex Inverter Schmidt Trigger | 46 | | U3 | | | Z84C0008PEG | 1 | Z80 CPU | 47 | | U3,U5 | | | 4840-6004-CP | 1 | 40 pin (2 x 20) DIP socket 15,24mm | 48 | | U4 | | | SN74LS138N | 1 | 3 to 8 Decoder/Demux | 49 | | U5 | | | Z84C4208PEG | 1 | Z80 SIO/2 | 50 | | U6 | | | FT230XS-U | 1 | UART to USB | 51 | | U7 | | | 74LS92 | 1 | Dodecade counter (div. By 12) | 52 | | Y1 | | | ECS-73-20-5PX-TR | 1 | 7,3728 MHz Crystal | 53 | 54 | 55 | ## Development Note 56 | 57 | ### 2019-01-15 58 | The review phase is done! I just sent the board to production. I should get the 59 | finished board next week. 60 | 61 | ### 2019-01-26 62 | I recieved my boards (10 boards!) yesterday. I just finished creating the BOM 63 | and sorted through my parts to order what is missing. I expect to recieve my 64 | order in the coming week. I'll work on the NASCOM Basic once I got the 65 | computer assembled. Stay tuned! 66 | 67 | ### 2019-08-03 68 | It's been a while since I updated that README file but as you can see, 69 | I'm committing regularily on the project. Simply put, I'm too busy playing 70 | with my working RetroZ SBC computer to update the front documentation. It is 71 | time to fix that, continue reading to get the full update. 72 | 73 | ## What's Inside? 74 | The RetroZ-SBC computer is a 8MHz Z80 CPU clocked at 7.3728 MHz. It supports 75 | up to 32kB of ROM and 32kB of RAM. An SIO/2 chip is connected to the USB 76 | Micro B socket using an FTDI serial converter. Rx and Tx leds let you know 77 | when the computer communicates over USB. The whole computer is powered through 78 | the same USB port and a power-on reset monitor resets the computer at startup. 79 | A Reset button allows warm computer restart. An On/Off DIP switch controls the 80 | power state of the computer and a power led indicator let you know that the 81 | beast is powered. All the Z80 processor pins are available through the 40 pins 82 | stacking header plus some other on the User Port A. User Port B stacking 83 | header is fully available (8 pins) for child boards future projects. 84 | 85 | ## The Connection 86 | The USB to serial conversion is made possible thanks to an FTDI chip 87 | [behind the board](https://raw.githubusercontent.com/formix/RetroZ/master/Documents/RetroZ-SBC-Back.png) 88 | and is clocked at 115200 bauds by default. This speed can be changed 89 | programmatically through the Z84C40 (Zilog SIO/2) registers. On a Windows 90 | machine the device can be accessed using **COM5**. For a 91 | Mac/Linux box it is **/dev/ttyUSB0**. Hardware flow control CTS/RTS is fully 92 | wired so feel free to flood the console with whatever you get, it should 93 | handle it. 94 | 95 | ## Technical Reference 96 | ### Power and commnunication over USB 97 | Using a single USB Micro-B wire, it is possible to power-up and communicate 98 | with the computer. There is a DIP switch to set the computer on or off and a 99 | power indicator led indicates when the computer is powered on. There is also 100 | a power line monitor chip (IC1) that pull the /RESET line LOW for 240 ms 101 | after power on. 102 | 103 | ### Serial Communication 104 | Serial communication is achieved using a Z84C42 SIO/2 chip. The serial port A 105 | is connected to the USB jack through an FTDI UART to USB 2.0 converter. Rx 106 | and Tx leds indicate when communication occurs on that port. The serial port 107 | B is connected back into the User Port A (J2) PIN 2 (RxB) and Pin 3 (TxB) for 108 | slave cards serial communications. 109 | 110 | **The serial port A clock** is directly tied to the clock and can be changed 111 | programmatically from the SIO/2 registers. In the NASCOM Basic provided, it is 112 | set to 115200 by default. 113 | 114 | **The serial port B clock** The default speed is set to 115200 bauds as well. 115 | Again, that speed can be programmatically changed. The serial clock on port B 116 | goes through a dodecade counter and can be further adjusted using the 117 | `Clock div.` (J6) jumper that offers another set of 1,2,6 and 12 dividers. 118 | That gives a wide variety of standard baud rates down to 9600 bauds. 119 | 120 | ### Onboard memory control 121 | The PIN 1 of the User Port A is pulled low with a 2k resistor. This is the 122 | on-board memory enable input pin (/ME). To disable onboard memory, an 123 | expansion card can set that pin HIGH. This would be the case with a memory 124 | expansion board. It can be hardwired to 5V to disable the onboard memory 125 | completely or it can be tied to some logic to leverage the on-board memory as 126 | needed. 127 | 128 | ### Interrupt Chaining 129 | The RetroZ SBC design allows chaining interrupts of up to 4 slave boards. The 130 | onboard SIO/2 IEO pin is hardwired to the User Port A INT0 (PIN 4). Its 131 | Interrupt Enable In pin can be tied to any of the other INT pins using the 132 | IEI Select jumper (J4). Selecting the first position of that jumper (INT0) 133 | sets the on-board SIO/2 as the Master. On slave boards, the Interrupt Enable 134 | In will have 6 positions. Also, a 4 positions IEO jumper header should be 135 | provided to select the right User Port A IEO position (pins 5-8). More on 136 | that on the slave board design document. 137 | 138 | **WARNING** User Port A pins 4-8 (interrupts) are not protected. If you 139 | connect a daughter board without checking jumper settings first, you could 140 | short an IO pin on your stack and damage a chip! Looking into a solution to 141 | that in a future revision. 142 | 143 | 144 | -------------------------------------------------------------------------------- /Projects/RetroZ-RAM24K/RetroZ-RAM24K-cache.lib: -------------------------------------------------------------------------------- 1 | EESchema-LIBRARY Version 2.4 2 | #encoding utf-8 3 | # 4 | # 4xxx_4023 5 | # 6 | DEF 4xxx_4023 U 0 40 Y Y 4 L N 7 | F0 "U" 0 50 50 H V C CNN 8 | F1 "4xxx_4023" 0 -50 50 H V C CNN 9 | F2 "" 0 0 50 H I C CNN 10 | F3 "" 0 0 50 H I C CNN 11 | $FPLIST 12 | DIP?14* 13 | $ENDFPLIST 14 | DRAW 15 | A 0 0 150 -899 899 1 1 10 f 0 -150 0 150 16 | A 0 0 150 -899 899 2 1 10 f 0 -150 0 150 17 | A 0 0 150 -899 899 3 1 10 f 0 -150 0 150 18 | A -360 0 258 354 -354 1 2 10 N -150 150 -150 -150 19 | A -47 -52 204 150 837 1 2 10 f 150 0 -24 150 20 | A -47 52 204 -150 -837 1 2 10 f 150 0 -24 -150 21 | A -360 0 258 354 -354 2 2 10 N -150 150 -150 -150 22 | A -47 -52 204 150 837 2 2 10 f 150 0 -24 150 23 | A -47 52 204 -150 -837 2 2 10 f 150 0 -24 -150 24 | A -360 0 258 354 -354 3 2 10 N -150 150 -150 -150 25 | A -47 -52 204 150 837 3 2 10 f 150 0 -24 150 26 | A -47 52 204 -150 -837 3 2 10 f 150 0 -24 -150 27 | S -200 300 200 -300 4 1 10 f 28 | P 4 1 1 10 0 150 -150 150 -150 -150 0 -150 f 29 | P 4 2 1 10 0 150 -150 150 -150 -150 0 -150 f 30 | P 4 3 1 10 0 150 -150 150 -150 -150 0 -150 f 31 | P 2 1 2 10 -150 -150 -25 -150 f 32 | P 2 1 2 10 -150 150 -25 150 f 33 | P 12 1 2 -1000 -25 150 -150 150 -150 150 -140 134 -119 89 -106 41 -103 -10 -109 -59 -125 -107 -150 -150 -150 -150 -25 -150 f 34 | P 2 2 2 10 -150 -150 -25 -150 f 35 | P 2 2 2 10 -150 150 -25 150 f 36 | P 12 2 2 -1000 -25 150 -150 150 -150 150 -140 134 -119 89 -106 41 -103 -10 -109 -59 -125 -107 -150 -150 -150 -150 -25 -150 f 37 | P 2 3 2 10 -150 -150 -25 -150 f 38 | P 2 3 2 10 -150 150 -25 150 f 39 | P 12 3 2 -1000 -25 150 -150 150 -150 150 -140 134 -119 89 -106 41 -103 -10 -109 -59 -125 -107 -150 -150 -150 -150 -25 -150 f 40 | X VDD 14 0 500 200 D 50 50 4 0 W 41 | X VSS 7 0 -500 200 U 50 50 4 0 W 42 | X ~ 1 -300 100 150 R 50 50 1 1 I 43 | X ~ 2 -300 0 150 R 50 50 1 1 I 44 | X ~ 8 -300 -100 150 R 50 50 1 1 I 45 | X ~ 9 300 0 150 L 50 50 1 1 C I 46 | X ~ 3 -300 100 150 R 50 50 2 1 I 47 | X ~ 4 -300 0 150 R 50 50 2 1 I 48 | X ~ 5 -300 -100 150 R 50 50 2 1 I 49 | X ~ 6 300 0 150 L 50 50 2 1 C I 50 | X ~ 10 300 0 150 L 50 50 3 1 C I 51 | X ~ 11 -300 100 150 R 50 50 3 1 I 52 | X ~ 12 -300 0 150 R 50 50 3 1 I 53 | X ~ 13 -300 -100 150 R 50 50 3 1 I 54 | X ~ 1 -300 100 170 R 50 50 1 2 I I 55 | X ~ 2 -300 0 195 R 50 50 1 2 I I 56 | X ~ 8 -300 -100 170 R 50 50 1 2 I I 57 | X ~ 9 300 0 150 L 50 50 1 2 C 58 | X ~ 3 -300 100 170 R 50 50 2 2 I I 59 | X ~ 4 -300 0 195 R 50 50 2 2 I I 60 | X ~ 5 -300 -100 170 R 50 50 2 2 I I 61 | X ~ 6 300 0 150 L 50 50 2 2 C 62 | X ~ 10 300 0 150 L 50 50 3 2 C 63 | X ~ 11 -300 100 170 R 50 50 3 2 I I 64 | X ~ 12 -300 0 195 R 50 50 3 2 I I 65 | X ~ 13 -300 -100 170 R 50 50 3 2 I I 66 | ENDDRAW 67 | ENDDEF 68 | # 69 | # 74xx_74LS138 70 | # 71 | DEF 74xx_74LS138 U 0 40 Y Y 1 L N 72 | F0 "U" -300 450 50 H V C CNN 73 | F1 "74xx_74LS138" -300 -550 50 H V C CNN 74 | F2 "" 0 0 50 H I C CNN 75 | F3 "" 0 0 50 H I C CNN 76 | $FPLIST 77 | DIP?16* 78 | $ENDFPLIST 79 | DRAW 80 | S -300 400 300 -500 1 1 10 f 81 | X A0 1 -500 300 200 R 50 50 1 0 I 82 | X O5 10 500 -200 200 L 50 50 1 0 O V 83 | X O4 11 500 -100 200 L 50 50 1 0 O V 84 | X O3 12 500 0 200 L 50 50 1 0 O V 85 | X O2 13 500 100 200 L 50 50 1 0 O V 86 | X O1 14 500 200 200 L 50 50 1 0 O V 87 | X O0 15 500 300 200 L 50 50 1 0 O V 88 | X VCC 16 0 600 200 D 50 50 1 0 W 89 | X A1 2 -500 200 200 R 50 50 1 0 I 90 | X A2 3 -500 100 200 R 50 50 1 0 I 91 | X E1 4 -500 -400 200 R 50 50 1 0 I L 92 | X E2 5 -500 -300 200 R 50 50 1 0 I L 93 | X E3 6 -500 -200 200 R 50 50 1 0 I 94 | X O7 7 500 -400 200 L 50 50 1 0 O V 95 | X GND 8 0 -700 200 U 50 50 1 0 W 96 | X O6 9 500 -300 200 L 50 50 1 0 O V 97 | ENDDRAW 98 | ENDDEF 99 | # 100 | # Device_R 101 | # 102 | DEF Device_R R 0 0 N Y 1 F N 103 | F0 "R" 80 0 50 V V C CNN 104 | F1 "Device_R" 0 0 50 V V C CNN 105 | F2 "" -70 0 50 V I C CNN 106 | F3 "" 0 0 50 H I C CNN 107 | $FPLIST 108 | R_* 109 | $ENDFPLIST 110 | DRAW 111 | S -40 -100 40 100 0 1 10 N 112 | X ~ 1 0 150 50 D 50 50 1 1 P 113 | X ~ 2 0 -150 50 U 50 50 1 1 P 114 | ENDDRAW 115 | ENDDEF 116 | # 117 | # IS62C256AL-45ULI-TR_IS62C256AL-45ULI-TR 118 | # 119 | DEF IS62C256AL-45ULI-TR_IS62C256AL-45ULI-TR IC 0 30 Y Y 1 F N 120 | F0 "IC" 200 250 50 H V L CNN 121 | F1 "IS62C256AL-45ULI-TR_IS62C256AL-45ULI-TR" 200 150 50 H V L CNN 122 | F2 "SOIC127P1210X305-28N" 200 1100 50 H I L CNN 123 | F3 "https://www.mouser.ca/datasheet/2/198/62-65C256AL-258444.pdf" 200 1000 50 H I L CNN 124 | F4 "SRAM Chip Async Single 5V 256K-bit 32K x 8 45ns 28-Pin SOP T/R" 200 900 50 H I L CNN "Description" 125 | F5 "3.05" 200 800 50 H I L CNN "Height" 126 | F6 "Integrated Silicon Solution Inc." 200 500 50 H I L CNN "Manufacturer_Name" 127 | F7 "IS62C256AL-45ULI-TR" 200 400 50 H I L CNN "Manufacturer_Part_Number" 128 | DRAW 129 | T 900 550 -650 50 0 0 0 "RAM 32K x 8" Normal 0 C C 130 | P 5 0 1 6 200 100 900 100 900 -1400 200 -1400 200 100 N 131 | X A14 1 0 -1350 200 R 50 50 0 0 I 132 | X A0 10 0 50 200 R 50 50 0 0 I 133 | X I/O0 11 1100 -1150 200 L 50 50 0 0 B 134 | X I/O1 12 1100 -1050 200 L 50 50 0 0 B 135 | X I/O2 13 1100 -950 200 L 50 50 0 0 B 136 | X GND 14 1100 -1350 200 L 50 50 0 0 W 137 | X I/O3 15 1100 -850 200 L 50 50 0 0 B 138 | X I/O4 16 1100 -750 200 L 50 50 0 0 B 139 | X I/O5 17 1100 -650 200 L 50 50 0 0 B 140 | X I/O6 18 1100 -550 200 L 50 50 0 0 B 141 | X I/O7 19 1100 -450 200 L 50 50 0 0 B 142 | X A12 2 0 -1150 200 R 50 50 0 0 I 143 | X ~CE 20 1100 -100 200 L 50 50 0 0 I I 144 | X A10 21 0 -950 200 R 50 50 0 0 I 145 | X ~OE 22 1100 -200 200 L 50 50 0 0 I I 146 | X A11 23 0 -1050 200 R 50 50 0 0 I 147 | X A9 24 0 -850 200 R 50 50 0 0 I 148 | X A8 25 0 -750 200 R 50 50 0 0 I 149 | X A13 26 0 -1250 200 R 50 50 0 0 I 150 | X ~WE 27 1100 -300 200 L 50 50 0 0 I I 151 | X VCC 28 1100 50 200 L 50 50 0 0 W 152 | X A7 3 0 -650 200 R 50 50 0 0 I 153 | X A6 4 0 -550 200 R 50 50 0 0 I 154 | X A5 5 0 -450 200 R 50 50 0 0 I 155 | X A4 6 0 -350 200 R 50 50 0 0 I 156 | X A3 7 0 -250 200 R 50 50 0 0 I 157 | X A2 8 0 -150 200 R 50 50 0 0 I 158 | X A1 9 0 -50 200 R 50 50 0 0 I 159 | ENDDRAW 160 | ENDDEF 161 | # 162 | # S80_S80_Interface 163 | # 164 | DEF S80_S80_Interface I 0 40 Y Y 1 F N 165 | F0 "I" -900 1500 50 H V L CNN 166 | F1 "S80_S80_Interface" 900 1500 50 H V R CNN 167 | F2 "" -900 400 50 H I C CNN 168 | F3 "" -900 400 50 H I C CNN 169 | $FPLIST 170 | Interface* 171 | $ENDFPLIST 172 | DRAW 173 | T 0 -400 -1050 50 0 0 0 "USER PORT A" Normal 0 C C 174 | T 0 400 -1050 50 0 0 0 "USER PORT B" Normal 0 C C 175 | S -900 1450 900 -1350 0 1 0 N 176 | X GND 1 200 1600 150 D 50 50 1 1 P 177 | X A7 10 1050 650 150 L 50 50 1 1 P 178 | X A8 11 1050 550 150 L 50 50 1 1 P 179 | X A9 12 1050 450 150 L 50 50 1 1 P 180 | X A10 13 1050 350 150 L 50 50 1 1 P 181 | X A11 14 1050 250 150 L 50 50 1 1 P 182 | X A12 15 1050 150 150 L 50 50 1 1 P 183 | X A13 16 1050 50 150 L 50 50 1 1 P 184 | X A14 17 1050 -50 150 L 50 50 1 1 P 185 | X A15 18 1050 -150 150 L 50 50 1 1 P 186 | X D0 19 1050 -300 150 L 50 50 1 1 P 187 | X VCC 2 -200 1600 150 D 50 50 1 1 P 188 | X D1 20 1050 -400 150 L 50 50 1 1 P 189 | X D2 21 1050 -500 150 L 50 50 1 1 P 190 | X D3 22 1050 -600 150 L 50 50 1 1 P 191 | X D4 23 1050 -700 150 L 50 50 1 1 P 192 | X D5 24 1050 -800 150 L 50 50 1 1 P 193 | X D6 25 1050 -900 150 L 50 50 1 1 P 194 | X D7 26 1050 -1000 150 L 50 50 1 1 P 195 | X ~RESET~ 27 -1050 1350 150 R 50 50 1 1 P I 196 | X ~CLK~ 28 -1050 1200 150 R 50 50 1 1 P C 197 | X ~NMI~ 29 -1050 900 150 R 50 50 1 1 P I 198 | X A0 3 1050 1350 150 L 50 50 1 1 P 199 | X ~INT~ 30 -1050 800 150 R 50 50 1 1 P I 200 | X ~M1~ 31 -1050 500 150 R 50 50 1 1 P I 201 | X ~RFSH~ 32 -1050 400 150 R 50 50 1 1 P I 202 | X ~WAIT~ 33 -1050 300 150 R 50 50 1 1 P I 203 | X ~HALT~ 34 -1050 200 150 R 50 50 1 1 P I 204 | X ~RD~ 35 -1050 -200 150 R 50 50 1 1 P I 205 | X ~WR~ 36 -1050 -300 150 R 50 50 1 1 P I 206 | X ~MREQ~ 37 -1050 -400 150 R 50 50 1 1 P I 207 | X ~IORQ~ 38 -1050 -500 150 R 50 50 1 1 P I 208 | X ~BUSRQ~ 39 -1050 -800 150 R 50 50 1 1 P I 209 | X A1 4 1050 1250 150 L 50 50 1 1 P 210 | X ~BUSACK~ 40 -1050 -900 150 R 50 50 1 1 P I 211 | X MEXT 41 -800 -1500 150 U 50 50 1 1 P 212 | X UPA1 42 -700 -1500 150 U 50 50 1 1 P 213 | X UPA2 43 -600 -1500 150 U 50 50 1 1 P 214 | X UPA3 44 -500 -1500 150 U 50 50 1 1 P 215 | X UPA4 45 -400 -1500 150 U 50 50 1 1 P 216 | X UPA5 46 -300 -1500 150 U 50 50 1 1 P 217 | X UPA6 47 -200 -1500 150 U 50 50 1 1 P 218 | X UPA7 48 -100 -1500 150 U 50 50 1 1 P 219 | X UPB0 49 100 -1500 150 U 50 50 1 1 P 220 | X A2 5 1050 1150 150 L 50 50 1 1 P 221 | X UPB1 50 200 -1500 150 U 50 50 1 1 P 222 | X UPB2 51 300 -1500 150 U 50 50 1 1 P 223 | X UPB3 52 400 -1500 150 U 50 50 1 1 P 224 | X UPB4 53 500 -1500 150 U 50 50 1 1 P 225 | X UPB5 54 600 -1500 150 U 50 50 1 1 P 226 | X UPB6 55 700 -1500 150 U 50 50 1 1 P 227 | X UPB7 56 800 -1500 150 U 50 50 1 1 P 228 | X A3 6 1050 1050 150 L 50 50 1 1 P 229 | X A4 7 1050 950 150 L 50 50 1 1 P 230 | X A5 8 1050 850 150 L 50 50 1 1 P 231 | X A6 9 1050 750 150 L 50 50 1 1 P 232 | ENDDRAW 233 | ENDDEF 234 | # 235 | # Transistor_BJT_2N3055 236 | # 237 | DEF Transistor_BJT_2N3055 Q 0 0 Y N 1 F N 238 | F0 "Q" 200 75 50 H V L CNN 239 | F1 "Transistor_BJT_2N3055" 200 0 50 H V L CNN 240 | F2 "Package_TO_SOT_THT:TO-3" 200 -75 50 H I L CIN 241 | F3 "" 0 0 50 H I L CNN 242 | $FPLIST 243 | TO?3* 244 | $ENDFPLIST 245 | DRAW 246 | C 50 0 111 0 1 10 N 247 | P 2 0 1 0 25 25 100 100 N 248 | P 3 0 1 0 25 -25 100 -100 100 -100 N 249 | P 3 0 1 20 25 75 25 -75 25 -75 N 250 | P 5 0 1 0 50 -70 70 -50 90 -90 50 -70 50 -70 F 251 | X B 1 -200 0 225 R 50 50 1 1 I 252 | X E 2 100 -200 100 U 50 50 1 1 P 253 | X C 3 100 200 100 D 50 50 1 1 P 254 | ENDDRAW 255 | ENDDEF 256 | # 257 | # power_GND 258 | # 259 | DEF power_GND #PWR 0 0 Y Y 1 F P 260 | F0 "#PWR" 0 -250 50 H I C CNN 261 | F1 "power_GND" 0 -150 50 H V C CNN 262 | F2 "" 0 0 50 H I C CNN 263 | F3 "" 0 0 50 H I C CNN 264 | DRAW 265 | P 6 0 1 0 0 0 0 -50 50 -50 0 -100 -50 -50 0 -50 N 266 | X GND 1 0 0 0 D 50 50 1 1 W N 267 | ENDDRAW 268 | ENDDEF 269 | # 270 | # power_PWR_FLAG 271 | # 272 | DEF power_PWR_FLAG #FLG 0 0 N N 1 F P 273 | F0 "#FLG" 0 75 50 H I C CNN 274 | F1 "power_PWR_FLAG" 0 150 50 H V C CNN 275 | F2 "" 0 0 50 H I C CNN 276 | F3 "" 0 0 50 H I C CNN 277 | DRAW 278 | P 6 0 1 0 0 0 0 50 -40 75 0 100 40 75 0 50 N 279 | X pwr 1 0 0 0 U 50 50 0 0 w 280 | ENDDRAW 281 | ENDDEF 282 | # 283 | # power_VCC 284 | # 285 | DEF power_VCC #PWR 0 0 Y Y 1 F P 286 | F0 "#PWR" 0 -150 50 H I C CNN 287 | F1 "power_VCC" 0 150 50 H V C CNN 288 | F2 "" 0 0 50 H I C CNN 289 | F3 "" 0 0 50 H I C CNN 290 | DRAW 291 | C 0 75 25 0 1 0 N 292 | P 2 0 1 0 0 0 0 50 N 293 | X VCC 1 0 0 0 U 50 50 1 1 W N 294 | ENDDRAW 295 | ENDDEF 296 | # 297 | #End Library 298 | -------------------------------------------------------------------------------- /Projects/RetroZ-RAM24K/RetroZ-RAM24K.kicad_pcb: -------------------------------------------------------------------------------- 1 | (kicad_pcb (version 20171130) (host pcbnew "(5.0.1)-4") 2 | 3 | (general 4 | (thickness 1.6) 5 | (drawings 70) 6 | (tracks 0) 7 | (zones 0) 8 | (modules 0) 9 | (nets 1) 10 | ) 11 | 12 | (page A4) 13 | (title_block 14 | (title "S80 - Stackable Z80") 15 | (date 2018-10-22) 16 | (rev 1.0) 17 | (comment 1 "Original Design Copyright (c) 2018 by R&F Pynckels") 18 | (comment 2 "RetroZ Adaptation Copyright(c) 2019 by J.P. Gravel") 19 | ) 20 | 21 | (layers 22 | (0 F.Cu signal) 23 | (31 B.Cu signal) 24 | (34 B.Paste user) 25 | (35 F.Paste user) 26 | (36 B.SilkS user) 27 | (37 F.SilkS user) 28 | (38 B.Mask user) 29 | (39 F.Mask user) 30 | (40 Dwgs.User user) 31 | (44 Edge.Cuts user) 32 | (45 Margin user) 33 | (46 B.CrtYd user) 34 | (47 F.CrtYd user) 35 | (48 B.Fab user) 36 | (49 F.Fab user) 37 | ) 38 | 39 | (setup 40 | (last_trace_width 0.1524) 41 | (user_trace_width 0.254) 42 | (user_trace_width 0.254) 43 | (user_trace_width 0.254) 44 | (user_trace_width 0.254) 45 | (user_trace_width 0.254) 46 | (user_trace_width 0.254) 47 | (user_trace_width 0.254) 48 | (user_trace_width 0.254) 49 | (user_trace_width 0.254) 50 | (user_trace_width 0.254) 51 | (user_trace_width 0.254) 52 | (user_trace_width 0.254) 53 | (user_trace_width 0.254) 54 | (user_trace_width 0.254) 55 | (user_trace_width 0.254) 56 | (user_trace_width 0.254) 57 | (user_trace_width 0.254) 58 | (user_trace_width 0.254) 59 | (user_trace_width 0.254) 60 | (user_trace_width 0.254) 61 | (user_trace_width 0.254) 62 | (user_trace_width 0.254) 63 | (user_trace_width 0.254) 64 | (user_trace_width 0.254) 65 | (user_trace_width 0.254) 66 | (user_trace_width 0.254) 67 | (user_trace_width 0.254) 68 | (user_trace_width 0.254) 69 | (user_trace_width 0.254) 70 | (user_trace_width 0.254) 71 | (user_trace_width 0.254) 72 | (user_trace_width 0.254) 73 | (user_trace_width 0.254) 74 | (user_trace_width 0.254) 75 | (user_trace_width 0.254) 76 | (user_trace_width 0.254) 77 | (user_trace_width 0.254) 78 | (user_trace_width 0.254) 79 | (user_trace_width 0.254) 80 | (user_trace_width 0.254) 81 | (user_trace_width 0.254) 82 | (user_trace_width 0.254) 83 | (user_trace_width 0.254) 84 | (user_trace_width 0.254) 85 | (user_trace_width 0.254) 86 | (user_trace_width 0.254) 87 | (trace_clearance 0.1524) 88 | (zone_clearance 0.1524) 89 | (zone_45_only yes) 90 | (trace_min 0.1524) 91 | (segment_width 0.2) 92 | (edge_width 0.2) 93 | (via_size 0.6858) 94 | (via_drill 0.3302) 95 | (via_min_size 0.508) 96 | (via_min_drill 0.254) 97 | (uvia_size 0.6858) 98 | (uvia_drill 0.3302) 99 | (uvias_allowed no) 100 | (uvia_min_size 0.2) 101 | (uvia_min_drill 0.1) 102 | (pcb_text_width 0.3) 103 | (pcb_text_size 1.5 1.5) 104 | (mod_edge_width 0.15) 105 | (mod_text_size 1 1) 106 | (mod_text_width 0.15) 107 | (pad_size 1.7 1.7) 108 | (pad_drill 1) 109 | (pad_to_mask_clearance 0.0508) 110 | (solder_mask_min_width 0.25) 111 | (aux_axis_origin 0 0) 112 | (visible_elements 7FFFF77F) 113 | (pcbplotparams 114 | (layerselection 0x010f0_ffffffff) 115 | (usegerberextensions true) 116 | (usegerberattributes true) 117 | (usegerberadvancedattributes false) 118 | (creategerberjobfile false) 119 | (excludeedgelayer true) 120 | (linewidth 0.150000) 121 | (plotframeref false) 122 | (viasonmask false) 123 | (mode 1) 124 | (useauxorigin false) 125 | (hpglpennumber 1) 126 | (hpglpenspeed 20) 127 | (hpglpendiameter 15.000000) 128 | (psnegative false) 129 | (psa4output false) 130 | (plotreference true) 131 | (plotvalue true) 132 | (plotinvisibletext false) 133 | (padsonsilk false) 134 | (subtractmaskfromsilk false) 135 | (outputformat 1) 136 | (mirror false) 137 | (drillshape 0) 138 | (scaleselection 1) 139 | (outputdirectory "../../Gerbers/S80 Serial/")) 140 | ) 141 | 142 | (net 0 "") 143 | 144 | (net_class Default "This is the default net class." 145 | (clearance 0.1524) 146 | (trace_width 0.1524) 147 | (via_dia 0.6858) 148 | (via_drill 0.3302) 149 | (uvia_dia 0.6858) 150 | (uvia_drill 0.3302) 151 | (diff_pair_gap 0.254) 152 | (diff_pair_width 0.254) 153 | ) 154 | 155 | (gr_line (start 116.84 139.7) (end 128.27 139.7) (layer Edge.Cuts) (width 0.2)) 156 | (gr_line (start 104.14 139.7) (end 116.84 139.7) (layer Edge.Cuts) (width 0.2)) 157 | (gr_line (start 91.44 139.7) (end 104.14 139.7) (layer Edge.Cuts) (width 0.2)) 158 | (gr_line (start 78.74 139.7) (end 91.44 139.7) (layer Edge.Cuts) (width 0.2)) 159 | (gr_line (start 66.04 139.7) (end 78.74 139.7) (layer Edge.Cuts) (width 0.2)) 160 | (gr_line (start 182.88 139.7) (end 171.45 139.7) (layer Edge.Cuts) (width 0.2)) 161 | (gr_line (start 195.58 139.7) (end 182.88 139.7) (layer Edge.Cuts) (width 0.2)) 162 | (gr_line (start 208.28 139.7) (end 195.58 139.7) (layer Edge.Cuts) (width 0.2)) 163 | (gr_line (start 220.98 139.7) (end 208.28 139.7) (layer Edge.Cuts) (width 0.2)) 164 | (gr_line (start 233.68 139.7) (end 220.98 139.7) (layer Edge.Cuts) (width 0.2)) 165 | (gr_line (start 182.88 66.04) (end 171.45 66.04) (layer Edge.Cuts) (width 0.2)) 166 | (gr_line (start 195.58 66.04) (end 182.88 66.04) (layer Edge.Cuts) (width 0.2)) 167 | (gr_line (start 208.28 66.04) (end 195.58 66.04) (layer Edge.Cuts) (width 0.2)) 168 | (gr_line (start 220.98 66.04) (end 208.28 66.04) (layer Edge.Cuts) (width 0.2)) 169 | (gr_line (start 233.68 66.04) (end 220.98 66.04) (layer Edge.Cuts) (width 0.2)) 170 | (gr_line (start 116.84 66.04) (end 128.27 66.04) (layer Edge.Cuts) (width 0.2)) 171 | (gr_line (start 104.14 66.04) (end 116.84 66.04) (layer Edge.Cuts) (width 0.2)) 172 | (gr_line (start 91.44 66.04) (end 104.14 66.04) (layer Edge.Cuts) (width 0.2)) 173 | (gr_line (start 78.74 66.04) (end 91.44 66.04) (layer Edge.Cuts) (width 0.2)) 174 | (gr_line (start 66.04 66.04) (end 78.74 66.04) (layer Edge.Cuts) (width 0.2)) 175 | (gr_arc (start 233.68 134.62) (end 233.68 139.7) (angle -90) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBED37)) 176 | (gr_arc (start 66.04 134.62) (end 60.96 134.62) (angle -90) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBED52)) 177 | (gr_line (start 171.45 139.7) (end 128.27 139.7) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBED4C)) 178 | (gr_arc (start 182.88 134.62) (end 182.88 139.7) (angle -90) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBEA34)) 179 | (gr_arc (start 220.98 134.62) (end 220.98 139.7) (angle -90) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBEA67)) 180 | (gr_arc (start 128.27 134.62) (end 123.19 134.62) (angle -90) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBEA5B)) 181 | (gr_arc (start 208.28 134.62) (end 208.28 139.7) (angle -90) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBEA6A)) 182 | (gr_arc (start 116.84 134.62) (end 111.76 134.62) (angle -90) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBEA40)) 183 | (gr_arc (start 91.44 134.62) (end 86.36 134.62) (angle -90) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBEA61)) 184 | (gr_arc (start 78.74 134.62) (end 73.66 134.62) (angle -90) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBEA58)) 185 | (gr_arc (start 171.45 134.62) (end 171.45 139.7) (angle -90) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBEA49)) 186 | (gr_arc (start 195.58 134.62) (end 195.58 139.7) (angle -90) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBEA70)) 187 | (gr_arc (start 104.14 134.62) (end 99.06 134.62) (angle -90) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBEA31)) 188 | (gr_line (start 123.19 71.12) (end 123.19 134.62) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBEAB2)) 189 | (gr_arc (start 128.27 71.12) (end 128.27 66.04) (angle -90) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBEA2E)) 190 | (gr_line (start 59.69 102.87) (end 55.88 102.87) (layer Dwgs.User) (width 0.2) (tstamp 5BEBE9FB)) 191 | (gr_text "Stackable Z80 Retro Computer" (at 149.86 68.6402) (layer B.SilkS) (tstamp 5BEBECB9) 192 | (effects (font (size 3 2) (thickness 0.25)) (justify mirror)) 193 | ) 194 | (gr_text "Stackable Z80 Retro Computer" (at 149.86 68.6402) (layer F.SilkS) (tstamp 5BEBECB6) 195 | (effects (font (size 3 2) (thickness 0.25))) 196 | ) 197 | (gr_line (start 171.45 66.04) (end 128.27 66.04) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBED25)) 198 | (gr_arc (start 66.04 71.12) (end 66.04 66.04) (angle -90) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBED3A)) 199 | (gr_line (start 60.96 71.12) (end 60.96 134.62) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBED43)) 200 | (gr_line (start 238.76 71.12) (end 238.76 134.62) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBED31)) 201 | (gr_arc (start 233.68 71.12) (end 238.76 71.12) (angle -90) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBED2B)) 202 | (gr_line (start 213.36 71.12) (end 213.36 134.62) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBEA7C)) 203 | (gr_line (start 200.66 71.12) (end 200.66 134.62) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBEAD3)) 204 | (gr_line (start 187.96 71.12) (end 187.96 134.62) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBEAD0)) 205 | (gr_line (start 176.53 71.12) (end 176.53 134.62) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBEA79)) 206 | (gr_line (start 111.76 71.12) (end 111.76 134.62) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBEAC7)) 207 | (gr_line (start 99.06 71.12) (end 99.06 134.62) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBEAAF)) 208 | (gr_line (start 86.36 71.12) (end 86.36 134.62) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBEAAC)) 209 | (gr_arc (start 171.45 71.12) (end 176.53 71.12) (angle -90) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBEAA0)) 210 | (gr_arc (start 182.88 71.12) (end 187.96 71.12) (angle -90) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBEA9D)) 211 | (gr_arc (start 195.58 71.12) (end 200.66 71.12) (angle -90) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBEA52)) 212 | (gr_arc (start 116.84 71.12) (end 116.84 66.04) (angle -90) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBEA4F)) 213 | (gr_arc (start 91.44 71.12) (end 91.44 66.04) (angle -90) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBEA3D)) 214 | (gr_arc (start 104.14 71.12) (end 104.14 66.04) (angle -90) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBEA3A)) 215 | (gr_arc (start 208.28 71.12) (end 213.36 71.12) (angle -90) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBEA6D)) 216 | (gr_line (start 73.66 71.12) (end 73.66 134.62) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBEA4C)) 217 | (gr_line (start 226.06 71.12) (end 226.06 134.62) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBEA37)) 218 | (gr_arc (start 220.98 71.12) (end 226.06 71.12) (angle -90) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBEA64)) 219 | (gr_arc (start 78.74 71.12) (end 78.74 66.04) (angle -90) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBEA46)) 220 | (gr_line (start 240.03 102.87) (end 243.84 102.87) (layer Dwgs.User) (width 0.2) (tstamp 5BEBE9EC)) 221 | (gr_line (start 149.86 140.97) (end 149.86 144.78) (layer Dwgs.User) (width 0.2) (tstamp 5BEBE9CE)) 222 | (gr_line (start 149.86 64.77) (end 149.86 63.5) (layer Dwgs.User) (width 0.2) (tstamp 5BEBE9CB)) 223 | (gr_line (start 241.3 60.96) (end 241.3 142.24) (layer Dwgs.User) (width 0.2) (tstamp 5BEBE9C5)) 224 | (gr_line (start 172.72 60.96) (end 241.3 60.96) (layer Dwgs.User) (width 0.2) (tstamp 5BEBE9C2)) 225 | (gr_line (start 58.42 142.24) (end 58.42 60.96) (layer Dwgs.User) (width 0.2) (tstamp 5BEBE9D7)) 226 | (gr_line (start 241.3 142.24) (end 58.42 142.24) (layer Dwgs.User) (width 0.2) (tstamp 5BEBE9E3)) 227 | (gr_line (start 127.05842 60.95746) (end 58.42 60.96) (layer Dwgs.User) (width 0.2) (tstamp 5BEBE9BF)) 228 | (gr_text "S80 Template" (at 149.86 60.96) (layer Dwgs.User) (tstamp 5B5A3486) 229 | (effects (font (size 3.81 3.81) (thickness 0.508))) 230 | ) 231 | 232 | ) 233 | -------------------------------------------------------------------------------- /Projects/S80-Library/S80-Template.kicad_pcb: -------------------------------------------------------------------------------- 1 | (kicad_pcb (version 20171130) (host pcbnew "(5.0.1)-4") 2 | 3 | (general 4 | (thickness 1.6) 5 | (drawings 70) 6 | (tracks 0) 7 | (zones 0) 8 | (modules 0) 9 | (nets 1) 10 | ) 11 | 12 | (page A4) 13 | (title_block 14 | (title "S80 - Stackable Z80") 15 | (date 2018-10-22) 16 | (rev 1.0) 17 | (comment 1 "Original Design Copyright (c) 2018 by R&F Pynckels") 18 | (comment 2 "RetroZ Adaptation Copyright(c) 2019 by J.P. Gravel") 19 | ) 20 | 21 | (layers 22 | (0 F.Cu signal) 23 | (31 B.Cu signal) 24 | (34 B.Paste user) 25 | (35 F.Paste user) 26 | (36 B.SilkS user) 27 | (37 F.SilkS user) 28 | (38 B.Mask user) 29 | (39 F.Mask user) 30 | (40 Dwgs.User user) 31 | (44 Edge.Cuts user) 32 | (45 Margin user) 33 | (46 B.CrtYd user) 34 | (47 F.CrtYd user) 35 | (48 B.Fab user) 36 | (49 F.Fab user) 37 | ) 38 | 39 | (setup 40 | (last_trace_width 0.1524) 41 | (user_trace_width 0.254) 42 | (user_trace_width 0.254) 43 | (user_trace_width 0.254) 44 | (user_trace_width 0.254) 45 | (user_trace_width 0.254) 46 | (user_trace_width 0.254) 47 | (user_trace_width 0.254) 48 | (user_trace_width 0.254) 49 | (user_trace_width 0.254) 50 | (user_trace_width 0.254) 51 | (user_trace_width 0.254) 52 | (user_trace_width 0.254) 53 | (user_trace_width 0.254) 54 | (user_trace_width 0.254) 55 | (user_trace_width 0.254) 56 | (user_trace_width 0.254) 57 | (user_trace_width 0.254) 58 | (user_trace_width 0.254) 59 | (user_trace_width 0.254) 60 | (user_trace_width 0.254) 61 | (user_trace_width 0.254) 62 | (user_trace_width 0.254) 63 | (user_trace_width 0.254) 64 | (user_trace_width 0.254) 65 | (user_trace_width 0.254) 66 | (user_trace_width 0.254) 67 | (user_trace_width 0.254) 68 | (user_trace_width 0.254) 69 | (user_trace_width 0.254) 70 | (user_trace_width 0.254) 71 | (user_trace_width 0.254) 72 | (user_trace_width 0.254) 73 | (user_trace_width 0.254) 74 | (user_trace_width 0.254) 75 | (user_trace_width 0.254) 76 | (user_trace_width 0.254) 77 | (user_trace_width 0.254) 78 | (user_trace_width 0.254) 79 | (user_trace_width 0.254) 80 | (user_trace_width 0.254) 81 | (user_trace_width 0.254) 82 | (user_trace_width 0.254) 83 | (user_trace_width 0.254) 84 | (user_trace_width 0.254) 85 | (user_trace_width 0.254) 86 | (user_trace_width 0.254) 87 | (trace_clearance 0.1524) 88 | (zone_clearance 0.1524) 89 | (zone_45_only yes) 90 | (trace_min 0.1524) 91 | (segment_width 0.2) 92 | (edge_width 0.2) 93 | (via_size 0.6858) 94 | (via_drill 0.3302) 95 | (via_min_size 0.508) 96 | (via_min_drill 0.254) 97 | (uvia_size 0.6858) 98 | (uvia_drill 0.3302) 99 | (uvias_allowed no) 100 | (uvia_min_size 0.2) 101 | (uvia_min_drill 0.1) 102 | (pcb_text_width 0.3) 103 | (pcb_text_size 1.5 1.5) 104 | (mod_edge_width 0.15) 105 | (mod_text_size 1 1) 106 | (mod_text_width 0.15) 107 | (pad_size 1.7 1.7) 108 | (pad_drill 1) 109 | (pad_to_mask_clearance 0.0508) 110 | (solder_mask_min_width 0.25) 111 | (aux_axis_origin 0 0) 112 | (visible_elements 7FFFF77F) 113 | (pcbplotparams 114 | (layerselection 0x010f0_ffffffff) 115 | (usegerberextensions true) 116 | (usegerberattributes true) 117 | (usegerberadvancedattributes false) 118 | (creategerberjobfile false) 119 | (excludeedgelayer true) 120 | (linewidth 0.150000) 121 | (plotframeref false) 122 | (viasonmask false) 123 | (mode 1) 124 | (useauxorigin false) 125 | (hpglpennumber 1) 126 | (hpglpenspeed 20) 127 | (hpglpendiameter 15.000000) 128 | (psnegative false) 129 | (psa4output false) 130 | (plotreference true) 131 | (plotvalue true) 132 | (plotinvisibletext false) 133 | (padsonsilk false) 134 | (subtractmaskfromsilk false) 135 | (outputformat 1) 136 | (mirror false) 137 | (drillshape 0) 138 | (scaleselection 1) 139 | (outputdirectory "../../Gerbers/S80 Serial/")) 140 | ) 141 | 142 | (net 0 "") 143 | 144 | (net_class Default "This is the default net class." 145 | (clearance 0.1524) 146 | (trace_width 0.1524) 147 | (via_dia 0.6858) 148 | (via_drill 0.3302) 149 | (uvia_dia 0.6858) 150 | (uvia_drill 0.3302) 151 | (diff_pair_gap 0.254) 152 | (diff_pair_width 0.254) 153 | ) 154 | 155 | (gr_line (start 116.84 139.7) (end 128.27 139.7) (layer Edge.Cuts) (width 0.2)) 156 | (gr_line (start 104.14 139.7) (end 116.84 139.7) (layer Edge.Cuts) (width 0.2)) 157 | (gr_line (start 91.44 139.7) (end 104.14 139.7) (layer Edge.Cuts) (width 0.2)) 158 | (gr_line (start 78.74 139.7) (end 91.44 139.7) (layer Edge.Cuts) (width 0.2)) 159 | (gr_line (start 66.04 139.7) (end 78.74 139.7) (layer Edge.Cuts) (width 0.2)) 160 | (gr_line (start 182.88 139.7) (end 171.45 139.7) (layer Edge.Cuts) (width 0.2)) 161 | (gr_line (start 195.58 139.7) (end 182.88 139.7) (layer Edge.Cuts) (width 0.2)) 162 | (gr_line (start 208.28 139.7) (end 195.58 139.7) (layer Edge.Cuts) (width 0.2)) 163 | (gr_line (start 220.98 139.7) (end 208.28 139.7) (layer Edge.Cuts) (width 0.2)) 164 | (gr_line (start 233.68 139.7) (end 220.98 139.7) (layer Edge.Cuts) (width 0.2)) 165 | (gr_line (start 182.88 66.04) (end 171.45 66.04) (layer Edge.Cuts) (width 0.2)) 166 | (gr_line (start 195.58 66.04) (end 182.88 66.04) (layer Edge.Cuts) (width 0.2)) 167 | (gr_line (start 208.28 66.04) (end 195.58 66.04) (layer Edge.Cuts) (width 0.2)) 168 | (gr_line (start 220.98 66.04) (end 208.28 66.04) (layer Edge.Cuts) (width 0.2)) 169 | (gr_line (start 233.68 66.04) (end 220.98 66.04) (layer Edge.Cuts) (width 0.2)) 170 | (gr_line (start 116.84 66.04) (end 128.27 66.04) (layer Edge.Cuts) (width 0.2)) 171 | (gr_line (start 104.14 66.04) (end 116.84 66.04) (layer Edge.Cuts) (width 0.2)) 172 | (gr_line (start 91.44 66.04) (end 104.14 66.04) (layer Edge.Cuts) (width 0.2)) 173 | (gr_line (start 78.74 66.04) (end 91.44 66.04) (layer Edge.Cuts) (width 0.2)) 174 | (gr_line (start 66.04 66.04) (end 78.74 66.04) (layer Edge.Cuts) (width 0.2)) 175 | (gr_arc (start 233.68 134.62) (end 233.68 139.7) (angle -90) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBED37)) 176 | (gr_arc (start 66.04 134.62) (end 60.96 134.62) (angle -90) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBED52)) 177 | (gr_line (start 171.45 139.7) (end 128.27 139.7) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBED4C)) 178 | (gr_arc (start 182.88 134.62) (end 182.88 139.7) (angle -90) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBEA34)) 179 | (gr_arc (start 220.98 134.62) (end 220.98 139.7) (angle -90) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBEA67)) 180 | (gr_arc (start 128.27 134.62) (end 123.19 134.62) (angle -90) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBEA5B)) 181 | (gr_arc (start 208.28 134.62) (end 208.28 139.7) (angle -90) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBEA6A)) 182 | (gr_arc (start 116.84 134.62) (end 111.76 134.62) (angle -90) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBEA40)) 183 | (gr_arc (start 91.44 134.62) (end 86.36 134.62) (angle -90) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBEA61)) 184 | (gr_arc (start 78.74 134.62) (end 73.66 134.62) (angle -90) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBEA58)) 185 | (gr_arc (start 171.45 134.62) (end 171.45 139.7) (angle -90) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBEA49)) 186 | (gr_arc (start 195.58 134.62) (end 195.58 139.7) (angle -90) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBEA70)) 187 | (gr_arc (start 104.14 134.62) (end 99.06 134.62) (angle -90) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBEA31)) 188 | (gr_line (start 123.19 71.12) (end 123.19 134.62) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBEAB2)) 189 | (gr_arc (start 128.27 71.12) (end 128.27 66.04) (angle -90) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBEA2E)) 190 | (gr_line (start 59.69 102.87) (end 55.88 102.87) (layer Dwgs.User) (width 0.2) (tstamp 5BEBE9FB)) 191 | (gr_text "Stackable Z80 Retro Computer" (at 149.86 68.6402) (layer B.SilkS) (tstamp 5BEBECB9) 192 | (effects (font (size 3 2) (thickness 0.25)) (justify mirror)) 193 | ) 194 | (gr_text "Stackable Z80 Retro Computer" (at 149.86 68.6402) (layer F.SilkS) (tstamp 5BEBECB6) 195 | (effects (font (size 3 2) (thickness 0.25))) 196 | ) 197 | (gr_line (start 171.45 66.04) (end 128.27 66.04) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBED25)) 198 | (gr_arc (start 66.04 71.12) (end 66.04 66.04) (angle -90) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBED3A)) 199 | (gr_line (start 60.96 71.12) (end 60.96 134.62) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBED43)) 200 | (gr_line (start 238.76 71.12) (end 238.76 134.62) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBED31)) 201 | (gr_arc (start 233.68 71.12) (end 238.76 71.12) (angle -90) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBED2B)) 202 | (gr_line (start 213.36 71.12) (end 213.36 134.62) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBEA7C)) 203 | (gr_line (start 200.66 71.12) (end 200.66 134.62) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBEAD3)) 204 | (gr_line (start 187.96 71.12) (end 187.96 134.62) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBEAD0)) 205 | (gr_line (start 176.53 71.12) (end 176.53 134.62) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBEA79)) 206 | (gr_line (start 111.76 71.12) (end 111.76 134.62) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBEAC7)) 207 | (gr_line (start 99.06 71.12) (end 99.06 134.62) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBEAAF)) 208 | (gr_line (start 86.36 71.12) (end 86.36 134.62) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBEAAC)) 209 | (gr_arc (start 171.45 71.12) (end 176.53 71.12) (angle -90) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBEAA0)) 210 | (gr_arc (start 182.88 71.12) (end 187.96 71.12) (angle -90) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBEA9D)) 211 | (gr_arc (start 195.58 71.12) (end 200.66 71.12) (angle -90) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBEA52)) 212 | (gr_arc (start 116.84 71.12) (end 116.84 66.04) (angle -90) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBEA4F)) 213 | (gr_arc (start 91.44 71.12) (end 91.44 66.04) (angle -90) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBEA3D)) 214 | (gr_arc (start 104.14 71.12) (end 104.14 66.04) (angle -90) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBEA3A)) 215 | (gr_arc (start 208.28 71.12) (end 213.36 71.12) (angle -90) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBEA6D)) 216 | (gr_line (start 73.66 71.12) (end 73.66 134.62) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBEA4C)) 217 | (gr_line (start 226.06 71.12) (end 226.06 134.62) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBEA37)) 218 | (gr_arc (start 220.98 71.12) (end 226.06 71.12) (angle -90) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBEA64)) 219 | (gr_arc (start 78.74 71.12) (end 78.74 66.04) (angle -90) (layer Edge.Cuts) (width 0.2) (tstamp 5BEBEA46)) 220 | (gr_line (start 240.03 102.87) (end 243.84 102.87) (layer Dwgs.User) (width 0.2) (tstamp 5BEBE9EC)) 221 | (gr_line (start 149.86 140.97) (end 149.86 144.78) (layer Dwgs.User) (width 0.2) (tstamp 5BEBE9CE)) 222 | (gr_line (start 149.86 64.77) (end 149.86 63.5) (layer Dwgs.User) (width 0.2) (tstamp 5BEBE9CB)) 223 | (gr_line (start 241.3 60.96) (end 241.3 142.24) (layer Dwgs.User) (width 0.2) (tstamp 5BEBE9C5)) 224 | (gr_line (start 172.72 60.96) (end 241.3 60.96) (layer Dwgs.User) (width 0.2) (tstamp 5BEBE9C2)) 225 | (gr_line (start 58.42 142.24) (end 58.42 60.96) (layer Dwgs.User) (width 0.2) (tstamp 5BEBE9D7)) 226 | (gr_line (start 241.3 142.24) (end 58.42 142.24) (layer Dwgs.User) (width 0.2) (tstamp 5BEBE9E3)) 227 | (gr_line (start 127.05842 60.95746) (end 58.42 60.96) (layer Dwgs.User) (width 0.2) (tstamp 5BEBE9BF)) 228 | (gr_text "S80 Template" (at 149.86 60.96) (layer Dwgs.User) (tstamp 5B5A3486) 229 | (effects (font (size 3.81 3.81) (thickness 0.508))) 230 | ) 231 | 232 | ) 233 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /Libraries/SamacSys_Parts.mod: -------------------------------------------------------------------------------- 1 | PCBNEW-LibModule-V1 2 | # encoding utf-8 3 | Units mm 4 | $INDEX 5 | SOIC127P600X175-8N 6 | DIP1587W140P254L3632H381Q28N 7 | DIP1556W56P254L3702H483Q28N 8 | SOT96P237X112-3N 9 | $EndINDEX 10 | $MODULE SOT96P237X112-3N 11 | Po 0 0 0 15 5c20746c 00000000 ~~ 12 | Li SOT96P237X112-3N 13 | Cd RT-3 (SOT-23) 14 | Kw Integrated Circuit 15 | Sc 0 16 | At SMD 17 | AR 18 | Op 0 0 0 19 | T0 0 0 1.27 1.27 0 0.254 N V 21 N "IC**" 20 | T1 0 0 1.27 1.27 0 0.254 N I 21 N "SOT96P237X112-3N" 21 | DS -1.925 -1.77 1.925 -1.77 0.05 24 22 | DS 1.925 -1.77 1.925 1.77 0.05 24 23 | DS 1.925 1.77 -1.925 1.77 0.05 24 24 | DS -1.925 1.77 -1.925 -1.77 0.05 24 25 | DS -0.65 -1.46 0.65 -1.46 0.1 24 26 | DS 0.65 -1.46 0.65 1.46 0.1 24 27 | DS 0.65 1.46 -0.65 1.46 0.1 24 28 | DS -0.65 1.46 -0.65 -1.46 0.1 24 29 | DS -0.65 -0.5 0.31 -1.46 0.1 24 30 | DS -0.075 -1.46 0.075 -1.46 0.2 21 31 | DS 0.075 -1.46 0.075 1.46 0.2 21 32 | DS 0.075 1.46 -0.075 1.46 0.2 21 33 | DS -0.075 1.46 -0.075 -1.46 0.2 21 34 | DS -1.675 -1.535 -0.425 -1.535 0.2 21 35 | $PAD 36 | Po -1.05 -0.96 37 | Sh "1" R 0.65 1.25 0 0 900 38 | At SMD N 00888000 39 | Ne 0 "" 40 | $EndPAD 41 | $PAD 42 | Po -1.05 0.96 43 | Sh "2" R 0.65 1.25 0 0 900 44 | At SMD N 00888000 45 | Ne 0 "" 46 | $EndPAD 47 | $PAD 48 | Po 1.05 0 49 | Sh "3" R 0.65 1.25 0 0 900 50 | At SMD N 00888000 51 | Ne 0 "" 52 | $EndPAD 53 | $EndMODULE SOT96P237X112-3N 54 | $MODULE DIP1556W56P254L3702H483Q28N 55 | Po 0 0 0 15 5c204b98 00000000 ~~ 56 | Li DIP1556W56P254L3702H483Q28N 57 | Cd 28P6 58 | Kw Integrated Circuit 59 | Sc 0 60 | At STD 61 | AR 62 | Op 0 0 0 63 | T0 0 0 1.27 1.27 0 0.254 N V 21 N "IC**" 64 | T1 0 0 1.27 1.27 0 0.254 N I 21 N "DIP1556W56P254L3702H483Q28N" 65 | DS -8.767 -18.919 8.767 -18.919 0.05 24 66 | DS 8.767 -18.919 8.767 18.919 0.05 24 67 | DS 8.767 18.919 -8.767 18.919 0.05 24 68 | DS -8.767 18.919 -8.767 -18.919 0.05 24 69 | DS -6.985 -18.669 6.985 -18.669 0.1 24 70 | DS 6.985 -18.669 6.985 18.669 0.1 24 71 | DS 6.985 18.669 -6.985 18.669 0.1 24 72 | DS -6.985 18.669 -6.985 -18.669 0.1 24 73 | DS -6.985 -17.399 -5.715 -18.669 0.1 24 74 | DS -8.358 -18.669 6.985 -18.669 0.2 21 75 | DS -6.985 18.669 6.985 18.669 0.2 21 76 | $PAD 77 | Po -7.779 -16.51 78 | Sh "1" R 1.159 1.159 0 0 900 79 | Dr 0.759 0 0 80 | At STD N 00E0FFFF 81 | Ne 0 "" 82 | $EndPAD 83 | $PAD 84 | Po -7.779 -13.97 85 | Sh "2" C 1.159 1.159 0 0 900 86 | Dr 0.759 0 0 87 | At STD N 00E0FFFF 88 | Ne 0 "" 89 | $EndPAD 90 | $PAD 91 | Po -7.779 -11.43 92 | Sh "3" C 1.159 1.159 0 0 900 93 | Dr 0.759 0 0 94 | At STD N 00E0FFFF 95 | Ne 0 "" 96 | $EndPAD 97 | $PAD 98 | Po -7.779 -8.89 99 | Sh "4" C 1.159 1.159 0 0 900 100 | Dr 0.759 0 0 101 | At STD N 00E0FFFF 102 | Ne 0 "" 103 | $EndPAD 104 | $PAD 105 | Po -7.779 -6.35 106 | Sh "5" C 1.159 1.159 0 0 900 107 | Dr 0.759 0 0 108 | At STD N 00E0FFFF 109 | Ne 0 "" 110 | $EndPAD 111 | $PAD 112 | Po -7.779 -3.81 113 | Sh "6" C 1.159 1.159 0 0 900 114 | Dr 0.759 0 0 115 | At STD N 00E0FFFF 116 | Ne 0 "" 117 | $EndPAD 118 | $PAD 119 | Po -7.779 -1.27 120 | Sh "7" C 1.159 1.159 0 0 900 121 | Dr 0.759 0 0 122 | At STD N 00E0FFFF 123 | Ne 0 "" 124 | $EndPAD 125 | $PAD 126 | Po -7.779 1.27 127 | Sh "8" C 1.159 1.159 0 0 900 128 | Dr 0.759 0 0 129 | At STD N 00E0FFFF 130 | Ne 0 "" 131 | $EndPAD 132 | $PAD 133 | Po -7.779 3.81 134 | Sh "9" C 1.159 1.159 0 0 900 135 | Dr 0.759 0 0 136 | At STD N 00E0FFFF 137 | Ne 0 "" 138 | $EndPAD 139 | $PAD 140 | Po -7.779 6.35 141 | Sh "10" C 1.159 1.159 0 0 900 142 | Dr 0.759 0 0 143 | At STD N 00E0FFFF 144 | Ne 0 "" 145 | $EndPAD 146 | $PAD 147 | Po -7.779 8.89 148 | Sh "11" C 1.159 1.159 0 0 900 149 | Dr 0.759 0 0 150 | At STD N 00E0FFFF 151 | Ne 0 "" 152 | $EndPAD 153 | $PAD 154 | Po -7.779 11.43 155 | Sh "12" C 1.159 1.159 0 0 900 156 | Dr 0.759 0 0 157 | At STD N 00E0FFFF 158 | Ne 0 "" 159 | $EndPAD 160 | $PAD 161 | Po -7.779 13.97 162 | Sh "13" C 1.159 1.159 0 0 900 163 | Dr 0.759 0 0 164 | At STD N 00E0FFFF 165 | Ne 0 "" 166 | $EndPAD 167 | $PAD 168 | Po -7.779 16.51 169 | Sh "14" C 1.159 1.159 0 0 900 170 | Dr 0.759 0 0 171 | At STD N 00E0FFFF 172 | Ne 0 "" 173 | $EndPAD 174 | $PAD 175 | Po 7.779 16.51 176 | Sh "15" C 1.159 1.159 0 0 900 177 | Dr 0.759 0 0 178 | At STD N 00E0FFFF 179 | Ne 0 "" 180 | $EndPAD 181 | $PAD 182 | Po 7.779 13.97 183 | Sh "16" C 1.159 1.159 0 0 900 184 | Dr 0.759 0 0 185 | At STD N 00E0FFFF 186 | Ne 0 "" 187 | $EndPAD 188 | $PAD 189 | Po 7.779 11.43 190 | Sh "17" C 1.159 1.159 0 0 900 191 | Dr 0.759 0 0 192 | At STD N 00E0FFFF 193 | Ne 0 "" 194 | $EndPAD 195 | $PAD 196 | Po 7.779 8.89 197 | Sh "18" C 1.159 1.159 0 0 900 198 | Dr 0.759 0 0 199 | At STD N 00E0FFFF 200 | Ne 0 "" 201 | $EndPAD 202 | $PAD 203 | Po 7.779 6.35 204 | Sh "19" C 1.159 1.159 0 0 900 205 | Dr 0.759 0 0 206 | At STD N 00E0FFFF 207 | Ne 0 "" 208 | $EndPAD 209 | $PAD 210 | Po 7.779 3.81 211 | Sh "20" C 1.159 1.159 0 0 900 212 | Dr 0.759 0 0 213 | At STD N 00E0FFFF 214 | Ne 0 "" 215 | $EndPAD 216 | $PAD 217 | Po 7.779 1.27 218 | Sh "21" C 1.159 1.159 0 0 900 219 | Dr 0.759 0 0 220 | At STD N 00E0FFFF 221 | Ne 0 "" 222 | $EndPAD 223 | $PAD 224 | Po 7.779 -1.27 225 | Sh "22" C 1.159 1.159 0 0 900 226 | Dr 0.759 0 0 227 | At STD N 00E0FFFF 228 | Ne 0 "" 229 | $EndPAD 230 | $PAD 231 | Po 7.779 -3.81 232 | Sh "23" C 1.159 1.159 0 0 900 233 | Dr 0.759 0 0 234 | At STD N 00E0FFFF 235 | Ne 0 "" 236 | $EndPAD 237 | $PAD 238 | Po 7.779 -6.35 239 | Sh "24" C 1.159 1.159 0 0 900 240 | Dr 0.759 0 0 241 | At STD N 00E0FFFF 242 | Ne 0 "" 243 | $EndPAD 244 | $PAD 245 | Po 7.779 -8.89 246 | Sh "25" C 1.159 1.159 0 0 900 247 | Dr 0.759 0 0 248 | At STD N 00E0FFFF 249 | Ne 0 "" 250 | $EndPAD 251 | $PAD 252 | Po 7.779 -11.43 253 | Sh "26" C 1.159 1.159 0 0 900 254 | Dr 0.759 0 0 255 | At STD N 00E0FFFF 256 | Ne 0 "" 257 | $EndPAD 258 | $PAD 259 | Po 7.779 -13.97 260 | Sh "27" C 1.159 1.159 0 0 900 261 | Dr 0.759 0 0 262 | At STD N 00E0FFFF 263 | Ne 0 "" 264 | $EndPAD 265 | $PAD 266 | Po 7.779 -16.51 267 | Sh "28" C 1.159 1.159 0 0 900 268 | Dr 0.759 0 0 269 | At STD N 00E0FFFF 270 | Ne 0 "" 271 | $EndPAD 272 | $EndMODULE DIP1556W56P254L3702H483Q28N 273 | $MODULE DIP1587W140P254L3632H381Q28N 274 | Po 0 0 0 15 5c204a46 00000000 ~~ 275 | Li DIP1587W140P254L3632H381Q28N 276 | Cd AS6C62256 277 | Kw Integrated Circuit 278 | Sc 0 279 | At STD 280 | AR 281 | Op 0 0 0 282 | T0 0 0 1.27 1.27 0 0.254 N V 21 N "IC**" 283 | T1 0 0 1.27 1.27 0 0.254 N I 21 N "DIP1587W140P254L3632H381Q28N" 284 | DS -9.184 -18.411 9.184 -18.411 0.05 24 285 | DS 9.184 -18.411 9.184 18.411 0.05 24 286 | DS 9.184 18.411 -9.184 18.411 0.05 24 287 | DS -9.184 18.411 -9.184 -18.411 0.05 24 288 | DS -6.604 -18.161 6.604 -18.161 0.1 24 289 | DS 6.604 -18.161 6.604 18.161 0.1 24 290 | DS 6.604 18.161 -6.604 18.161 0.1 24 291 | DS -6.604 18.161 -6.604 -18.161 0.1 24 292 | DS -6.604 -16.891 -5.334 -18.161 0.1 24 293 | DS -8.934 -18.161 6.604 -18.161 0.2 21 294 | DS -6.604 18.161 6.604 18.161 0.2 21 295 | $PAD 296 | Po -7.935 -16.51 297 | Sh "1" R 1.997 1.997 0 0 900 298 | Dr 1.597 0 0 299 | At STD N 00E0FFFF 300 | Ne 0 "" 301 | $EndPAD 302 | $PAD 303 | Po -7.935 -13.97 304 | Sh "2" C 1.997 1.997 0 0 900 305 | Dr 1.597 0 0 306 | At STD N 00E0FFFF 307 | Ne 0 "" 308 | $EndPAD 309 | $PAD 310 | Po -7.935 -11.43 311 | Sh "3" C 1.997 1.997 0 0 900 312 | Dr 1.597 0 0 313 | At STD N 00E0FFFF 314 | Ne 0 "" 315 | $EndPAD 316 | $PAD 317 | Po -7.935 -8.89 318 | Sh "4" C 1.997 1.997 0 0 900 319 | Dr 1.597 0 0 320 | At STD N 00E0FFFF 321 | Ne 0 "" 322 | $EndPAD 323 | $PAD 324 | Po -7.935 -6.35 325 | Sh "5" C 1.997 1.997 0 0 900 326 | Dr 1.597 0 0 327 | At STD N 00E0FFFF 328 | Ne 0 "" 329 | $EndPAD 330 | $PAD 331 | Po -7.935 -3.81 332 | Sh "6" C 1.997 1.997 0 0 900 333 | Dr 1.597 0 0 334 | At STD N 00E0FFFF 335 | Ne 0 "" 336 | $EndPAD 337 | $PAD 338 | Po -7.935 -1.27 339 | Sh "7" C 1.997 1.997 0 0 900 340 | Dr 1.597 0 0 341 | At STD N 00E0FFFF 342 | Ne 0 "" 343 | $EndPAD 344 | $PAD 345 | Po -7.935 1.27 346 | Sh "8" C 1.997 1.997 0 0 900 347 | Dr 1.597 0 0 348 | At STD N 00E0FFFF 349 | Ne 0 "" 350 | $EndPAD 351 | $PAD 352 | Po -7.935 3.81 353 | Sh "9" C 1.997 1.997 0 0 900 354 | Dr 1.597 0 0 355 | At STD N 00E0FFFF 356 | Ne 0 "" 357 | $EndPAD 358 | $PAD 359 | Po -7.935 6.35 360 | Sh "10" C 1.997 1.997 0 0 900 361 | Dr 1.597 0 0 362 | At STD N 00E0FFFF 363 | Ne 0 "" 364 | $EndPAD 365 | $PAD 366 | Po -7.935 8.89 367 | Sh "11" C 1.997 1.997 0 0 900 368 | Dr 1.597 0 0 369 | At STD N 00E0FFFF 370 | Ne 0 "" 371 | $EndPAD 372 | $PAD 373 | Po -7.935 11.43 374 | Sh "12" C 1.997 1.997 0 0 900 375 | Dr 1.597 0 0 376 | At STD N 00E0FFFF 377 | Ne 0 "" 378 | $EndPAD 379 | $PAD 380 | Po -7.935 13.97 381 | Sh "13" C 1.997 1.997 0 0 900 382 | Dr 1.597 0 0 383 | At STD N 00E0FFFF 384 | Ne 0 "" 385 | $EndPAD 386 | $PAD 387 | Po -7.935 16.51 388 | Sh "14" C 1.997 1.997 0 0 900 389 | Dr 1.597 0 0 390 | At STD N 00E0FFFF 391 | Ne 0 "" 392 | $EndPAD 393 | $PAD 394 | Po 7.935 16.51 395 | Sh "15" C 1.997 1.997 0 0 900 396 | Dr 1.597 0 0 397 | At STD N 00E0FFFF 398 | Ne 0 "" 399 | $EndPAD 400 | $PAD 401 | Po 7.935 13.97 402 | Sh "16" C 1.997 1.997 0 0 900 403 | Dr 1.597 0 0 404 | At STD N 00E0FFFF 405 | Ne 0 "" 406 | $EndPAD 407 | $PAD 408 | Po 7.935 11.43 409 | Sh "17" C 1.997 1.997 0 0 900 410 | Dr 1.597 0 0 411 | At STD N 00E0FFFF 412 | Ne 0 "" 413 | $EndPAD 414 | $PAD 415 | Po 7.935 8.89 416 | Sh "18" C 1.997 1.997 0 0 900 417 | Dr 1.597 0 0 418 | At STD N 00E0FFFF 419 | Ne 0 "" 420 | $EndPAD 421 | $PAD 422 | Po 7.935 6.35 423 | Sh "19" C 1.997 1.997 0 0 900 424 | Dr 1.597 0 0 425 | At STD N 00E0FFFF 426 | Ne 0 "" 427 | $EndPAD 428 | $PAD 429 | Po 7.935 3.81 430 | Sh "20" C 1.997 1.997 0 0 900 431 | Dr 1.597 0 0 432 | At STD N 00E0FFFF 433 | Ne 0 "" 434 | $EndPAD 435 | $PAD 436 | Po 7.935 1.27 437 | Sh "21" C 1.997 1.997 0 0 900 438 | Dr 1.597 0 0 439 | At STD N 00E0FFFF 440 | Ne 0 "" 441 | $EndPAD 442 | $PAD 443 | Po 7.935 -1.27 444 | Sh "22" C 1.997 1.997 0 0 900 445 | Dr 1.597 0 0 446 | At STD N 00E0FFFF 447 | Ne 0 "" 448 | $EndPAD 449 | $PAD 450 | Po 7.935 -3.81 451 | Sh "23" C 1.997 1.997 0 0 900 452 | Dr 1.597 0 0 453 | At STD N 00E0FFFF 454 | Ne 0 "" 455 | $EndPAD 456 | $PAD 457 | Po 7.935 -6.35 458 | Sh "24" C 1.997 1.997 0 0 900 459 | Dr 1.597 0 0 460 | At STD N 00E0FFFF 461 | Ne 0 "" 462 | $EndPAD 463 | $PAD 464 | Po 7.935 -8.89 465 | Sh "25" C 1.997 1.997 0 0 900 466 | Dr 1.597 0 0 467 | At STD N 00E0FFFF 468 | Ne 0 "" 469 | $EndPAD 470 | $PAD 471 | Po 7.935 -11.43 472 | Sh "26" C 1.997 1.997 0 0 900 473 | Dr 1.597 0 0 474 | At STD N 00E0FFFF 475 | Ne 0 "" 476 | $EndPAD 477 | $PAD 478 | Po 7.935 -13.97 479 | Sh "27" C 1.997 1.997 0 0 900 480 | Dr 1.597 0 0 481 | At STD N 00E0FFFF 482 | Ne 0 "" 483 | $EndPAD 484 | $PAD 485 | Po 7.935 -16.51 486 | Sh "28" C 1.997 1.997 0 0 900 487 | Dr 1.597 0 0 488 | At STD N 00E0FFFF 489 | Ne 0 "" 490 | $EndPAD 491 | $EndMODULE DIP1587W140P254L3632H381Q28N 492 | $MODULE SOIC127P600X175-8N 493 | Po 0 0 0 15 58bec2a6 00000000 ~~ 494 | Li SOIC127P600X175-8N 495 | Cd D (R-PDSO-G8) 496 | Kw Integrated Circuit 497 | Sc 0 498 | At SMD 499 | AR 500 | Op 0 0 0 501 | T0 0 0 1.27 1.27 0 0.254 N V 21 N "IC**" 502 | T1 0 0 1.27 1.27 0 0.254 N I 21 N "SOIC127P600X175-8N" 503 | DS -3.725 -2.75 3.725 -2.75 0.05 24 504 | DS 3.725 -2.75 3.725 2.75 0.05 24 505 | DS 3.725 2.75 -3.725 2.75 0.05 24 506 | DS -3.725 2.75 -3.725 -2.75 0.05 24 507 | DS -1.95 -2.45 1.95 -2.45 0.1 24 508 | DS 1.95 -2.45 1.95 2.45 0.1 24 509 | DS 1.95 2.45 -1.95 2.45 0.1 24 510 | DS -1.95 2.45 -1.95 -2.45 0.1 24 511 | DS -1.95 -1.18 -0.68 -2.45 0.1 24 512 | DS -1.6 -2.45 1.6 -2.45 0.2 21 513 | DS 1.6 -2.45 1.6 2.45 0.2 21 514 | DS 1.6 2.45 -1.6 2.45 0.2 21 515 | DS -1.6 2.45 -1.6 -2.45 0.2 21 516 | DC -3.475 -3.81 -3.158 -3.81 0.254 21 517 | $PAD 518 | Po -2.712 -1.905 519 | Sh "1" R 0.65 1.525 0 0 900 520 | At SMD N 00888000 521 | Ne 0 "" 522 | $EndPAD 523 | $PAD 524 | Po -2.712 -0.635 525 | Sh "2" R 0.65 1.525 0 0 900 526 | At SMD N 00888000 527 | Ne 0 "" 528 | $EndPAD 529 | $PAD 530 | Po -2.712 0.635 531 | Sh "3" R 0.65 1.525 0 0 900 532 | At SMD N 00888000 533 | Ne 0 "" 534 | $EndPAD 535 | $PAD 536 | Po -2.712 1.905 537 | Sh "4" R 0.65 1.525 0 0 900 538 | At SMD N 00888000 539 | Ne 0 "" 540 | $EndPAD 541 | $PAD 542 | Po 2.712 1.905 543 | Sh "5" R 0.65 1.525 0 0 900 544 | At SMD N 00888000 545 | Ne 0 "" 546 | $EndPAD 547 | $PAD 548 | Po 2.712 0.635 549 | Sh "6" R 0.65 1.525 0 0 900 550 | At SMD N 00888000 551 | Ne 0 "" 552 | $EndPAD 553 | $PAD 554 | Po 2.712 -0.635 555 | Sh "7" R 0.65 1.525 0 0 900 556 | At SMD N 00888000 557 | Ne 0 "" 558 | $EndPAD 559 | $PAD 560 | Po 2.712 -1.905 561 | Sh "8" R 0.65 1.525 0 0 900 562 | At SMD N 00888000 563 | Ne 0 "" 564 | $EndPAD 565 | $EndMODULE SOIC127P600X175-8N 566 | $EndLIBRARY 567 | --------------------------------------------------------------------------------