Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Plus +3 wiznet #1021

Open
EtchedPixels opened this issue Sep 4, 2023 · 10 comments
Open

Plus +3 wiznet #1021

EtchedPixels opened this issue Sep 4, 2023 · 10 comments

Comments

@EtchedPixels
Copy link
Owner

Plus 3 kernel squashed, now seems to fit networking and more. Need to write the low level wiznet glue including the crazy mode
bank flipping sequences.

@pawosm-arm FYI

@pawosm-arm
Copy link
Contributor

Hi Alan,

That's a great news! I'm experiencing extremely busy weeks recently, but I'll try to give it a go when the tide gets low again.

I'm slightly confused that the change was introduced on the zx+3 platform, while zx-spectra hasn't been touched.

Thanks,
Paul

@EtchedPixels
Copy link
Owner Author

I managed to squash the +3 kernel down enough to do an unbanked solution. Will look at spectra for straight 128K later

@pawosm-arm
Copy link
Contributor

Ok then, it means zx+3 is what I am after, and zx-spectra is just a plan-b should the crazy mode bank flipping sequences turn out to be too problematic.

@pawosm-arm
Copy link
Contributor

I think plt_ide.h needs to be copied over from the platform-zxdiv, otherwise tinyide.c won't compile.

@pawosm-arm
Copy link
Contributor

pawosm-arm commented Sep 14, 2023

Strange things are happening when I'm trying to build the zx+3 filesystem image:

ERROR stdint.h:34 file not found
ERROR dbg.h:73 file not found
ERROR dio.h:74 file not found
ERROR device.h:75 file not found
ERROR serial.h:76 file not found
ERROR conio.h:77 file not found
ERROR drivewire.h:125 file not found
ERROR userstructs.h:143 file not found
ERROR stdint.h:168 file not found
ERROR Fix errors and re-run

can be addressed with a simple hack:

--- a/Library/include/fuzix-include.pkg
+++ b/Library/include/fuzix-include.pkg
@@ -31,7 +31,7 @@ f 0644 /usr/include/tms9995/stddef.h tms9995/stddef.h
 f 0644 /usr/include/tms9995/stdarg.h tms9995/stdarg.h
 f 0644 /usr/include/tms9995/stdbool.h tms9995/stdbool.h
 f 0644 /usr/include/stdio.h stdio.h
-f 0644 /usr/include/8086/stdint.h 8086/stdint.h
+# f 0644 /usr/include/8086/stdint.h 8086/stdint.h
 f 0644 /usr/include/errno.h errno.h
 f 0644 /usr/include/gpt.h gpt.h
 f 0644 /usr/include/termcap.h termcap.h
@@ -70,11 +70,11 @@ f 0644 /usr/include/riscv32/stddef.h riscv32/stddef.h
 f 0644 /usr/include/riscv32/stdarg.h riscv32/stdarg.h
 f 0644 /usr/include/riscv32/stdbool.h riscv32/stdbool.h
 f 0644 /usr/include/6502/stdint.h 6502/stdint.h
-f 0644 /usr/include/6502/dbg.h 6502/dbg.h
-f 0644 /usr/include/6502/dio.h 6502/dio.h
-f 0644 /usr/include/6502/device.h 6502/device.h
-f 0644 /usr/include/6502/serial.h 6502/serial.h
-f 0644 /usr/include/6502/conio.h 6502/conio.h
+# f 0644 /usr/include/6502/dbg.h 6502/dbg.h
+# f 0644 /usr/include/6502/dio.h 6502/dio.h
+# f 0644 /usr/include/6502/device.h 6502/device.h
+# f 0644 /usr/include/6502/serial.h 6502/serial.h
+# f 0644 /usr/include/6502/conio.h 6502/conio.h
 f 0644 /usr/include/termio.h termio.h
 f 0644 /usr/include/fenv.h fenv.h
 f 0644 /usr/include/utime.h utime.h
@@ -122,7 +122,7 @@ f 0644 /usr/include/sys/super.h sys/super.h
 f 0644 /usr/include/sys/lock.h sys/lock.h
 f 0644 /usr/include/sys/param.h sys/param.h
 f 0644 /usr/include/sys/compiler.h sys/compiler.h
-f 0644 /usr/include/sys/drivewire.h sys/drivewire.h
+# f 0644 /usr/include/sys/drivewire.h sys/drivewire.h
 f 0644 /usr/include/sys/resource.h sys/resource.h
 f 0644 /usr/include/sys/wait.h sys/wait.h
 f 0644 /usr/include/sys/rtc.h sys/rtc.h
@@ -140,7 +140,7 @@ f 0644 /usr/include/sys/stat.h sys/stat.h
 f 0644 /usr/include/sys/seek.h sys/seek.h
 f 0644 /usr/include/sys/file.h sys/file.h
 f 0644 /usr/include/sys/types.h sys/types.h
-f 0644 /usr/include/sys/userstructs.h sys/userstructs.h
+# f 0644 /usr/include/sys/userstructs.h sys/userstructs.h
 f 0644 /usr/include/6809/stdint.h 6809/stdint.h
 f 0644 /usr/include/6809/sys.h 6809/sys.h
 f 0644 /usr/include/net/if.h net/if.h
@@ -165,7 +165,7 @@ f 0644 /usr/include/cpu_ioctl.h cpu_ioctl.h
 f 0644 /usr/include/alloc.h alloc.h
 f 0644 /usr/include/paths.h paths.h
 f 0644 /usr/include/memory.h memory.h
-f 0644 /usr/include/pdp11/stdint.h pdp11/stdint.h
+# f 0644 /usr/include/pdp11/stdint.h pdp11/stdint.h
 f 0644 /usr/include/utmp.h utmp.h
 f 0644 /usr/include/fcntl.h fcntl.h
 f 0644 /usr/include/8080/stdint.h 8080/stdint.h

@EtchedPixels
Copy link
Owner Author

Should also be fixed. Things broke a bit from adding the 8080/5 native compiler set up. The Z80 one needs thought as the native and cross compilers are different so libc needs building twice somehow

@pawosm-arm
Copy link
Contributor

looking at the function stubs in the main.c file (why not wiznet.c?) I can't figure out how it's going to model CPLD.

@EtchedPixels
Copy link
Owner Author

Not sure I understand the question. The stubs are expecting to be able to drive the Wiznet chip (presumably by switching all the memory maps back and forth)

@pawosm-arm
Copy link
Contributor

Well, the only WizNet device I have is the Spectranet. I could be wrong and maybe I'm seeing non-existing problem, but for me, it doesn't seem doable to talk to the chip directly bypassing CPLD. So unless those once mentioned changes in the Spectranet firmware are about facilitating that, or we're talking about some abstract WizNet device and Spectranet isn't just one of them, and I should rather look at the zxspectra platform...

@EtchedPixels
Copy link
Owner Author

The CPLD doesn't appear to do anything magic. It's just mapping the device directly into the Z80 address space. The device has 3 modes

  • SPI mode
  • A mode where it occupies only a few addresses and you poke at it by setting index registers
  • A mode where it's properly mapped

The wiznet using systems currently in the kernel use the few addresses mode and indexes. The CPLD merely maps the device 128K into a load of 4K pages in the spectranet space when paged in. Either way of accessing them should work although I imagine mapping it and writing directly will be faster than pinning the one page and using the indirect modes

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants