EtchedPixels / FUZIX

FuzixOS: Because Small Is Beautiful
Other
2.13k stars 267 forks source link

Plus +3 wiznet #1021

Open EtchedPixels opened 10 months ago

EtchedPixels commented 10 months ago

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 commented 10 months ago

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 commented 10 months ago

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

pawosm-arm commented 10 months ago

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 commented 10 months ago

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

pawosm-arm commented 10 months ago

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 commented 10 months ago

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 commented 8 months ago

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 commented 8 months ago

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 commented 8 months ago

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 commented 8 months ago

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

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