From aab647a0cc135a0510ded3b65b812dfd110321a5 Mon Sep 17 00:00:00 2001 From: Andreas Baumann Date: Sun, 14 Jan 2024 19:40:25 +0100 Subject: updated links and documentation --- doc/FEEDBACK.WYOOS | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 doc/FEEDBACK.WYOOS (limited to 'doc/FEEDBACK.WYOOS') 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 + -- cgit v1.2.3-54-g00ecf