Merge pull request #5 from tjboldt/block0001

Add v3 hardware with firmware in Block 0001
This commit is contained in:
Terence Boldt 2021-12-22 09:40:09 -05:00 committed by GitHub
commit 8f30793ace
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
39 changed files with 24311 additions and 61122 deletions

BIN
Firmware/BlankDriveWithFirmware.po Executable file → Normal file

Binary file not shown.

Binary file not shown.

View File

@ -1,196 +1,185 @@
;Please note this code is assembled seven times,
;once for each slot in the Apple II.
;This allows the card to work in any slot without
;having to write space consuming relocatable code.
writeLatchHigh = $C081
writeLatchLow = $C080
;Install cc65 (on Ubuntu this is: sudo apt install cc65)
;Execute the following commands to generate the binary:
;ca65 Warning.asm -o warning.o
;ca65 Firmware.asm -D SLOT1 -o slot1.o
;ca65 Firmware.asm -D SLOT2 -o slot2.o
;ca65 Firmware.asm -D SLOT3 -o slot3.o
;ca65 Firmware.asm -D SLOT4 -o slot4.o
;ca65 Firmware.asm -D SLOT5 -o slot5.o
;ca65 Firmware.asm -D SLOT6 -o slot6.o
;ca65 Firmware.asm -D SLOT7 -o slot7.o
;ld65 -t none warning.o slot1.o slot2.o slot3.o slot4.o slot5.o slot6.o slot7.o -o Firmware.bin
;Determine which slot we want by command-line define
.ifdef SLOT1
slot = $01
.endif
.ifdef SLOT2
slot = $02
.endif
.ifdef SLOT3
slot = $03
.endif
.ifdef SLOT4
slot = $04
.endif
.ifdef SLOT5
slot = $05
.endif
.ifdef SLOT6
slot = $06
.endif
.ifdef SLOT7
slot = $07
.endif
;Calculate I/O addresses for this slot
slotwh = $C081+slot*$10
slotwl = $C080+slot*$10
slotrd = $C080+slot*$10
sdrive = slot*$10
sram0 = $478+slot
sram1 = $4F8+slot
sram2 = $578+slot
sram3 = $5F8+slot
sram4 = $678+slot
sram5 = $6F8+slot
sram6 = $778+slot
sram7 = $7F8+slot
;temp variables becasue 6502 only has 3 registers
highLatch = $F8
lowLatch = $F9
tempY = $FE
blockHalfCounter = $FF
;ProDOS defines
command = $42 ;ProDOS command
unit = $43 ;7=drive 6-4=slot 3-0=not used
buflo = $44 ;low address of buffer
bufhi = $45 ;hi address of buffer
blklo = $46 ;low block
blkhi = $47 ;hi block
ioerr = $27 ;I/O error code
nodev = $28 ;no device connected
wperr = $2B ;write protect error
command = $42 ;ProDOS command
unit = $43 ;7=drive 6-4=slot 3-0=not used
buflo = $44 ;low address of buffer
bufhi = $45 ;hi address of buffer
blklo = $46 ;low block
blkhi = $47 ;hi block
ioerr = $27 ;I/O error code
nodev = $28 ;no device connected
wperr = $2B ;write protect error
;for relocatable code, address to jump to instead of JSR absolute + RTS
jumpAddressLo = $FA
jumpAddressHi = $FB
ioAddressLo = $FC
ioAddressHi = $FD
knownRts = $FF58
.org $C000+slot*$100
;code is non-relocatable
; but duplicated seven times,
; once for each slot
.org $C700
;code is relocatable
; but set to $c700 for
; readability
;ID bytes for booting and drive detection
cpx #$20 ;ID bytes for ProDOS and the
cpx #$00 ; Apple Autostart ROM
cpx #$03 ;
cpx #$3C ;this one for older II's
cpx #$20 ;ID bytes for ProDOS and the
ldy #$00 ; Apple Autostart ROM
cpx #$03 ;
cpx #$3C ;this one for older II's
;zero out block numbers and buffer address
sty buflo
sty blklo
sty blkhi
iny ;set command = 1 for read block
sty command
sty jumpAddressLo ;$01 of $0801 where boot code starts
jsr knownRts ;jump to known RTS to get our address from the stack
tsx
lda $0100,x ;this for example would be $C7 in slot 7
sta bufhi ;keep the slot here
asl
asl
asl
asl
tax
;display copyright message
ldy #$00
drawtxt: lda text,y
beq boot ;check for NULL
ora #$80 ;make it visible to the Apple
sta $07D0,y ;put text on last line
ldy #<text
drawtxt:
lda (buflo),y
sta $07D0,y ;put text on last line
iny
bpl drawtxt
;load first two blocks and execute to boot
boot: lda #$01 ;set read command
sta command
lda #sdrive ;set slot and unit
sta unit
lda #$00 ;block 0
sta blklo
sta blkhi
sta buflo ;buffer at $800
lda #$08
sta bufhi
jsr entry ;get the block
ldx #sdrive ;set up for slot n
jmp $801 ;execute the block
bne drawtxt
;load block 0000 at $0800
lda #$08
sta bufhi
sta jumpAddressHi
stx unit
bne start
;This is the ProDOS entry point for this card
entry: lda #sdrive ;unit number is $n0 - n = slot
cmp unit ;make sure same as ProDOS
beq docmd ;yep, do command
sec ;nope, set device not connected
lda #nodev
rts ;go back to ProDOS
entry:
lda #<knownRts
sta jumpAddressLo
lda #>knownRts
sta jumpAddressHi
start:
lda #$C0
sta ioAddressHi
jsr knownRts
tsx
lda $0100,x
asl a
asl a
asl a
asl a
tax
cpx unit ;make sure same as ProDOS
beq docmd ;yep, do command
sec ;nope, set device not connected
lda #nodev
rts ;go back to ProDOS
docmd: lda command ;get ProDOS command
beq getstat ;command 0 is GetStatus
cmp #$01 ;
beq readblk ;command 1 is ReadBlock
sec ;Format/Write not permitted
lda #wperr ;write protect error
rts ;go back to ProDOS
docmd:
lda command
beq getstat ;command 0 is GetStatus
cmp #$01
beq readblk ;command 1 is ReadBlock
sec ;Format/Write not permitted
lda #wperr ;write protect error
rts ;go back to ProDOS
getstat: clc ;send back status
lda #$00 ;good status
ldx #$00 ;1024 blocks
ldy #$04 ;
getstat:
clc ;send back status
lda #$00 ;good status
ldx #$00 ;1024 blocks
ldy #$04 ;
rts
readblk: lda blkhi ;get hi block
asl a ;shift up to top 3 bits
asl a ;since that's all the high
asl a ;blocks we can handle
asl a ;
asl a ;
sta sram0 ;save it in scratch ram 0
readblk:
lda blkhi ;get hi block
asl a ;shift up to top 3 bits
asl a ;since that's all the high
asl a ;blocks we can handle
asl a ;
asl a ;
sta highLatch ;save it in scratch ram 0
;so we can stuff it in the
;high latch later
lda blklo ;get low block
lsr a ;shift so we get the top 5
lsr a ;bits - this also goes in
lsr a ;the high latch
ora sram0 ;add it to those top 3 bits
sta sram0 ;save it back in scratch ram
lda blklo ;get low block
asl a ;shift it to top 3 bits
asl a ;
asl a ;
asl a ;
asl a ;
sta sram1 ;save it in scratch ram
jsr get256 ;get first half of block
lda sram1 ;get low latch
and #$F0 ;clear bottom 4 bits
ora #$10 ;set bit 5 for second half
;of 512 byte block
sta sram1 ;save it back in scratch
inc bufhi ;write 2nd block up 256 bytes
jsr get256 ;get second half of block
dec bufhi ;put ProDOS buffer back
clc ;clear error code for success
lda #$00
rts ;return to ProDOS
lda blklo ;get low block
lsr a ;shift so we get the top 5
lsr a ;bits - this also goes in
lsr a ;the high latch
ora highLatch ;add it to those top 3 bits
sta highLatch ;save it back in scratch ram
lda blklo ;get low block
asl a ;shift it to top 3 bits
asl a ;
asl a ;
asl a ;
asl a ;
sta lowLatch
lda #$02
sta blockHalfCounter
;This gets 256 bytes from the ROM card
;assuming high latch value is in sram0
;and low latch value is in sram1
get256: ldy #$00 ;clear buffer counter
lda sram0 ;get high latch value
sta slotwh ;set high latch for card
loop256: ldx #$00 ;clear port counter
lda sram1 ;get low latch value
sta slotwl ;set low latch
loop16: lda slotrd,x ;get a byte
sta (buflo),y ;write into the buffer
read256:
ldy #$00
lda highLatch ;get high latch value
sta writeLatchHigh,x ;set high latch for card
loop256:
lda lowLatch
sta writeLatchLow,x
txa
ora #$80
sta ioAddressLo
loop16:
sty tempY
ldy #$00
lda (ioAddressLo),y
ldy tempY
sta (buflo),y
iny
inx
cpx #$10
bne loop16 ;go until 16 bytes read
inc ioAddressLo
lda ioAddressLo
and #$0F
bne loop16
inc lowLatch
cpy #$00
bne loop256
dec blockHalfCounter
bne readnext256
dec bufhi
clc ;clear error code for success
lda #$00
jmp (jumpAddressLo)
inc sram1 ;next 16 bytes
cpy #$00
bne loop256 ;go until 256 total
rts
readnext256:
inc bufhi
clc
bcc read256
text: .byte "ROM-Drive (c)1998-2019 Terence J. Boldt"
;macro for string with high-bit set
.macro aschi str
.repeat .strlen (str), c
.byte .strat (str, c) | $80
.endrep
.endmacro
text: aschi "ROM-Drive (c)1998-2021 Terence J. Boldt"
end:
.byte 0
.byte 0
; These bytes need to be at the top of the 256 byte firmware as ProDOS
; uses these to find the entry point and drive capabilities
@ -199,7 +188,7 @@ end:
.byte 0
.endrepeat
.byte 0,0 ;0000 blocks = check status
.byte 3 ;bit 0=read 1=status
.byte entry&$00FF ;low byte of entry
.byte 0,0 ;0000 blocks = check status
.byte 3 ;bit 0=read 1=status
.byte <entry ;low byte of entry

Binary file not shown.

212
Firmware/Firmware.lst Normal file
View File

@ -0,0 +1,212 @@
ca65 V2.18 - N/A
Main file : Firmware.asm
Current file: Firmware.asm
000000r 1 writeLatchHigh = $C081
000000r 1 writeLatchLow = $C080
000000r 1
000000r 1 ;temp variables becasue 6502 only has 3 registers
000000r 1 highLatch = $F8
000000r 1 lowLatch = $F9
000000r 1 tempY = $FE
000000r 1 blockHalfCounter = $FF
000000r 1
000000r 1 ;ProDOS defines
000000r 1 command = $42 ;ProDOS command
000000r 1 unit = $43 ;7=drive 6-4=slot 3-0=not used
000000r 1 buflo = $44 ;low address of buffer
000000r 1 bufhi = $45 ;hi address of buffer
000000r 1 blklo = $46 ;low block
000000r 1 blkhi = $47 ;hi block
000000r 1 ioerr = $27 ;I/O error code
000000r 1 nodev = $28 ;no device connected
000000r 1 wperr = $2B ;write protect error
000000r 1
000000r 1 ;for relocatable code, address to jump to instead of JSR absolute + RTS
000000r 1 jumpAddressLo = $FA
000000r 1 jumpAddressHi = $FB
000000r 1 ioAddressLo = $FC
000000r 1 ioAddressHi = $FD
000000r 1 knownRts = $FF58
000000r 1
000000r 1 .org $C700
00C700 1 ;code is relocatable
00C700 1 ; but set to $c700 for
00C700 1 ; readability
00C700 1
00C700 1 ;ID bytes for booting and drive detection
00C700 1 E0 20 cpx #$20 ;ID bytes for ProDOS and the
00C702 1 A0 00 ldy #$00 ; Apple Autostart ROM
00C704 1 E0 03 cpx #$03 ;
00C706 1 E0 3C cpx #$3C ;this one for older II's
00C708 1
00C708 1 ;zero out block numbers and buffer address
00C708 1 84 44 sty buflo
00C70A 1 84 46 sty blklo
00C70C 1 84 47 sty blkhi
00C70E 1 C8 iny ;set command = 1 for read block
00C70F 1 84 42 sty command
00C711 1 84 FA sty jumpAddressLo ;$01 of $0801 where boot code starts
00C713 1 20 58 FF jsr knownRts ;jump to known RTS to get our address from the stack
00C716 1 BA tsx
00C717 1 BD 00 01 lda $0100,x ;this for example would be $C7 in slot 7
00C71A 1 85 45 sta bufhi ;keep the slot here
00C71C 1 0A asl
00C71D 1 0A asl
00C71E 1 0A asl
00C71F 1 0A asl
00C720 1 AA tax
00C721 1
00C721 1 ;display copyright message
00C721 1 A0 C3 ldy #<text
00C723 1 drawtxt:
00C723 1 B1 44 lda (buflo),y
00C725 1 99 D0 07 sta $07D0,y ;put text on last line
00C728 1 C8 iny
00C729 1 D0 F8 bne drawtxt
00C72B 1
00C72B 1 ;load block 0000 at $0800
00C72B 1 A9 08 lda #$08
00C72D 1 85 45 sta bufhi
00C72F 1 85 FB sta jumpAddressHi
00C731 1 86 43 stx unit
00C733 1 D0 08 bne start
00C735 1 ;This is the ProDOS entry point for this card
00C735 1 entry:
00C735 1 A9 58 lda #<knownRts
00C737 1 85 FA sta jumpAddressLo
00C739 1 A9 FF lda #>knownRts
00C73B 1 85 FB sta jumpAddressHi
00C73D 1 start:
00C73D 1 A9 C0 lda #$C0
00C73F 1 85 FD sta ioAddressHi
00C741 1 20 58 FF jsr knownRts
00C744 1 BA tsx
00C745 1 BD 00 01 lda $0100,x
00C748 1 0A asl a
00C749 1 0A asl a
00C74A 1 0A asl a
00C74B 1 0A asl a
00C74C 1 AA tax
00C74D 1 E4 43 cpx unit ;make sure same as ProDOS
00C74F 1 F0 04 beq docmd ;yep, do command
00C751 1 38 sec ;nope, set device not connected
00C752 1 A9 28 lda #nodev
00C754 1 60 rts ;go back to ProDOS
00C755 1
00C755 1 docmd:
00C755 1 A5 42 lda command
00C757 1 F0 08 beq getstat ;command 0 is GetStatus
00C759 1 C9 01 cmp #$01
00C75B 1 F0 0C beq readblk ;command 1 is ReadBlock
00C75D 1 38 sec ;Format/Write not permitted
00C75E 1 A9 2B lda #wperr ;write protect error
00C760 1 60 rts ;go back to ProDOS
00C761 1
00C761 1 getstat:
00C761 1 18 clc ;send back status
00C762 1 A9 00 lda #$00 ;good status
00C764 1 A2 00 ldx #$00 ;1024 blocks
00C766 1 A0 04 ldy #$04 ;
00C768 1 60 rts
00C769 1
00C769 1 readblk:
00C769 1 A5 47 lda blkhi ;get hi block
00C76B 1 0A asl a ;shift up to top 3 bits
00C76C 1 0A asl a ;since that's all the high
00C76D 1 0A asl a ;blocks we can handle
00C76E 1 0A asl a ;
00C76F 1 0A asl a ;
00C770 1 85 F8 sta highLatch ;save it in scratch ram 0
00C772 1 ;so we can stuff it in the
00C772 1 ;high latch later
00C772 1 A5 46 lda blklo ;get low block
00C774 1 4A lsr a ;shift so we get the top 5
00C775 1 4A lsr a ;bits - this also goes in
00C776 1 4A lsr a ;the high latch
00C777 1 05 F8 ora highLatch ;add it to those top 3 bits
00C779 1 85 F8 sta highLatch ;save it back in scratch ram
00C77B 1 A5 46 lda blklo ;get low block
00C77D 1 0A asl a ;shift it to top 3 bits
00C77E 1 0A asl a ;
00C77F 1 0A asl a ;
00C780 1 0A asl a ;
00C781 1 0A asl a ;
00C782 1 85 F9 sta lowLatch
00C784 1 A9 02 lda #$02
00C786 1 85 FF sta blockHalfCounter
00C788 1
00C788 1 ;This gets 256 bytes from the ROM card
00C788 1
00C788 1 read256:
00C788 1 A0 00 ldy #$00
00C78A 1 A5 F8 lda highLatch ;get high latch value
00C78C 1 9D 81 C0 sta writeLatchHigh,x ;set high latch for card
00C78F 1 loop256:
00C78F 1 A5 F9 lda lowLatch
00C791 1 9D 80 C0 sta writeLatchLow,x
00C794 1 8A txa
00C795 1 09 80 ora #$80
00C797 1 85 FC sta ioAddressLo
00C799 1 loop16:
00C799 1 84 FE sty tempY
00C79B 1 A0 00 ldy #$00
00C79D 1 B1 FC lda (ioAddressLo),y
00C79F 1 A4 FE ldy tempY
00C7A1 1 91 44 sta (buflo),y
00C7A3 1 C8 iny
00C7A4 1 E6 FC inc ioAddressLo
00C7A6 1 A5 FC lda ioAddressLo
00C7A8 1 29 0F and #$0F
00C7AA 1 D0 ED bne loop16
00C7AC 1 E6 F9 inc lowLatch
00C7AE 1 C0 00 cpy #$00
00C7B0 1 D0 DD bne loop256
00C7B2 1 C6 FF dec blockHalfCounter
00C7B4 1 D0 08 bne readnext256
00C7B6 1 C6 45 dec bufhi
00C7B8 1 18 clc ;clear error code for success
00C7B9 1 A9 00 lda #$00
00C7BB 1 6C FA 00 jmp (jumpAddressLo)
00C7BE 1
00C7BE 1 readnext256:
00C7BE 1 E6 45 inc bufhi
00C7C0 1 18 clc
00C7C1 1 90 C5 bcc read256
00C7C3 1
00C7C3 1 ;macro for string with high-bit set
00C7C3 1 .macro aschi str
00C7C3 1 .repeat .strlen (str), c
00C7C3 1 .byte .strat (str, c) | $80
00C7C3 1 .endrep
00C7C3 1 .endmacro
00C7C3 1
00C7C3 1 D2 CF CD AD text: aschi "ROM-Drive (c)1998-2021 Terence J. Boldt"
00C7C7 1 C4 F2 E9 F6
00C7CB 1 E5 A0 A8 E3
00C7CF 1 A9 B1 B9 B9
00C7D3 1 B8 AD B2 B0
00C7D7 1 B2 B1 A0 D4
00C7DB 1 E5 F2 E5 EE
00C7DF 1 E3 E5 A0 CA
00C7E3 1 AE A0 C2 EF
00C7E7 1 EC E4 F4
00C7EA 1 end:
00C7EA 1 00 .byte 0
00C7EB 1
00C7EB 1 ; These bytes need to be at the top of the 256 byte firmware as ProDOS
00C7EB 1 ; uses these to find the entry point and drive capabilities
00C7EB 1
00C7EB 1 00 00 00 00 .repeat 251-<end
00C7EF 1 00 00 00 00
00C7F3 1 00 00 00 00
00C7F7 1 00 00 00 00
00C7FB 1 00
00C7FC 1 .byte 0
00C7FC 1 .endrepeat
00C7FC 1
00C7FC 1 00 00 .byte 0,0 ;0000 blocks = check status
00C7FE 1 03 .byte 3 ;bit 0=read 1=status
00C7FF 1 35 .byte <entry ;low byte of entry
00C800 1
00C800 1

BIN
Firmware/GamesWithFirmware.po Executable file

Binary file not shown.

View File

@ -1 +1,46 @@
.byte "Do not overwrite any of blocks after this point as it is used for the firmware. There are 7 copies of the 256 byte firmware, one for each slot due to 6502 code being non-relocatable. Have fun and feel free to improve on the hardware / sofware. --- Terence"
printChar = $FDED
home = $FC58
.org $2000
jsr home
ldy #$0
nextChar:
lda text,y
beq infiniteLoop
jsr printChar
iny
clc
bcc nextChar
infiniteLoop:
clc
bcc infiniteLoop ;hang for eternity
.macro aschi str
.repeat .strlen (str), c
.byte .strat (str, c) | $80
.endrep
.endmacro
text:
aschi "Block 0001 normally reserved for SOS"
.byte $8D
aschi "boot contains the firmware for the"
.byte $8D
aschi "ProDOS ROM-Drive."
.byte $8D
.byte $8D
aschi "(c)1998 - 2021 Terence J. Boldt"
.byte $8D
.byte $8D
aschi "github.com/tjboldt/ProDOS-ROMDrive"
.byte $8D
.byte $8D
aschi "Do NOT overwrite Block 0001"
end:
.byte 0
.repeat 255-<end
.byte 0
.endrepeat

103
Firmware/Warning.lst Normal file
View File

@ -0,0 +1,103 @@
ca65 V2.18 - N/A
Main file : Warning.asm
Current file: Warning.asm
000000r 1 printChar = $FDED
000000r 1 home = $FC58
000000r 1
000000r 1 .org $2000
002000 1
002000 1 20 58 FC jsr home
002003 1 A0 00 ldy #$0
002005 1 nextChar:
002005 1 B9 14 20 lda text,y
002008 1 F0 07 beq infiniteLoop
00200A 1 20 ED FD jsr printChar
00200D 1 C8 iny
00200E 1 18 clc
00200F 1 90 F4 bcc nextChar
002011 1 infiniteLoop:
002011 1 18 clc
002012 1 90 FD bcc infiniteLoop ;hang for eternity
002014 1
002014 1 .macro aschi str
002014 1 .repeat .strlen (str), c
002014 1 .byte .strat (str, c) | $80
002014 1 .endrep
002014 1 .endmacro
002014 1
002014 1 text:
002014 1 C2 EC EF E3 aschi "Block 0001 normally reserved for SOS"
002018 1 EB A0 B0 B0
00201C 1 B0 B1 A0 EE
002020 1 EF F2 ED E1
002024 1 EC EC F9 A0
002028 1 F2 E5 F3 E5
00202C 1 F2 F6 E5 E4
002030 1 A0 E6 EF F2
002034 1 A0 D3 CF D3
002038 1 8D .byte $8D
002039 1 E2 EF EF F4 aschi "boot contains the firmware for the"
00203D 1 A0 E3 EF EE
002041 1 F4 E1 E9 EE
002045 1 F3 A0 F4 E8
002049 1 E5 A0 E6 E9
00204D 1 F2 ED F7 E1
002051 1 F2 E5 A0 E6
002055 1 EF F2 A0 F4
002059 1 E8 E5
00205B 1 8D .byte $8D
00205C 1 D0 F2 EF C4 aschi "ProDOS ROM-Drive."
002060 1 CF D3 A0 D2
002064 1 CF CD AD C4
002068 1 F2 E9 F6 E5
00206C 1 AE
00206D 1 8D .byte $8D
00206E 1 8D .byte $8D
00206F 1 A8 E3 A9 B1 aschi "(c)1998 - 2021 Terence J. Boldt"
002073 1 B9 B9 B8 A0
002077 1 AD A0 B2 B0
00207B 1 B2 B1 A0 D4
00207F 1 E5 F2 E5 EE
002083 1 E3 E5 A0 CA
002087 1 AE A0 C2 EF
00208B 1 EC E4 F4
00208E 1 8D .byte $8D
00208F 1 8D .byte $8D
002090 1 E7 E9 F4 E8 aschi "github.com/tjboldt/ProDOS-ROMDrive"
002094 1 F5 E2 AE E3
002098 1 EF ED AF F4
00209C 1 EA E2 EF EC
0020A0 1 E4 F4 AF D0
0020A4 1 F2 EF C4 CF
0020A8 1 D3 AD D2 CF
0020AC 1 CD C4 F2 E9
0020B0 1 F6 E5
0020B2 1 8D .byte $8D
0020B3 1 8D .byte $8D
0020B4 1 C4 EF A0 CE aschi "Do NOT overwrite Block 0001"
0020B8 1 CF D4 A0 EF
0020BC 1 F6 E5 F2 F7
0020C0 1 F2 E9 F4 E5
0020C4 1 A0 C2 EC EF
0020C8 1 E3 EB A0 B0
0020CC 1 B0 B0 B1
0020CF 1
0020CF 1 end:
0020CF 1 00 .byte 0
0020D0 1
0020D0 1 00 00 00 00 .repeat 255-<end
0020D4 1 00 00 00 00
0020D8 1 00 00 00 00
0020DC 1 00 00 00 00
0020E0 1 00 00 00 00
0020E4 1 00 00 00 00
0020E8 1 00 00 00 00
0020EC 1 00 00 00 00
0020F0 1 00 00 00 00
0020F4 1 00 00 00 00
0020F8 1 00 00 00 00
0020FC 1 00 00 00 00
0020D0 1 .byte 0
0020D0 1 .endrepeat
0020D0 1

View File

@ -1,12 +1,13 @@
#!/bin/sh
ca65 Warning.asm -o warning.o
ca65 Firmware.asm -D SLOT1 -o slot1.o
ca65 Firmware.asm -D SLOT2 -o slot2.o
ca65 Firmware.asm -D SLOT3 -o slot3.o
ca65 Firmware.asm -D SLOT4 -o slot4.o
ca65 Firmware.asm -D SLOT5 -o slot5.o
ca65 Firmware.asm -D SLOT6 -o slot6.o
ca65 Firmware.asm -D SLOT7 -o slot7.o
ld65 -t none warning.o slot1.o slot2.o slot3.o slot4.o slot5.o slot6.o slot7.o -o Firmware.bin
ca65 Warning.asm -o warning.o --listing Warning.lst --list-bytes 255 || exit 1
ca65 Firmware.asm -o firmware.o --listing Firmware.lst --list-bytes 255 || exit 1
ld65 -t none warning.o firmware.o -o Firmware.bin || exit 1
# assumes ProDOS-Utilities is in your path: https://github.com/tjboldt/ProDOS-Utilities
rm BlankDriveWithFirmware.po || exit 1
ProDOS-Utilities -c create -d BlankDriveWithFirmware.po -v ROM -s 2048 || exit 1
ProDOS-Utilities -b 0x0001 -c writeblock -d GamesWithFirmware.po -i Firmware.bin || exit 1
ProDOS-Utilities -b 0x0001 -c writeblock -d BlankDriveWithFirmware.po -i Firmware.bin || exit 1
ProDOS-Utilities -b 0x0001 -c readblock -d BlankDriveWithFirmware.po || exit 1
ProDOS-Utilities -c ls -d BlankDriveWithFirmware.po || exit 1
cat Firmware.bin | dd of=BlankDriveWithFirmware.po bs=1 seek=1046528 count=2048 conv=notrunc

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,11 +0,0 @@
M48
;DRILL file {KiCad (5.0.1-3-g963ef8bb5)} date Thursday, April 25, 2019 at 11:14:16 am
;FORMAT={-:-/ absolute / inch / decimal}
FMAT,2
INCH,TZ
%
G90
G05
M72
T0
M30

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 476 KiB

View File

@ -1,33 +0,0 @@
update=22/05/2015 07:44:53
version=1
last_client=kicad
[general]
version=1
RootSch=
BoardNm=
[pcbnew]
version=1
LastNetListRead=
UseCmpFile=1
PadDrill=0.600000000000
PadDrillOvalY=0.600000000000
PadSizeH=1.500000000000
PadSizeV=1.500000000000
PcbTextSizeV=1.500000000000
PcbTextSizeH=1.500000000000
PcbTextThickness=0.300000000000
ModuleTextSizeV=1.000000000000
ModuleTextSizeH=1.000000000000
ModuleTextSizeThickness=0.150000000000
SolderMaskClearance=0.000000000000
SolderMaskMinWidth=0.000000000000
DrawSegmentWidth=0.200000000000
BoardOutlineThickness=0.100000000000
ModuleOutlineThickness=0.150000000000
[cvpcb]
version=1
NetIExt=net
[eeschema]
version=1
LibDir=
[eeschema/libraries]

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,16 +1,18 @@
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,(5.0.1-3-g963ef8bb5)*
G04 #@! TF.CreationDate,2019-04-25T11:14:13-04:00*
G04 #@! TF.ProjectId,ProDOS ROM-Drive 2.5,50726F444F5320524F4D2D4472697665,2.5*
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,(5.1.10-1-10_14)*
G04 #@! TF.CreationDate,2021-12-12T10:22:25-05:00*
G04 #@! TF.ProjectId,ProDOS ROM-Drive 3.0,50726f44-4f53-4205-924f-4d2d44726976,3.0*
G04 #@! TF.SameCoordinates,Original*
G04 #@! TF.FileFunction,Profile,NP*
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW (5.0.1-3-g963ef8bb5)) date Thursday, April 25, 2019 at 11:14:13 am*
G04 Created by KiCad (PCBNEW (5.1.10-1-10_14)) date 2021-12-12 10:22:25*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
G04 #@! TA.AperFunction,Profile*
%ADD10C,0.150000*%
G04 #@! TD*
G04 APERTURE END LIST*
D10*
X33644840Y-68521580D02*

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,13 @@
M48
; DRILL file {KiCad (5.1.10-1-10_14)} date Sunday, December 12, 2021 at 10:22:21 AM
; FORMAT={-:-/ absolute / inch / decimal}
; #@! TF.CreationDate,2021-12-12T10:22:21-05:00
; #@! TF.GenerationSoftware,Kicad,Pcbnew,(5.1.10-1-10_14)
; #@! TF.FileFunction,NonPlated,1,2,NPTH
FMAT,2
INCH
%
G90
G05
T0
M30

View File

@ -1,8 +1,11 @@
M48
;DRILL file {KiCad (5.0.1-3-g963ef8bb5)} date Thursday, April 25, 2019 at 11:14:16 am
;FORMAT={-:-/ absolute / inch / decimal}
; DRILL file {KiCad (5.1.10-1-10_14)} date Sunday, December 12, 2021 at 10:22:21 AM
; FORMAT={-:-/ absolute / inch / decimal}
; #@! TF.CreationDate,2021-12-12T10:22:21-05:00
; #@! TF.GenerationSoftware,Kicad,Pcbnew,(5.1.10-1-10_14)
; #@! TF.FileFunction,Plated,1,2,PTH
FMAT,2
INCH,TZ
INCH
T1C0.0197
T2C0.0280
T3C0.0315
@ -10,7 +13,6 @@ T4C0.0350
%
G90
G05
M72
T1
X1.5187Y-2.4698
X1.5245Y-1.807
@ -28,7 +30,9 @@ X2.5573Y-1.244
X2.5739Y-2.5849
X2.5751Y-2.5374
X2.585Y-1.1979
X2.592Y-1.916
X2.5971Y-1.322
X2.599Y-1.814
X2.6281Y-1.198
X2.6454Y-1.5575
X2.648Y-1.1132
@ -39,8 +43,6 @@ X2.7796Y-1.1132
X2.7968Y-1.4146
X2.8096Y-2.3563
X2.8187Y-2.0908
X2.84Y-1.815
X2.84Y-1.87
X2.8437Y-1.9359
X2.8883Y-2.5472
X2.8941Y-2.0707
@ -64,33 +66,37 @@ X3.1157Y-2.3778
X3.1171Y-1.4886
X3.1182Y-1.2433
X3.1191Y-2.5522
X3.1196Y-2.6298
X3.1246Y-2.2143
X3.1282Y-1.1482
X3.1314Y-1.0788
X3.1365Y-1.6439
X3.1451Y-1.8627
X3.1451Y-1.9073
X3.1451Y-1.9371
X3.149Y-1.434
X3.1796Y-2.0627
X3.2447Y-2.0557
X3.249Y-2.5704
X3.2482Y-1.9102
X3.2601Y-1.3293
X3.2911Y-2.3678
X3.3132Y-1.516
X3.3132Y-1.8722
X3.3132Y-1.3327
X3.3168Y-1.0949
X3.3339Y-2.6382
X3.3311Y-1.698
X3.3931Y-2.0327
X3.4101Y-2.0812
X3.4228Y-2.2778
X3.4346Y-2.6127
X3.437Y-1.512
X3.438Y-1.7122
X3.439Y-1.4594
X3.439Y-1.8722
X3.452Y-1.4074
X3.4635Y-1.1856
X3.4713Y-1.118
X3.4746Y-2.1877
X3.4786Y-1.2885
X3.5611Y-1.4496
X3.564Y-1.888
X3.5932Y-2.1688
X3.6115Y-1.1252
X3.6444Y-2.2547
@ -111,73 +117,26 @@ X4.4946Y-2.6777
X4.5385Y-2.1343
X4.5415Y-2.197
T2
X3.5196Y-1.8427
X3.5196Y-1.6446
X3.813Y-2.325
T3
X4.4896Y-2.2543
X4.4896Y-2.3527
X2.3446Y-2.2543
X2.3446Y-2.3527
X2.5096Y-2.0627
X2.608Y-2.0627
X3.0096Y-2.0677
X3.108Y-2.0677
X3.4846Y-2.0627
X3.5346Y-2.2643
X3.5346Y-2.3627
X3.583Y-2.0627
X3.9596Y-2.0577
X4.058Y-2.0577
X2.5096Y-2.0627
X2.608Y-2.0627
X2.3446Y-2.2543
X2.3446Y-2.3527
X4.4096Y-1.9727
X4.4896Y-2.2543
X4.4896Y-2.3527
X4.508Y-1.9727
X3.5346Y-2.2643
X3.5346Y-2.3627
X3.0096Y-2.0677
X3.108Y-2.0677
T4
X4.3046Y-1.2527
X4.3046Y-1.3527
X4.3046Y-1.4527
X4.3046Y-1.5527
X4.3046Y-1.6527
X4.3046Y-1.7527
X4.3046Y-1.8527
X4.6046Y-1.2527
X4.6046Y-1.3527
X4.6046Y-1.4527
X4.6046Y-1.5527
X4.6046Y-1.6527
X4.6046Y-1.7527
X4.6046Y-1.8527
X3.7646Y-2.1577
X3.7646Y-2.4577
X3.8646Y-2.1577
X3.8646Y-2.4577
X3.9646Y-2.1577
X3.9646Y-2.4577
X4.0646Y-2.1577
X4.0646Y-2.4577
X4.1646Y-2.1577
X4.1646Y-2.4577
X4.2646Y-2.1577
X4.2646Y-2.4577
X4.3646Y-2.1577
X4.3646Y-2.4577
X2.5096Y-2.1627
X2.5096Y-2.4627
X2.6096Y-2.1627
X2.6096Y-2.4627
X2.7096Y-2.1627
X2.7096Y-2.4627
X2.8096Y-2.1627
X2.8096Y-2.4627
X2.9096Y-2.1627
X2.9096Y-2.4627
X3.0096Y-2.1627
X3.0096Y-2.4627
X3.1096Y-2.1627
X3.1096Y-2.4627
X3.2096Y-2.1627
X3.2096Y-2.4627
X3.3096Y-2.1627
X3.3096Y-2.4627
X3.4096Y-2.1627
X3.4096Y-2.4627
X1.4517Y-0.9865
X1.4517Y-1.0865
X1.4517Y-1.1865
@ -210,66 +169,6 @@ X2.0517Y-2.1865
X2.0517Y-2.2865
X2.0517Y-2.3865
X2.0517Y-2.4865
X3.8546Y-1.0427
X3.8546Y-1.1427
X3.8546Y-1.2427
X3.8546Y-1.3427
X3.8546Y-1.4427
X3.8546Y-1.5427
X3.8546Y-1.6427
X3.8546Y-1.7427
X3.8546Y-1.8427
X3.8546Y-1.9427
X4.1546Y-1.0427
X4.1546Y-1.1427
X4.1546Y-1.2427
X4.1546Y-1.3427
X4.1546Y-1.4427
X4.1546Y-1.5427
X4.1546Y-1.6427
X4.1546Y-1.7427
X4.1546Y-1.8427
X4.1546Y-1.9427
X2.9046Y-1.0427
X2.9046Y-1.1427
X2.9046Y-1.2427
X2.9046Y-1.3427
X2.9046Y-1.4427
X2.9046Y-1.5427
X2.9046Y-1.6427
X2.9046Y-1.7427
X2.9046Y-1.8427
X2.9046Y-1.9427
X3.2046Y-1.0427
X3.2046Y-1.1427
X3.2046Y-1.2427
X3.2046Y-1.3427
X3.2046Y-1.4427
X3.2046Y-1.5427
X3.2046Y-1.6427
X3.2046Y-1.7427
X3.2046Y-1.8427
X3.2046Y-1.9427
X3.3796Y-1.0427
X3.3796Y-1.1427
X3.3796Y-1.2427
X3.3796Y-1.3427
X3.3796Y-1.4427
X3.3796Y-1.5427
X3.3796Y-1.6427
X3.3796Y-1.7427
X3.3796Y-1.8427
X3.3796Y-1.9427
X3.6796Y-1.0427
X3.6796Y-1.1427
X3.6796Y-1.2427
X3.6796Y-1.3427
X3.6796Y-1.4427
X3.6796Y-1.5427
X3.6796Y-1.6427
X3.6796Y-1.7427
X3.6796Y-1.8427
X3.6796Y-1.9427
X2.4096Y-1.0427
X2.4096Y-1.1427
X2.4096Y-1.2427
@ -280,6 +179,10 @@ X2.4096Y-1.6427
X2.4096Y-1.7427
X2.4096Y-1.8427
X2.4096Y-1.9427
X2.5096Y-2.1627
X2.5096Y-2.4627
X2.6096Y-2.1627
X2.6096Y-2.4627
X2.7096Y-1.0427
X2.7096Y-1.1427
X2.7096Y-1.2427
@ -290,5 +193,109 @@ X2.7096Y-1.6427
X2.7096Y-1.7427
X2.7096Y-1.8427
X2.7096Y-1.9427
X2.7096Y-2.1627
X2.7096Y-2.4627
X2.8096Y-2.1627
X2.8096Y-2.4627
X2.9046Y-1.0427
X2.9046Y-1.1427
X2.9046Y-1.2427
X2.9046Y-1.3427
X2.9046Y-1.4427
X2.9046Y-1.5427
X2.9046Y-1.6427
X2.9046Y-1.7427
X2.9046Y-1.8427
X2.9046Y-1.9427
X2.9096Y-2.1627
X2.9096Y-2.4627
X3.0096Y-2.1627
X3.0096Y-2.4627
X3.1096Y-2.1627
X3.1096Y-2.4627
X3.2046Y-1.0427
X3.2046Y-1.1427
X3.2046Y-1.2427
X3.2046Y-1.3427
X3.2046Y-1.4427
X3.2046Y-1.5427
X3.2046Y-1.6427
X3.2046Y-1.7427
X3.2046Y-1.8427
X3.2046Y-1.9427
X3.2096Y-2.1627
X3.2096Y-2.4627
X3.3096Y-2.1627
X3.3096Y-2.4627
X3.3796Y-1.0427
X3.3796Y-1.1427
X3.3796Y-1.2427
X3.3796Y-1.3427
X3.3796Y-1.4427
X3.3796Y-1.5427
X3.3796Y-1.6427
X3.3796Y-1.7427
X3.3796Y-1.8427
X3.3796Y-1.9427
X3.4096Y-2.1627
X3.4096Y-2.4627
X3.6796Y-1.0427
X3.6796Y-1.1427
X3.6796Y-1.2427
X3.6796Y-1.3427
X3.6796Y-1.4427
X3.6796Y-1.5427
X3.6796Y-1.6427
X3.6796Y-1.7427
X3.6796Y-1.8427
X3.6796Y-1.9427
X3.7646Y-2.1577
X3.7646Y-2.4577
X3.8546Y-1.0427
X3.8546Y-1.1427
X3.8546Y-1.2427
X3.8546Y-1.3427
X3.8546Y-1.4427
X3.8546Y-1.5427
X3.8546Y-1.6427
X3.8546Y-1.7427
X3.8546Y-1.8427
X3.8546Y-1.9427
X3.8646Y-2.1577
X3.8646Y-2.4577
X3.9646Y-2.1577
X3.9646Y-2.4577
X4.0646Y-2.1577
X4.0646Y-2.4577
X4.1546Y-1.0427
X4.1546Y-1.1427
X4.1546Y-1.2427
X4.1546Y-1.3427
X4.1546Y-1.4427
X4.1546Y-1.5427
X4.1546Y-1.6427
X4.1546Y-1.7427
X4.1546Y-1.8427
X4.1546Y-1.9427
X4.1646Y-2.1577
X4.1646Y-2.4577
X4.2646Y-2.1577
X4.2646Y-2.4577
X4.3046Y-1.2527
X4.3046Y-1.3527
X4.3046Y-1.4527
X4.3046Y-1.5527
X4.3046Y-1.6527
X4.3046Y-1.7527
X4.3046Y-1.8527
X4.3646Y-2.1577
X4.3646Y-2.4577
X4.6046Y-1.2527
X4.6046Y-1.3527
X4.6046Y-1.4527
X4.6046Y-1.5527
X4.6046Y-1.6527
X4.6046Y-1.7527
X4.6046Y-1.8527
T0
M30

View File

@ -0,0 +1,437 @@
EESchema-LIBRARY Version 2.4
#encoding utf-8
#
# 74xx_74LS00
#
DEF 74xx_74LS00 U 0 40 Y Y 5 L N
F0 "U" 0 50 50 H V C CNN
F1 "74xx_74LS00" 0 -50 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
ALIAS 74LS37 7400 74HCT00 74HC00
$FPLIST
DIP*W7.62mm*
SO14*
$ENDFPLIST
DRAW
A 0 0 150 -899 899 1 1 10 f 0 -150 0 150
A 0 0 150 -899 899 2 1 10 f 0 -150 0 150
A 0 0 150 -899 899 3 1 10 f 0 -150 0 150
A 0 0 150 -899 899 4 1 10 f 0 -150 0 150
A -360 0 258 354 -354 1 2 10 N -150 150 -150 -150
A -47 -52 204 150 837 1 2 10 f 150 0 -24 150
A -47 52 204 -150 -837 1 2 10 f 150 0 -24 -150
A -360 0 258 354 -354 2 2 10 N -150 150 -150 -150
A -47 -52 204 150 837 2 2 10 f 150 0 -24 150
A -47 52 204 -150 -837 2 2 10 f 150 0 -24 -150
A -360 0 258 354 -354 3 2 10 N -150 150 -150 -150
A -47 -52 204 150 837 3 2 10 f 150 0 -24 150
A -47 52 204 -150 -837 3 2 10 f 150 0 -24 -150
A -360 0 258 354 -354 4 2 10 N -150 150 -150 -150
A -47 -52 204 150 837 4 2 10 f 150 0 -24 150
A -47 52 204 -150 -837 4 2 10 f 150 0 -24 -150
S -200 300 200 -300 5 1 10 f
P 4 1 1 10 0 150 -150 150 -150 -150 0 -150 f
P 4 2 1 10 0 150 -150 150 -150 -150 0 -150 f
P 4 3 1 10 0 150 -150 150 -150 -150 0 -150 f
P 4 4 1 10 0 150 -150 150 -150 -150 0 -150 f
P 2 1 2 10 -150 -150 -25 -150 f
P 2 1 2 10 -150 150 -25 150 f
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
P 2 2 2 10 -150 -150 -25 -150 f
P 2 2 2 10 -150 150 -25 150 f
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
P 2 3 2 10 -150 -150 -25 -150 f
P 2 3 2 10 -150 150 -25 150 f
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
P 2 4 2 10 -150 -150 -25 -150 f
P 2 4 2 10 -150 150 -25 150 f
P 12 4 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
X VCC 14 0 500 200 D 50 50 5 0 W
X GND 7 0 -500 200 U 50 50 5 0 W
X ~ 1 -300 100 150 R 50 50 1 1 I
X ~ 2 -300 -100 150 R 50 50 1 1 I
X ~ 3 300 0 150 L 50 50 1 1 O I
X ~ 4 -300 100 150 R 50 50 2 1 I
X ~ 5 -300 -100 150 R 50 50 2 1 I
X ~ 6 300 0 150 L 50 50 2 1 O I
X ~ 10 -300 -100 150 R 50 50 3 1 I
X ~ 8 300 0 150 L 50 50 3 1 O I
X ~ 9 -300 100 150 R 50 50 3 1 I
X ~ 11 300 0 150 L 50 50 4 1 O I
X ~ 12 -300 100 150 R 50 50 4 1 I
X ~ 13 -300 -100 150 R 50 50 4 1 I
X ~ 1 -300 100 170 R 50 50 1 2 I I
X ~ 2 -300 -100 170 R 50 50 1 2 I I
X ~ 3 300 0 150 L 50 50 1 2 O
X ~ 4 -300 100 170 R 50 50 2 2 I I
X ~ 5 -300 -100 170 R 50 50 2 2 I I
X ~ 6 300 0 150 L 50 50 2 2 O
X ~ 10 -300 -100 170 R 50 50 3 2 I I
X ~ 8 300 0 150 L 50 50 3 2 O
X ~ 9 -300 100 170 R 50 50 3 2 I I
X ~ 11 300 0 150 L 50 50 4 2 O
X ~ 12 -300 100 170 R 50 50 4 2 I I
X ~ 13 -300 -100 170 R 50 50 4 2 I I
ENDDRAW
ENDDEF
#
# 74xx_74LS245
#
DEF 74xx_74LS245 U 0 40 Y Y 1 L N
F0 "U" -300 650 50 H V C CNN
F1 "74xx_74LS245" -300 -650 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
ALIAS 74HC245
$FPLIST
DIP?20*
$ENDFPLIST
DRAW
S -300 600 300 -600 1 1 10 f
P 3 1 0 0 -25 -50 -25 50 25 50 N
P 4 1 0 0 -50 -50 25 -50 25 50 50 50 N
X A->B 1 -500 -400 200 R 50 50 1 0 I
X GND 10 0 -800 200 U 50 50 1 0 W
X B7 11 500 -200 200 L 50 50 1 0 T
X B6 12 500 -100 200 L 50 50 1 0 T
X B5 13 500 0 200 L 50 50 1 0 T
X B4 14 500 100 200 L 50 50 1 0 T
X B3 15 500 200 200 L 50 50 1 0 T
X B2 16 500 300 200 L 50 50 1 0 T
X B1 17 500 400 200 L 50 50 1 0 T
X B0 18 500 500 200 L 50 50 1 0 T
X CE 19 -500 -500 200 R 50 50 1 0 I I
X A0 2 -500 500 200 R 50 50 1 0 T
X VCC 20 0 800 200 D 50 50 1 0 W
X A1 3 -500 400 200 R 50 50 1 0 T
X A2 4 -500 300 200 R 50 50 1 0 T
X A3 5 -500 200 200 R 50 50 1 0 T
X A4 6 -500 100 200 R 50 50 1 0 T
X A5 7 -500 0 200 R 50 50 1 0 T
X A6 8 -500 -100 200 R 50 50 1 0 T
X A7 9 -500 -200 200 R 50 50 1 0 T
ENDDRAW
ENDDEF
#
# 74xx_74LS32
#
DEF 74xx_74LS32 U 0 40 Y Y 5 L N
F0 "U" 0 50 50 H V C CNN
F1 "74xx_74LS32" 0 -50 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
DIP?14*
$ENDFPLIST
DRAW
A -360 0 258 354 -354 1 1 10 N -150 150 -150 -150
A -47 -52 204 150 837 1 1 10 f 150 0 -24 150
A -47 52 204 -150 -837 1 1 10 f 150 0 -24 -150
A -360 0 258 354 -354 2 1 10 N -150 150 -150 -150
A -47 -52 204 150 837 2 1 10 f 150 0 -24 150
A -47 52 204 -150 -837 2 1 10 f 150 0 -24 -150
A -360 0 258 354 -354 3 1 10 N -150 150 -150 -150
A -47 -52 204 150 837 3 1 10 f 150 0 -24 150
A -47 52 204 -150 -837 3 1 10 f 150 0 -24 -150
A -360 0 258 354 -354 4 1 10 N -150 150 -150 -150
A -47 -52 204 150 837 4 1 10 f 150 0 -24 150
A -47 52 204 -150 -837 4 1 10 f 150 0 -24 -150
A 0 0 150 -899 899 1 2 10 f 0 -150 0 150
A 0 0 150 -899 899 2 2 10 f 0 -150 0 150
A 0 0 150 -899 899 3 2 10 f 0 -150 0 150
A 0 0 150 -899 899 4 2 10 f 0 -150 0 150
S -200 300 200 -300 5 1 10 f
P 2 1 1 10 -150 -150 -25 -150 f
P 2 1 1 10 -150 150 -25 150 f
P 12 1 1 -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
P 2 2 1 10 -150 -150 -25 -150 f
P 2 2 1 10 -150 150 -25 150 f
P 12 2 1 -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
P 2 3 1 10 -150 -150 -25 -150 f
P 2 3 1 10 -150 150 -25 150 f
P 12 3 1 -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
P 2 4 1 10 -150 -150 -25 -150 f
P 2 4 1 10 -150 150 -25 150 f
P 12 4 1 -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
P 4 1 2 10 0 150 -150 150 -150 -150 0 -150 f
P 4 2 2 10 0 150 -150 150 -150 -150 0 -150 f
P 4 3 2 10 0 150 -150 150 -150 -150 0 -150 f
P 4 4 2 10 0 150 -150 150 -150 -150 0 -150 f
X VCC 14 0 500 200 D 50 50 5 0 W
X GND 7 0 -500 200 U 50 50 5 0 W
X ~ 1 -300 100 170 R 50 50 1 1 I
X ~ 2 -300 -100 170 R 50 50 1 1 I
X ~ 3 300 0 150 L 50 50 1 1 O
X ~ 4 -300 100 170 R 50 50 2 1 I
X ~ 5 -300 -100 170 R 50 50 2 1 I
X ~ 6 300 0 150 L 50 50 2 1 O
X ~ 10 -300 -100 170 R 50 50 3 1 I
X ~ 8 300 0 150 L 50 50 3 1 O
X ~ 9 -300 100 170 R 50 50 3 1 I
X ~ 11 300 0 150 L 50 50 4 1 O
X ~ 12 -300 100 170 R 50 50 4 1 I
X ~ 13 -300 -100 170 R 50 50 4 1 I
X ~ 1 -300 100 150 R 50 50 1 2 I I
X ~ 2 -300 -100 150 R 50 50 1 2 I I
X ~ 3 300 0 150 L 50 50 1 2 O I
X ~ 4 -300 100 150 R 50 50 2 2 I I
X ~ 5 -300 -100 150 R 50 50 2 2 I I
X ~ 6 300 0 150 L 50 50 2 2 O I
X ~ 10 -300 -100 150 R 50 50 3 2 I I
X ~ 8 300 0 150 L 50 50 3 2 O I
X ~ 9 -300 100 150 R 50 50 3 2 I I
X ~ 11 300 0 150 L 50 50 4 2 O I
X ~ 12 -300 100 150 R 50 50 4 2 I I
X ~ 13 -300 -100 150 R 50 50 4 2 I I
ENDDRAW
ENDDEF
#
# 74xx_74LS374
#
DEF 74xx_74LS374 U 0 20 Y Y 1 F N
F0 "U" -300 650 50 H V C CNN
F1 "74xx_74LS374" -300 -650 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
ALIAS 74HC374 74HCT374 74AHC374 74AHCT374
$FPLIST
DIP?20*
SOIC?20*
SO?20*
$ENDFPLIST
DRAW
S -300 600 300 -600 1 1 10 f
X OE 1 -500 -500 200 R 50 50 1 0 I I
X GND 10 0 -800 200 U 50 50 1 0 W
X Cp 11 -500 -400 200 R 50 50 1 0 I C
X O4 12 500 100 200 L 50 50 1 0 T
X D4 13 -500 100 200 R 50 50 1 0 I
X D5 14 -500 0 200 R 50 50 1 0 I
X O5 15 500 0 200 L 50 50 1 0 T
X O6 16 500 -100 200 L 50 50 1 0 T
X D6 17 -500 -100 200 R 50 50 1 0 I
X D7 18 -500 -200 200 R 50 50 1 0 I
X O7 19 500 -200 200 L 50 50 1 0 T
X O0 2 500 500 200 L 50 50 1 0 T
X VCC 20 0 800 200 D 50 50 1 0 W
X D0 3 -500 500 200 R 50 50 1 0 I
X D1 4 -500 400 200 R 50 50 1 0 I
X O1 5 500 400 200 L 50 50 1 0 T
X O2 6 500 300 200 L 50 50 1 0 T
X D2 7 -500 300 200 R 50 50 1 0 I
X D3 8 -500 200 200 R 50 50 1 0 I
X O3 9 500 200 200 L 50 50 1 0 T
ENDDRAW
ENDDEF
#
# Connector_Generic_Conn_02x25_Counter_Clockwise
#
DEF Connector_Generic_Conn_02x25_Counter_Clockwise J 0 40 Y N 1 F N
F0 "J" 50 1300 50 H V C CNN
F1 "Connector_Generic_Conn_02x25_Counter_Clockwise" 50 -1300 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
Connector*:*_2x??_*
$ENDFPLIST
DRAW
S -50 -1195 0 -1205 1 1 6 N
S -50 -1095 0 -1105 1 1 6 N
S -50 -995 0 -1005 1 1 6 N
S -50 -895 0 -905 1 1 6 N
S -50 -795 0 -805 1 1 6 N
S -50 -695 0 -705 1 1 6 N
S -50 -595 0 -605 1 1 6 N
S -50 -495 0 -505 1 1 6 N
S -50 -395 0 -405 1 1 6 N
S -50 -295 0 -305 1 1 6 N
S -50 -195 0 -205 1 1 6 N
S -50 -95 0 -105 1 1 6 N
S -50 5 0 -5 1 1 6 N
S -50 105 0 95 1 1 6 N
S -50 205 0 195 1 1 6 N
S -50 305 0 295 1 1 6 N
S -50 405 0 395 1 1 6 N
S -50 505 0 495 1 1 6 N
S -50 605 0 595 1 1 6 N
S -50 705 0 695 1 1 6 N
S -50 805 0 795 1 1 6 N
S -50 905 0 895 1 1 6 N
S -50 1005 0 995 1 1 6 N
S -50 1105 0 1095 1 1 6 N
S -50 1205 0 1195 1 1 6 N
S -50 1250 150 -1250 1 1 10 f
S 150 -1195 100 -1205 1 1 6 N
S 150 -1095 100 -1105 1 1 6 N
S 150 -995 100 -1005 1 1 6 N
S 150 -895 100 -905 1 1 6 N
S 150 -795 100 -805 1 1 6 N
S 150 -695 100 -705 1 1 6 N
S 150 -595 100 -605 1 1 6 N
S 150 -495 100 -505 1 1 6 N
S 150 -395 100 -405 1 1 6 N
S 150 -295 100 -305 1 1 6 N
S 150 -195 100 -205 1 1 6 N
S 150 -95 100 -105 1 1 6 N
S 150 5 100 -5 1 1 6 N
S 150 105 100 95 1 1 6 N
S 150 205 100 195 1 1 6 N
S 150 305 100 295 1 1 6 N
S 150 405 100 395 1 1 6 N
S 150 505 100 495 1 1 6 N
S 150 605 100 595 1 1 6 N
S 150 705 100 695 1 1 6 N
S 150 805 100 795 1 1 6 N
S 150 905 100 895 1 1 6 N
S 150 1005 100 995 1 1 6 N
S 150 1105 100 1095 1 1 6 N
S 150 1205 100 1195 1 1 6 N
X Pin_1 1 -200 1200 150 R 50 50 1 1 P
X Pin_10 10 -200 300 150 R 50 50 1 1 P
X Pin_11 11 -200 200 150 R 50 50 1 1 P
X Pin_12 12 -200 100 150 R 50 50 1 1 P
X Pin_13 13 -200 0 150 R 50 50 1 1 P
X Pin_14 14 -200 -100 150 R 50 50 1 1 P
X Pin_15 15 -200 -200 150 R 50 50 1 1 P
X Pin_16 16 -200 -300 150 R 50 50 1 1 P
X Pin_17 17 -200 -400 150 R 50 50 1 1 P
X Pin_18 18 -200 -500 150 R 50 50 1 1 P
X Pin_19 19 -200 -600 150 R 50 50 1 1 P
X Pin_2 2 -200 1100 150 R 50 50 1 1 P
X Pin_20 20 -200 -700 150 R 50 50 1 1 P
X Pin_21 21 -200 -800 150 R 50 50 1 1 P
X Pin_22 22 -200 -900 150 R 50 50 1 1 P
X Pin_23 23 -200 -1000 150 R 50 50 1 1 P
X Pin_24 24 -200 -1100 150 R 50 50 1 1 P
X Pin_25 25 -200 -1200 150 R 50 50 1 1 P
X Pin_26 26 300 -1200 150 L 50 50 1 1 P
X Pin_27 27 300 -1100 150 L 50 50 1 1 P
X Pin_28 28 300 -1000 150 L 50 50 1 1 P
X Pin_29 29 300 -900 150 L 50 50 1 1 P
X Pin_3 3 -200 1000 150 R 50 50 1 1 P
X Pin_30 30 300 -800 150 L 50 50 1 1 P
X Pin_31 31 300 -700 150 L 50 50 1 1 P
X Pin_32 32 300 -600 150 L 50 50 1 1 P
X Pin_33 33 300 -500 150 L 50 50 1 1 P
X Pin_34 34 300 -400 150 L 50 50 1 1 P
X Pin_35 35 300 -300 150 L 50 50 1 1 P
X Pin_36 36 300 -200 150 L 50 50 1 1 P
X Pin_37 37 300 -100 150 L 50 50 1 1 P
X Pin_38 38 300 0 150 L 50 50 1 1 P
X Pin_39 39 300 100 150 L 50 50 1 1 P
X Pin_4 4 -200 900 150 R 50 50 1 1 P
X Pin_40 40 300 200 150 L 50 50 1 1 P
X Pin_41 41 300 300 150 L 50 50 1 1 P
X Pin_42 42 300 400 150 L 50 50 1 1 P
X Pin_43 43 300 500 150 L 50 50 1 1 P
X Pin_44 44 300 600 150 L 50 50 1 1 P
X Pin_45 45 300 700 150 L 50 50 1 1 P
X Pin_46 46 300 800 150 L 50 50 1 1 P
X Pin_47 47 300 900 150 L 50 50 1 1 P
X Pin_48 48 300 1000 150 L 50 50 1 1 P
X Pin_49 49 300 1100 150 L 50 50 1 1 P
X Pin_5 5 -200 800 150 R 50 50 1 1 P
X Pin_50 50 300 1200 150 L 50 50 1 1 P
X Pin_6 6 -200 700 150 R 50 50 1 1 P
X Pin_7 7 -200 600 150 R 50 50 1 1 P
X Pin_8 8 -200 500 150 R 50 50 1 1 P
X Pin_9 9 -200 400 150 R 50 50 1 1 P
ENDDRAW
ENDDEF
#
# Device_C_Small
#
DEF Device_C_Small C 0 10 N N 1 F N
F0 "C" 10 70 50 H V L CNN
F1 "Device_C_Small" 10 -80 50 H V L CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
C_*
$ENDFPLIST
DRAW
P 2 0 1 13 -60 -20 60 -20 N
P 2 0 1 12 -60 20 60 20 N
X ~ 1 0 100 80 D 50 50 1 1 P
X ~ 2 0 -100 80 U 50 50 1 1 P
ENDDRAW
ENDDEF
#
# Memory_EPROM_27C080
#
DEF Memory_EPROM_27C080 U 0 20 Y Y 1 F N
F0 "U" -300 1250 50 H V C CNN
F1 "Memory_EPROM_27C080" 100 -1250 50 H V L CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
DIP*W15.24mm*
PLCC*
$ENDFPLIST
DRAW
S -300 1200 300 -1200 1 1 10 f
X A19 1 -400 -800 100 R 50 50 1 1 I
X A2 10 -400 900 100 R 50 50 1 1 I
X A1 11 -400 1000 100 R 50 50 1 1 I
X A0 12 -400 1100 100 R 50 50 1 1 I
X D0 13 400 1100 100 L 50 50 1 1 T
X D1 14 400 1000 100 L 50 50 1 1 T
X D2 15 400 900 100 L 50 50 1 1 T