summaryrefslogtreecommitdiff
path: root/doc/FEEDBACK.WYOOS
diff options
context:
space:
mode:
Diffstat (limited to 'doc/FEEDBACK.WYOOS')
-rw-r--r--doc/FEEDBACK.WYOOS85
1 files changed, 85 insertions, 0 deletions
diff --git a/doc/FEEDBACK.WYOOS b/doc/FEEDBACK.WYOOS
new file mode 100644
index 0000000..f443502
--- /dev/null
+++ b/doc/FEEDBACK.WYOOS
@@ -0,0 +1,85 @@
+Ep 12.
+- bad design: well, mapped memory area was small on a PC (19-bit),
+ when VGA came along. Other platforms already had 24-bit or 32-bit
+ address buses. This and the (in)famous I/O ports make things look
+ bad. It was a cheap solution for an already established architecture,
+ which had to remain backwards compatible (to things like EGA and CGA).
+- some many ports, this is because it was an "array of chips", all
+ with their own port (vector graphics array)
+- case 0<<2: return (uint8_t*)0x00000;
+ -> I read docu A0000
+- strange bar at the bottom of the screen (in qemu), it seems, the
+ fill-rectangle stops before reaching the bottom. Timing issue in
+ emulators (bochs and qemu), happens with tcc/gcc, not with clang
+ (optimizations?)
+- Some more links on VGA programming without a BIOS
+ http://bos.asmhackers.net/docs/vga_without_bios/docs/
+
+Ep. 13:
+- Don't agree with "everything implement as pixel"! See osdev comments
+ on that. At least a note on, yes we do it here for educational reasons
+ the same way we are using 320x200x8 and not something multi-planar
+ would be an idea.
+- Why color as property of a widget?
+- Why not call the base method in composite widget getFocus?
+- Colors shouldn't theybe 0000aa instead of 0000a8?
+
+Ep. 14:
+- I would actually do a console doing serial/VGA text and then later
+ VGA graphics console (like xconsole), mentioned at the end of the
+ video. good.
+- the mouse cursor gets reddrawn? I would actually introduce the concept
+ of sprites and memory to VGA masking for fonts and the mouse cursor
+- Readrawing the whole desktop when the mouse cursor moves?
+- Do not test in putpixel, make it fatal, make sure the mouse drawing
+ routine protects against writting outisde of the screen. I don't
+ think automatically cutting of drawing areas is the way to go, especially
+ if partial redraws must be implemented later.
+- Z-buffers would be nice to introduce, but as there is no memory
+ manager yet we cannot allocate 320x200=64k yet. Could we implement
+ an alloca? Or just a fixed buffer in the video driver?
+- window move doesn't cover borders and corner cases like when the
+ mouse leaves the area of the window while dragging (thusly requiring
+ us to disable dragging)
+- should a desktop paint the mouse cursor and implement a mouse handler?
+ This also means the interrupt handler directly calls GUI routines, this
+ cannot be good. A realistic design would implement an event queue here..
+
+Ep. 15
+- eflags 0x202, magic?! what does it mean? Also iret should be explained
+ once more in order to understand the packed structure CPUState
+- we cannot get back to the main stack, we should have a schedule_stop,
+ so we can go back into the main thread and terminate the kernel properly
+- not very obvious this is IRQ 0:
+ if(interrupt == hardwareInterruptOffset)
+ better explicit
+
+Ep. 16
+- how to get a good place for the heap
+ maybe it's part of the multiboot grub structure?
+ or we need to ask the bios for the memory layout?
+
+Ep. 17
+- did another network driver RTL8137, deviating heavily from tutorial, also
+ answering QEMU ARP requests first (in user network mode)
+- malloc -> memalign or aligned_alloc instead of playing with +16 &0f and stuff
+ like that
+- garbage descriptors, yes, it is weird, but in hardware there are usually
+ reasons, why it is done like this.
+
+Ep. 18
+- qemu and a user network with
+ -netdev user,id=net0,net=10.0.0.0/24,host=10.0.0.2,dhcpstart=10.0.0.16,hostfwd=tcp::8080-:80,hostfwd=udp::8081-:81
+ gives us very fast access to sort of a pre-configured network
+ This gives the ARP on the first UDP/TCP packet
+
+Ep. A01
+- why 65535 handlers? So many?, a for all uint16_t possible types of ethernet types,
+ this means wasting 128 for a really sparse switch.
+ -> I would do a hash from protocols to slots, from slots to handlers
+- wireshark and tcpdump for debugging
+
+Ep.20
+- user space, Oberon has none. syscalls are there to sanitize values and calls from
+ user processes
+