Merge branch 'fullbyte' of https://github.com/tjboldt/Apple2-IO-RPi into fullbyte

This commit is contained in:
Terence Boldt 2021-01-16 15:55:53 -05:00
commit 278425d8d3
7 changed files with 45 additions and 51 deletions

View File

@ -1,4 +1,4 @@
ca65 V2.19 - Git 59c58acb ca65 V2.19 - Git 59c58ac
Main file : Driver.asm Main file : Driver.asm
Current file: Driver.asm Current file: Driver.asm

View File

@ -14,6 +14,8 @@ WriteProtect = $2B
SlotDrive = $50 SlotDrive = $50
InputByte = $c08e InputByte = $c08e
OutputByte = $c08d OutputByte = $c08d
InputFlags = $c08b
OutputFlags = $c087
ReadBlockCommand = $01 ReadBlockCommand = $01
WriteBlockCommand = $02 WriteBlockCommand = $02
GetTimeCommand = $03 GetTimeCommand = $03
@ -142,58 +144,40 @@ write256:
rts rts
SendByte: SendByte:
pha
lsr
lsr
lsr
lsr
jsr SendNibble
pla
jsr SendNibble
rts
SendNibble:
and #$0F
ora #$70 ;Write bit low
pha pha
waitWrite: waitWrite:
lda InputByte,x lda InputFlags,x
asl ;Second highest bit goes low when ready rol
bmi waitWrite rol
bcs waitWrite
pla pla
sta OutputByte,x sta OutputByte,x
lda #$0e ; set bit 0 low to indicate write started
sta OutputFlags,x
finishWrite: finishWrite:
lda InputByte,x lda InputFlags,x
asl rol
bpl finishWrite rol
lda #$FF bcc finishWrite
sta OutputByte,x lda #$0f
sta OutputFlags,x
rts rts
GetByte: GetByte:
jsr GetNibble lda #$0d ;set read flag low
asl sta OutputFlags,x
asl
asl
asl
sta NibbleStorage
jsr GetNibble
and #$0f
ora NibbleStorage
rts
GetNibble:
lda #$b0 ;set read flag low
sta OutputByte,x
waitRead: waitRead:
lda InputByte,x lda InputFlags,x
bmi waitRead rol
ora #$f0 ;set all flags high bcs waitRead
sta OutputByte,x lda InputByte
pha pha
lda #$0f ;set all flags high
sta OutputFlags,x
finishRead: finishRead:
lda InputByte,x lda InputFlags,x
bpl finishRead rol
bcc finishRead
pla pla
end: end:
rts rts

Binary file not shown.

Binary file not shown.

View File

@ -10,3 +10,9 @@ ca65 Firmware.asm -D STARTSLOT=\$c500 -o Slot5.o --listing Firmware5.lst
ca65 Firmware.asm -D STARTSLOT=\$c600 -o Slot6.o --listing Firmware6.lst ca65 Firmware.asm -D STARTSLOT=\$c600 -o Slot6.o --listing Firmware6.lst
ca65 Firmware.asm -D STARTSLOT=\$c700 -o Slot7.o --listing Firmware7.lst ca65 Firmware.asm -D STARTSLOT=\$c700 -o Slot7.o --listing Firmware7.lst
ld65 Slot0.o Slot1.o Slot2.o Slot3.o Slot4.o Slot5.o Slot6.o Slot7.o -o Firmware.bin -t none ld65 Slot0.o Slot1.o Slot2.o Slot3.o Slot4.o Slot5.o Slot6.o Slot7.o -o Firmware.bin -t none
cat \
Firmware.bin Firmware.bin Firmware.bin Firmware.bin \
Firmware.bin Firmware.bin Firmware.bin Firmware.bin \
Firmware.bin Firmware.bin Firmware.bin Firmware.bin \
Firmware.bin Firmware.bin Firmware.bin Firmware.bin \
> Firmware_27256_EPROM.bin

Binary file not shown.

Before

Width:  |  Height:  |  Size: 790 KiB

After

Width:  |  Height:  |  Size: 3.3 MiB

View File

@ -7,17 +7,21 @@ Apple II expansion card using a Raspberry Pi for I/O
The purpose of this project is to provide I/O for an Apple II series 8 bit computer via a Raspberry Pi Zero W which is powered by the Apple II expansion bus. Initially this is storage via virtual ProDOS compatible drive. Next might be adding virtual serial card support over wifi. Future enhancements could use the RPi for more complex processing as per request from the Apple II. For example, the Apple II could request a web page or application and the RPi could calculate this in Apple II hi-res graphics mode and send the image data back to the II for display purposes. The purpose of this project is to provide I/O for an Apple II series 8 bit computer via a Raspberry Pi Zero W which is powered by the Apple II expansion bus. Initially this is storage via virtual ProDOS compatible drive. Next might be adding virtual serial card support over wifi. Future enhancements could use the RPi for more complex processing as per request from the Apple II. For example, the Apple II could request a web page or application and the RPi could calculate this in Apple II hi-res graphics mode and send the image data back to the II for display purposes.
## Project Status ## Project Status
This is an early stage project. Currently one board has been assembled and tested. It is now possible for the Apple II to boot from and write to a virutal hard drive image stored on the RPi in any slot. The code has no error handling or tests yet and is incomplete. This is an early stage project. Currently three prototype revisions been assembled and tested. It is now possible for the Apple II to boot from and write to a virutal hard drive image stored on the RPi in any slot and execute simple commands on the RPi via an Apple II application. The code has no error handling or tests yet and is incomplete.
## Roadmap ## Roadmap
1. DONE - Build initial prototype that reads/writes virtual hard drive 1. DONE - Build initial prototype that reads/writes virtual hard drive
2. DONE - Create firmware to make the card a bootable device 2. DONE - Create firmware to make the card a bootable device
3. DONE - Fix board with updated second prototype PCB 3. DONE - Fix board with updated second prototype PCB
4. WORKING - Add ProDOS clock driver (real driver later, for now just directly sets values) 4. DONE - Add ProDOS clock support
5. WORKING - Add RPi terminal access (does not keep context between commands yet) 5. WORKING - Add simple RPi command execution (does not keep context between commands yet)
6. Add web service call support 6. DONE - Create new schematic/PCB with faster data transfer
7. Proxy VNC connection, rendering as Apple II compatible graphics 7. Add proper ProDOS clock driver (currently just directly sets values on block reads)
8. Create new schematic/PCB with faster data transfer 8. Add directory context to RPi command execution
9. Add full terminal emulation
10. Add support for direct file read/write without drive image
11. Add web service call support
12. Proxy VNC connection, rendering as Apple II compatible graphics
## Setup ## Setup
1. Have PCBs made from the gerber and drill files in the Hardware folder 1. Have PCBs made from the gerber and drill files in the Hardware folder
@ -29,12 +33,12 @@ This is an early stage project. Currently one board has been assembled and teste
7. Put microSD card in the RPi 7. Put microSD card in the RPi
8. Install the expansion card into the Apple II 8. Install the expansion card into the Apple II
9. Power on the Apple II 9. Power on the Apple II
10. Install Go on the RPi over ssh 10. Install Git and Go on the RPi over ssh
11. go build Driver.go 11. go build Driver.go
12. Copy a ProDOS hard drive image onto the RPi 12. Copy a ProDOS hard drive image onto the RPi
13. ./Driver HARDDRIVE.hdv 13. ./Driver HARDDRIVE.hdv
14. Setup the Driver as a service or to autostart via cronjob
## Similar Project ## Similar Project
If you're looking for complete hardware design or prefer having Apple II peripherals control a control a Raspberry Pi rather than simply using the Raspberry Pi to provide storage and network access to the Apple II, have a look at David Schmenk's excellent [Apple2Pi](https://github.com/dschmenk/apple2pi) project. If you prefer having Apple II peripherals control a Raspberry Pi rather than simply using the Raspberry Pi to provide storage, network access and processing to the Apple II, have a look at David Schmenk's excellent [Apple2Pi](https://github.com/dschmenk/apple2pi) project.