Files
TermiNexus 5f5a119f06 fix(vkernel): schedule_int_transfer 的 toggle 形参改为值传递
schedule_int_transfer 第 6 形参原为 toggle_ptr: uint8*,却直接转发给 _td_set_token 的值形参 toggle: uint8,命中指针隐式转整数禁令(uhci.vp:160 CastError)。改为 toggle: uint8 值传递,四个调用点去掉取地址,buf 仍以 & 传。同时纳入工作区既有的指针语法迁移:t.CPtr 改 X*、c.Addr 改 &、c.Set(c.Deref(...)) 改 *p = v。
2026-09-27 15:05:37 +08:00

58 lines
1.3 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import platform.pch.pic as pic
import drivers.serial.uart.su8250 as su8250
import asm
import viperlib
def init():
# Init COM1 port
su8250.init(su8250.COM1_PORT)
# COM1(IRQ4)
pic.clearMask(4)
def putc(cr: char):
su8250.putchar(su8250.COM1_PORT, cr)
def putchar(cr: char):
su8250.putchar(su8250.COM1_PORT, cr)
def getchar() -> char:
return su8250.getchar(su8250.COM1_PORT)
def puts(s: str):
for i in s:
putchar(i)
def isDataAvailable() -> int:
return su8250.isDataAvailable(su8250.COM1_PORT)
def isTransmitEmpty() -> int:
return su8250.isTransmitEmpty(su8250.COM1_PORT)
def put_hex32(value: uint32):
hex_digits: []char = ["0123456789ABCDEF"]
buffer: [9]char
for i in range(7, -1, -1):
buffer[i] = hex_digits[value & 0xF]
value >>= 4
buffer[8] = '\0'
puts(buffer)
export def printf(fmt: const str, *args) -> int:
if fmt is None:
return 0
buf: [1024]char
n: int = viperlib.vsnprintf(&buf, 1024, fmt, args)
puts(buf)
return n
export def fflush(stream: const rawptr) -> int:
return 0
export def exit(status: int) -> int:
asm.outw(0x604, 0x2000) # QEMU ACPI shutdown
asm.outw(0xB004, 0x2000) # Bochs/QEMU shutdown
while True:
asm.hlt()
return 0