.globl _switchin
.globl _platform_switchout
.globl _dofork
+ .globl map_buffers
.globl map_kernel
.globl map_process_always
.globl map_kernel_di
call outstring
jp _platform_monitor
+map_buffers:
map_kernel_di:
map_kernel: ; map the kernel into the low 60K, leaves common memory unchanged
push af
.globl map_kernel
.globl map_kernel_di
.globl map_kernel_restore
+ .globl map_buffers
.globl map_process
.globl map_process_di
.globl map_process_always
; mark the low 16K R/O to protect it from user but then need to
; flip r/w on syscall and irq entry/exit.. FIXME.
;
+map_buffers:
map_kernel:
map_kernel_di:
map_kernel_restore:
.globl init_early
.globl init_hardware
.globl _program_vectors
+ .globl map_buffers
.globl map_kernel
.globl map_process
.globl map_process_always
;
; map_kernel - map in the kernel, trashes nothing
; map_process_always - map in the current process, ditto
+; map_buffers - map in the kernel + buffers, ditto
; map_process - map the pages pointed to by hl, eats
; a, hl
;
kmap: .db 0x80, 0x81, 0x82, 0x83
+map_buffers:
map_kernel:
map_kernel_di:
push af
;=========================================================================
; map_kernel - map kernel pages
+; map_buffers - map kernel and buffers (no difference for us)
; Inputs: none
; Outputs: none; all registers preserved
;=========================================================================
+map_buffers:
map_kernel:
map_kernel_di:
push af
.globl init_hardware
.globl interrupt_handler
.globl _program_vectors
+ .globl map_buffers
.globl map_kernel
.globl map_kernel_di
.globl map_process
; are definitely off. In our case it's not useful information so both
; symbols end up at the same code.
;
+map_buffers:
+ ; for us no difference. We could potentially use a low 32K bank
+ ; for buffers but it's not clear it would gain us much value
map_kernel_di:
map_kernel:
push af
.globl init_hardware
.globl interrupt_handler
.globl _program_vectors
+ .globl map_buffers
.globl map_kernel
.globl map_kernel_di
.globl map_process
;
; The top 32K bank holds kernel code and pieces of common memory
; The lower 32K is switched between the various user banks.
+; We don't have a separate 32K for buffers as memory is too precious
+; on must Microbees
;
+map_buffers:
map_kernel:
map_kernel_di:
push af
.globl init_hardware
.globl interrupt_handler
.globl _program_vectors
+ .globl map_buffers
.globl map_kernel
.globl map_kernel_di
.globl map_process
; We map the low 64K 1:1 in kernel mode, keep the top 8K fixed and
; map the others by 'bank' for user mode. We don't actually use the
; hardware user mode yet. It's all just a bodge to get us up and
-; running
+; running.
;
+; Some day we probably want the buffers outside of the main map, at
+; least until we do split I/D somehow.
+;
+map_buffers:
map_kernel:
map_kernel_di:
push af