0 (ilo:x86) (port_io,_physical_memory) 1 2 :pio:inb (n-c) #0 #100 io ; 3 :pio:inw (n-n) #1 #100 io ; 4 :pio:outb (vn-) #2 #100 io ; 5 :pio:outw (vn-) #3 #100 io ; 6 7 :mem:fetch-byte (a-c) #0 #101 io ; 8 :mem:store-byte (ca-) #1 #101 io ; 9 :mem:fetch (a-n) #2 #101 io ; 10 :mem:store (na-) #3 #101 io ; 11 12 13 14 15 save next new 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 save next new 0 (ilo:x86) (cmos,_rtc) 1 2 :CMOS:ADDRESS #112 ; 3 :CMOS:DATA #113 ; 4 5 :rtc:query CMOS:ADDRESS pio:outb CMOS:DATA pio:inb ; 6 :rtc:second #0 rtc:query ; 7 :rtc:minute #2 rtc:query ; 8 :rtc:hour #4 rtc:query ; 9 :rtc:day #7 rtc:query ; 10 :rtc:month #8 rtc:query ; 11 :rtc:year #9 rtc:query ; 12 13 :.time rtc:hour n:put $: c:put rtc:minute n:put nl ; 14 15 save next new 0 (ilo:x86) (serial) 1 2 :serial:COM1 #1016 ; :serial:COM2 #760 ; 3 :serial:COM3 #1000 ; :serial:COM4 #744 ; 4 serial:COM1 'serial:Port var-n 5 6 :serial:recv? @serial:Port #5 n:add pio:inb #1 and n:-zero? ; 7 :serial:empty? @serial:Port #5 n:add pio:inb #32 and n:-zero? ; 8 :serial:read (-c) 9 [ serial:recv? [ @serial:Port pio:inb #-1 ] [ #0 ] choose 10 until ; 11 :serial:write (c-) 12 [ serial:empty? [ @serial:Port pio:outb #-1 ] [ #0 ] choose ] 13 until ; 14 :serial:send (s-) [ serial:write ] s:for-each ; 15 save next new 0 (ilo:x86) (serial) 1 2 :serial:init 3 #0 @serial:Port #1 n:add pio:outb 4 #128 @serial:Port #3 n:add pio:outb 5 #3 @serial:Port pio:outb 6 #0 @serial:Port #1 n:add pio:outb 7 #3 @serial:Port #3 n:add pio:outb 8 #199 @serial:Port #2 n:add pio:outb 9 #11 @serial:Port #4 n:add pio:outb ; 10 11 12 13 14 15 save next new 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 save next new 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 save next new 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 save next new 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 save next new 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 save next new 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 save next new 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 save next new 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 save next new 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 save next new 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 save next new 0 (LOAD:x86) 1 2 '(ilo:x86) needs 3 4 5 6 7 8 9 10 11 12 13 14 15 save next new