summaryrefslogtreecommitdiff
path: root/doc/FEEDBACK.WYOOS
blob: f443502766bc0473ee82fa165523f6d061889edf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
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