📄 iodat.inc
字号:
;---------------------------------------------------------------
;iodat.inc - data for I/O Monitor |
;--------------------------------------------------------------|
;
iostack3 segment para stack 'STACK' use16
io_stack3 dw 256 dup('S')
io_sp3 label word
iostack3 ends
iostack segment para public 'STACK' use16
STACK_BEG EQU $
io_stack dw 256 dup('S')
io_sp label word
STACK_END EQU $
iostack ends
gdt_seg segment para public 'data16' use16
public sel_databs
public sel_stack
public sel_video
public sel_data
public sel_tss_alias
GDT_BEG EQU $
sel_null seg_descrip <>
sel_tss seg_descrip <>
sel_tss_alias seg_descrip <>
sel_gdt_alias seg_descrip <>
sel_isrcode seg_descrip <>
sel_code seg_descrip <>
sel_databs seg_descrip <>
sel_stack seg_descrip <>
sel_video seg_descrip <>
sel_data seg_descrip <>
GDT_END EQU $
gdt_seg ends
idt_seg segment para public 'data16' use16
IDT_BEG EQU $
DEFIDTI 0
idt <isrcode:int1_isr,gdt_seg:sel_isrcode,,PRESENT+(DPL0 shl 5)+INT_GATE,>
DEFIDTI 2
idt <,,,PRESENT + (DPL0 shl 5) + INT_GATE,>
irp z, <4, 5, 6, 7>
DEFIDTI &z
endm
irp z, <8, 9, 0ah, 0bh, 0ch, 0dh, 0eh, 0fh>
DEFIDTE &z
endm
idt (1fh - 0fh) dup(<,,,PRESENT + (DPL0 shl 5) + INT_GATE,>)
irp z, <20h, 21h, 22h, 23h, 24h, 25h, 26h, 27h>
DEFIDTI &z
endm
idt (6Fh - 27h) dup(<,,,PRESENT + (DPL0 shl 5) + INT_GATE,>)
irp z, <70h, 71h, 72h, 73h, 74h, 75h, 76h, 77h>
DEFIDTI &z
endm
IDT_END EQU $
idt_seg ends
data segment para public 'data16' use16
public start_port
public end_port
public old_int1
public old_user_int
public io_table
public IO_TAB_ENTRIES
public access_port
public access_info
public io_buf
public io_buf_end
public io_buf_ptr
public io_repeat_ptr
public io_buf_wrap
public display_loc
public trap_status
DATA_BEG EQU $
noprot_msg db 'Cannot run if already in protected mode.', BEEP, CR, LF, '$'
not386_msg db 'Program requires at least an 80386.', BEEP, CR, LF, '$'
bad_2nd_msg db '2nd port number must be >= first port.', BEEP, CR, LF, '$'
bad_arg_msg db 'Invalid port address specified.', CR, LF, 'Usage: IOMON <start hex port address> <end hexd port address>', BEEP, CR, LF, '$'
start_port dw 0
end_port dw 0
old_int1 dd ?
old_user_int dd ?
access_port dw ?
access_info db ?
trap_status db 0
io_table io_struc <0e4h, INPUT+CONSTANT+ABYTE>
io_struc <0e5h, INPUT+CONSTANT+AWORD>
io_struc <0e6h, OUTPUT+CONSTANT+ABYTE>
io_struc <0e7h, OUTPUT+CONSTANT+AWORD>
io_struc <0ech, INPUT+ABYTE>
io_struc <0edh, INPUT+AWORD>
io_struc <0eeh, OUTPUT+ABYTE>
io_struc <0efh, OUTPUT+AWORD>
IO_TAB_ENTRIES EQU ($ - io_table)/size io_struc
io_buf db BUF_SIZE dup(0ffh)
io_buf_end equ $
io_buf_ptr dw offset io_buf
io_repeat_ptr dw offset io_buf
io_buf_wrap db 0
gdtl EQU THIS FWORD
gdtlim dw (GDT_END-GDT_BEG)-1
gdtadrs dd ?
idtl EQU THIS FWORD
idtlim dw (IDT_END-IDT_BEG)-1
idtadrs dd ?
display_loc dw 0 ;offset into video page
DATA_END EQU $
data ends
tss_seg segment para public 'data16' use16
TSS_BEG EQU $
tss_dat <>
TSS_END EQU $
tss_seg ends
;------end of iodat.inc
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -