home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 1
/
FREEWARE.BIN
/
ms_dos
/
inicrt
/
inicrt.asm
next >
Wrap
Assembly Source File
|
1989-10-17
|
20KB
|
709 lines
page 90, 126
title 'FM-TOWNS CRTC direct control'
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; CRTC initialize routine
;
;file name: INICRT.EXE
;machine: FM-TOWNS
;cpu: 80386
;other file: none
;asm: masm ver5.1
;tab: 8
;price: none
;copy: free
;copyright: (C) YACHT 1989.
;date: Sat, 9 Sep 1989 V1.0A
; Wed, 4 Oct 1989 V1.00A ( source modify )
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.386
;; include ybioa.inc ; header file
opsize macro
db 66h
endm
reg_set struc
crtc_HSW1 dw ?
crtc_HSW2 dw ?
dw ?
dw ?
crtc_HST dw ?
crtc_VST1 dw ?
crtc_VST2 dw ?
crtc_EET dw ?
crtc_VST dw ?
crtc_HDS0 dw ?
crtc_HDE0 dw ?
crtc_HDS1 dw ?
crtc_HDE1 dw ?
crtc_VDS0 dw ?
crtc_VDE0 dw ?
crtc_VDS1 dw ?
crtc_VDE1 dw ?
crtc_FA0 dw ?
crtc_HAJ0 dw ?
crtc_FO0 dw ?
crtc_LO0 dw ?
crtc_FA1 dw ?
crtc_HAJ1 dw ?
crtc_FO1 dw ?
crtc_LO1 dw ?
crtc_EHAJ dw ?
crtc_EVAJ dw ?
crtc_ZOOM dw ?
crtc_CR0 dw ?
crtc_CR1 dw ?
crtc_FR dw ?
crtc_CR2 dw ?
reg_set ends
assume cs: CODE, ss: STACK
CODE segment para public use16
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; jptable
;in: ds = PSP segment
;out: none
;dest: ?
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
jptable proc far
jmp start
version label byte
db 'inicrt.exe '
db 'Version 0.1A ' ; 1.00A
db 'FM-TOWNS '
db 'Fri, 9 Sep 1989 '
db '$'
DATA_seg_ptr dw seg DATA
jptable endp
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; start
;
;in: DS = PSP segment
;out: none
;dest: ?
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
start proc near
mov bx, ds
mov ds, cs: word ptr DATA_seg_ptr
assume ds: DATA
mov word ptr PSP_seg_ptr, bx
mov ds, bx
assume ds: nothing
mov bx, 0080h
movzx cx, byte ptr [ bx ]
inc bx
or cx, cx ; イラナイ
jcxz short start_msg
call spskip ; space skip
jc short start_msg ; end of line
cmp al, '?' ; if help command
jz start_help
cmp al, '@' ;
jz short direct_reg_set
call rdasc ;
jc short start_err ; error
or ax, ax ; if zero
jz short start_err
cmp ax, 00018d ; max reg.
ja short start_err ; error
mov dx, ax
call spskip ; space skip
jc short start_1 ; single screen
cmp dx, 0012d
ja short start_err ; error
call rdasc
jc short start_err ; error
or ax, ax
jz short start_err ; error
cmp ax, 0011d ; max
ja short start_err
dec ax
mov cx, dx
mov bx, 0012
mul bx
add ax, cx
mov bx, ax
add bx, offset combine_table
jmp short start_2
start_1: ; for single screen
mov bx, dx
add bx, offset single_screen_table
start_2:
mov ds, cs: word ptr DATA_seg_ptr
assume ds: DATA
movzx ax, byte ptr [ bx ]
or ax, ax
jz short start_err ; error
jmp short direct_reg_set_1
assume ds: nothing
direct_reg_set:
inc bx
dec cx
jcxz short start_err ; error
call rdasc
jc short start_err ; error
cmp ax, 0032d ; max
ja short start_err
direct_reg_set_1:
mov ds, cs: word ptr DATA_seg_ptr
assume ds: DATA
call init_screen ; set crtc
jmp short start_none
assume ds: nothing
start_err:
mov dx, offset error_msg
jmp short start_msg_1
start_msg:
mov dx, offset usage_msg
start_msg_1:
mov ds, cs: word ptr DATA_seg_ptr
assume ds: DATA
start_msg_2:
mov ah, 9
int 21h
mov al,01h
start_ret:
mov ah, 4ch
int 21h
ret
start_none:
xor al, al
jmp short start_ret
start_help:
mov ds, cs: word ptr DATA_seg_ptr
assume ds: DATA
mov dx, offset combine_msg
jmp short start_msg_2
start endp
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; spskip
;in: bx = address
; cx = counter
;out: bx = next
; cx = counter
; al = code
; cf = error
;dest: bx, ax, flags
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
spskip proc near
jcxz short spskip_0
cmp byte ptr [ bx ], ' '
jnz short spskip_1
inc bx
loop short spskip
spskip_0:
stc
jmp short spskip_2
spskip_1:
clc
spskip_2:
mov al, byte ptr [ bx ]
ret
spskip endp
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; rdasc
;in: bx = data
; cx = counter
;out: bx = next
; cx = count
; ax = suu
;dest: ax, bx, cx, flags
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
rdasc proc near
push dx
push si
mov dx, 0000
jcxz short rdasc_3
xor ah, ah
mov al, [ bx ]
sub al, '0'
jc short rdasc_3
cmp al, 9
ja short rdasc_3
jmp short rdasc_2
rdasc_1:
mov al, [ bx ]
sub al, '0'
jc short rdasc_4
cmp al, 9
ja short rdasc_4
rdasc_2:
add dx, dx ; *2
mov si, dx
shl dx, 2 ; *8
add dx, si ; *10
add dx, ax
inc bx
loop short rdasc_1
jmp short rdasc_4
rdasc_3:
stc
jmp short rdasc_5
rdasc_4:
clc
rdasc_5:
mov ax, dx
pop si
pop dx
ret
rdasc endp
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; init_screen
;in: ax = no
;out: none
;dest: ?
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
init_screen proc near
call crtc_data
jc short init_screen_ret
call display_off
call crtc_init
call video_ctl
call display_on
init_screen_ret:
ret
init_screen endp
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; crtc_data
;in: ax = no.
;out: si = crtc data address
; di = sifter address
;dest: ?
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
crtc_data proc near
cmp ax, 33
cmc
jc short crtc_data_ret
mov si, ax
shl si, 6
add si, offset reg_set0
mov di, ax
shl di, 1
add di, offset sifter_data
crtc_data_ret:
ret
crtc_data endp
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; crtc_init
;
;in: si = crtc data address
; di = sifter address
;out: none
;dest: ?
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
crtc_init proc near
call crtc_off
call crtc_set
call crtc_on
ret
crtc_init endp
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; video_ctl
;
;in: si = crtc data address
; di = sifter address
;out: none
;dest: flags
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
video_ctl proc near
push ax
push dx
mov dx, 0448h ; reg 1
mov al, 0h
out dx, al
mov dx, 044ah ; mov dl, 4ah
mov ax, [ di ]
out dx, al
mov dx, 0448h ; mov dl, 48h
mov al, 01h ; reg 0
out dx, al
mov dx, 044ah ; mov dl, 4ah
mov al, ah
out dx, al
pop dx
pop ax
ret
video_ctl endp
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; crtc_set
;
;in: si = crtc data address
; di = sifter address
;out: none
;dest: flags
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
crtc_set proc near
push si
push ax
push di
push dx
push cx
mov di, 0440h
mov cx, 0020h ; reg. count
mov ax, 4200h ; start register
cld
crtset_2:
mov dx, di ; 0440h
out dx, al
mov dl, ah ; 0442h
outsw
inc al
loop short crtset_2
pop cx
pop dx
pop di
pop ax
pop si
ret
crtc_set endp
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; crtc_on
;
;in: si = crtc data address
; di = sifter address
;out: none
;dest: flags
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
crtc_on proc near
push ax
push dx
mov ah, [ si + ( 1ch * 2 ) + 1 ]
or ah, 80h ; display start
call crtc_onoff
pop dx
pop ax
ret
crtc_on endp
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; crtc_off
;in: none
;out: none
;dest: flags
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
crtc_off proc near
push ax
push dx
xor ah, ah
call crtc_onoff
pop dx
pop ax
ret
crtc_off endp
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; crtc_onoff
;in: ah = data
;out: none
;dest: dx
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
crtc_onoff proc near
mov dx, 0440h ; crtc
mov al, 1ch ; reg. 1ch
out dx, al
mov dl, 43h
mov al, ah
out dx, al
ret
crtc_onoff endp
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; crtc_wait
;in: none
;out: none
;dest: ?
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
crtc_wait proc near
push ecx
push ax
push dx
mov ecx, 10000h ; time loop
cli
mov dx, 0440h ; crtc
mov al, 1ch ; reg. 1ch
out dx, al
mov dl, 43h
crtc_wait_1:
in al, dx
or al, al
jns short crtc_wait_2
opsize
loop short crtc_wait_1
crtc_wait_2:
sti
pop dx
pop ax
pop ecx
ret
crtc_wait endp
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; display_off
;in: none
;out: none
;dest: flags
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
display_off proc near
push ax
push dx
xor al, al
mov dx, 0fda0h ; crtout
out dx, al ; disable
pop dx
pop ax
ret
display_off endp
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; display_on
;in: none
;out: none
;dest: flags
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
display_on proc near
push ax
push dx
mov al, 0fh
mov dx, 0fda0h
out dx, al
pop dx
pop ax
ret
display_on endp
CODE ends
;==========================================================
; data segment
;==========================================================
DATA segment para public use16
PSP_seg_ptr dw 0000
usage_msg db 'INICRT version 1.00A for FM-TOWNS',13,10
db 'Usage:INICRT screen_0 screen_1',13,10
db ' INICRT @register_set_no',13,10
db ' INICRT ?',13,10
db '$'
error_msg db 'INICRT parameter error.',13, 10
db '$'
combine_msg label byte
db 'MULTI screen mode',13,10
db ' screen 0',13,10
db ' | 1 2 3 4 5 6 7 8 9 10 11',13,10
db '---|------------------------------------------',13,10
db ' 1| 6',13,10
db ' 2| 8',13,10
db 's 3| 9 19 27',13,10
db 'c 4| 10 11',13,10
db 'r 5| 22 20 28',13,10
db 'e 6| 23 16',13,10
db 'e 7| 17 24',13,10
db 'n 8| 18 25',13,10
db '1 9| 13 12',13,10
db ' 10| 26 30 29',13,10
db ' 11| 15 14',13,10
db '----------------------------------------------',13,10
db 'SINGLE screen mode',13,10
db ' ----------|---------|--------|-------',13,10
db ' 12| 1 | 13| 4 | 14| 3 | 15| 4',13,10
db ' 16| 5 | 17| 31 | 18| 32 |',13,10
db ' ----------|---------|--------|-------',13,10
db '$'
combine_table label byte
; 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11
db 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ;1
db 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0 ;2
db 0, 0, 0, 9, 0,19, 0, 0, 0, 0,27, 0 ;3
db 0, 0, 0, 0,10, 0,11, 0, 0, 0, 0, 0 ;4
db 0, 0, 0,22, 0,20, 0, 0, 0, 0,28, 0 ;5
db 0, 0, 0, 0,23, 0,16, 0, 0, 0, 0, 0 ;6
db 0, 0, 0, 0, 0, 0, 0,17, 0,24, 0, 0 ;7
db 0, 0, 0, 0, 0, 0, 0, 0,18, 0, 0,25 ;8
db 0, 0, 0, 0, 0, 0, 0,13, 0,12, 0, 0 ;9
db 0, 0, 0,26, 0,30, 0, 0, 0, 0,29, 0 ;10
db 0, 0, 0, 0, 0, 0, 0, 0,15, 0, 0,14 ;11
single_screen_table label byte
db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5,31,32 ;0
reg_set0 label word
dw 00060h,002C0h,00000h,00000h,0031Fh,00000h,00004h,00000h
dw 00419h,0008Ah,0030Ah,0008Ah,0030Ah,00046h,00406h,00046h
dw 00406h,00000h,0008Ah,00000h,00080h,00000h,0008Ah,00000h
dw 00080h,00058h,00001h,00000h,0000Fh,00002h,00000h,00192h
reg_set1 label word
dw 00060h,002C0h,00000h,00000h,0031Fh,00000h,00004h,00000h
dw 00419h,0008Ah,0030Ah,0008Ah,0030Ah,00046h,00406h,00046h
dw 00406h,00000h,0008Ah,00000h,00080h,00000h,0008Ah,00000h
dw 00080h,00058h,00001h,00000h,0000Fh,00002h,00000h,00192h
reg_set2 label word
dw 00040h,00320h,00000h,00000h,0035Fh,00000h,00010h,00000h
dw 0036Fh,0009Ch,0031Ch,0009Ch,0031Ch,00040h,00360h,00040h
dw 00360h,00000h,0009Ch,00000h,00080h,00000h,0009Ch,00000h
dw 00080h,0004Ah,00001h,00000h,0000Fh,00003h,00000h,00150h
reg_set3 label word
dw 00086h,00610h,00000h,00000h,0071Bh,00006h,0000Ch,00012h
dw 0020Ch,00129h,006C9h,00129h,006C9h,0002Ah,0020Ah,0002Ah
dw 0020Ah,00000h,00129h,00080h,00100h,00000h,00129h,00080h
dw 00100h,00064h,00001h,00101h,0000Fh,0000Ch,00003h,001CAh
reg_set4 label word
dw 00060h,002C0h,00000h,00000h,0031Fh,00000h,00004h,00000h
dw 00419h,0008Ah,0030Ah,0008Ah,0030Ah,00046h,00406h,00046h
dw 00406h,00000h,0008Ah,00000h,00080h,00000h,0008Ah,00000h
dw 00080h,00058h,00001h,00101h,0000Ah,00002h,00000h,00192h
reg_set5 label word
dw 00074h,00530h,00000h,00000h,00617h,00006h,0000Ch,00012h
dw 0020Ch,000E7h,005E7h,000E7h,005E7h,0002Ah,0020Ah,0002Ah
dw 0020Ah,00000h,000E7h,00080h,00100h,00000h,000E7h,00080h
dw 00100h,00056h,00001h,00303h,0000Ah,00001h,00002h,00188h
reg_set6 label word
dw 00040h,00320h,00000h,00000h,0035Fh,00000h,00010h,00000h
dw 0036Fh,0009Ch,0031Ch,0009Ch,0031Ch,00040h,00360h,00040h
dw 00360h,00000h,0009Ch,00000h,00050h,00000h,0009Ch,00000h
dw 00050h,0004Ah,00001h,00000h,0003Fh,00003h,00000h,00150h
reg_set7 label word
dw 00040h,00320h,00000h,00000h,0035Fh,00000h,00010h,00000h
dw 0036Fh,0009Ch,0031Ch,0009Ch,0031Ch,00040h,00360h,00040h
dw 00360h,00000h,0009Ch,00000h,00050h,00000h,0009Ch,00000h
dw 00050h,0004Ah,00001h,00010h,0003Fh,00003h,00000h,00150h
reg_set8 label word
dw 00040h,00320h,00000h,00000h,0035Fh,00000h,00010h,00000h
dw 0036Fh,0009Ch,0031Ch,0009Ch,0031Ch,00040h,00360h,00040h
dw 00360h,00000h,0009Ch,00000h,00050h,00000h,0009Ch,00000h
dw 00050h,0004Ah,00001h,01010h,0003Fh,00003h,00000h,00150h
reg_set9 label word
dw 00060h,002C0h,00000h,00000h,0031Fh,00000h,00004h,00000h
dw 00419h,0008Ah,0030Ah,0008Ah,0030Ah,00046h,00406h,00046h
dw 00406h,00000h,0008Ah,00000h,00080h,00000h,0008Ah,00000h
dw 00080h,00058h,00001h,00000h,0000Fh,00002h,00000h,00192h
reg_set10 label word
dw 00040h,00320h,00000h,00000h,0035Fh,00000h,00010h,00000h
dw 0036Fh,0009Ch,0031Ch,0009Ch,0031Ch,00040h,00360h,00040h
dw 00360h,00000h,0009Ch,00000h,00080h,00000h,0009Ch,00000h
dw 00080h,0004Ah,00001h,00000h,0000Fh,00003h,00000h,00150h
reg_set11 label word
dw 00040h,00320h,00000h,00000h,0035Fh,00000h,00010h,00000h
dw 0036Fh,0009Ch,0019Ch,0009Ch,0031Ch,00040h,00240h,00040h
dw 00360h,00000h,0009Ch,00000h,00080h,00000h,0009Ch,00000h
dw 00080h,0004Ah,00001h,00000h,0000Dh,00003h,00000h,00150h
reg_set12 label word
dw 00086h,00610h,00000h,00000h,0071Bh,00006h,0000Ch,00012h
dw 0020Ch,00129h,006C9h,00129h,006C9h,0002Ah,0020Ah,0002Ah
dw 0020Ah,00000h,00129h,00000h,00100h,00000h,00129h,00000h
dw 00100h,00064h,00001h,00303h,00005h,0000Ch,00003h,001CAh
reg_set13 label word
dw 00086h,00610h,00000h,00000h,0071Bh,00006h,0000Ch,00012h
dw 0020Ch,00129h,00529h,00129h,006C9h,0002Ah,0020Ah,0002Ah
dw 0020Ah,00000h,00129h,00000h,00080h,00000h,00129h,00000h
dw 00100h,00064h,00001h,00303h,00005h,0000Ch,00003h,001CAh
reg_set14 label word
dw 00074h,00530h,00000h,00000h,00617h,00006h,0000Ch,00012h
dw 0020Bh,000E7h,005E7h,000E7h,005E7h,0002Ah,0020Ah,0002Ah
dw 0020Ah,00000h,000E7h,00000h,00100h,00000h,000E7h,00000h
dw 00100h,00056h,00001h,00303h,00005h,00001h,00002h,00188h
reg_set15 label word
dw 00074h,00530h,00000h,00000h,00617h,00006h,0000Ch,00012h
dw 0020Bh,000E7h,004E7h,000E7h,005E7h,0002Ah,0020Ah,0002Ah
dw 0020Ah,00000h,000E7h,00000h,00080h,00000h,000E7h,00000h
dw 00100h,00056h,00001h,00303h,00005h,00001h,00002h,00188h
reg_set16 label word
dw 00040h,00320h,00000h,00000h,0035Fh,00000h,00010h,00000h
dw 0036Fh,0009Ch,0019Ch,0009Ch,0019Ch,00040h,00240h,00040h
dw 00240h,00000h,0009Ch,00000h,00080h,00000h,0009Ch,00000h
dw 00080h,0004Ah,00001h,00000h,00005h,00003h,00000h,00150h
reg_set17 label word
dw 00086h,00610h,00000h,00000h,0071Bh,00006h,0000Ch,00012h
dw 0020Ch,00129h,00529h,00129h,00529h,0002Ah,0020Ah,0002Ah
dw 0020Ah,00000h,00129h,00000h,00080h,00000h,00129h,00000h
dw 00080h,00064h,00001h,00303h,00005h,0000Ch,00003h,001CAh
reg_set18 label word
dw 00074h,00530h,00000h,00000h,00617h,00006h,0000Ch,00012h
dw 0020Bh,000E7h,004E7h,000E7h,004E7h,0002Ah,0020Ah,0002Ah
dw 0020Ah,00000h,000E7h,00000h,00080h,00000h,000E7h,00000h
dw 00080h,00056h,00001h,00303h,00005h,00001h,00002h,00188h
reg_set19 label word
dw 00060h,002C0h,00000h,00000h,0031Fh,00000h,00004h,00000h
dw 00419h,0008Ah,0018Ah,0008Ah,0030Ah,00046h,00246h,00046h
dw 00406h,00000h,0008Ah,00000h,00080h,00000h,0008Ah,00000h
dw 00080h,00058h,00001h,00000h,0000Dh,00002h,00000h,00192h
reg_set20 label word
dw 00060h,002C0h,00000h,00000h,0031Fh,00000h,00004h,00000h
dw 00419h,0008Ah,0018Ah,0008Ah,0018Ah,00046h,00246h,00046h
dw 00246h,00000h,0008Ah,00000h,00080h,00000h,0008Ah,00000h
dw 00080h,00058h,00001h,00000h,00005h,00002h,00000h,00192h
reg_set21 label word
dw 00040h,00320h,00000h,00000h,0035Fh,00000h,00010h,00000h
dw 0036Fh,0009Ch,0031Ch,0009Ch,0031Ch,00040h,00360h,00040h
dw 00360h,00000h,0009Ch,00000h,00050h,00000h,0009Ch,00000h
dw 00050h,0004Ah,00001h,01000h,0003Fh,00003h,00000h,00150h
reg_set22 label word
dw 00060h,002C0h,00000h,00000h,0031Fh,00000h,00004h,00000h
dw 00419h,0008Ah,0030Ah,0008Ah,0018Ah,00046h,00406h,00046h
dw 00246h,00000h,0008Ah,00000h,00080h,00000h,0008Ah,00000h
dw 00080h,00058h,00001h,00000h,00007h,00002h,00000h,00192h
reg_set23 label word
dw 00040h,00320h,00000h,00000h,0035Fh,00000h,00010h,00000h
dw 0036Fh,0009Ch,0031Ch,0009Ch,0019Ch,00040h,00360h,00040h
dw 00240h,00000h,0009Ch,00000h,00080h,00000h,0009Ch,00000h
dw 00080h,0004Ah,00001h,00000h,00007h,00003h,00000h,00150h
reg_set24 label word
dw 00086h,00610h,00000h,00000h,0071Bh,00006h,0000Ch,00012h
dw 0020Ch,00129h,006C9h,00129h,00529h,0002Ah,0020Ah,0002Ah
dw 0020Ah,00000h,00129h,00000h,00100h,00000h,00129h,00000h
dw 00080h,00064h,00001h,00303h,00005h,0000Ch,00003h,001CAh
reg_set25 label word
dw 00074h,00530h,00000h,00000h,00617h,00006h,0000Ch,00012h
dw 0020Bh,000E7h,005E7h,000E7h,004E7h,0002Ah,0020Ah,0002Ah
dw 0020Ah,00000h,000E7h,00000h,00100h,00000h,000E7h,00000h
dw 00080h,00056h,00001h,00303h,00005h,00001h,00002h,00188h
reg_set26 label word
dw 00060h,002C0h,00000h,00000h,0031Fh,00000h,00004h,00000h
dw 00419h,0008Ah,0030Ah,0008Ah,001CAh,00046h,00406h,00046h
dw 00226h,00000h,0008Ah,00000h,00080h,00000h,0008Ah,00000h
dw 00100h,00058h,00001h,00000h,00007h,00002h,00000h,00192h
reg_set27 label word
dw 00060h,002C0h,00000h,00000h,0031Fh,00000h,00004h,00000h
dw 00419h,0008Ah,001CAh,0008Ah,0030Ah,00046h,00226h,00046h
dw 00406h,00000h,0008Ah,00000h,00100h,00000h,0008Ah,00000h
dw 00080h,00058h,00001h,00000h,0000Dh,00002h,00000h,00192h
reg_set28 label word
dw 00060h,002C0h,00000h,00000h,0031Fh,00000h,00004h,00000h
dw 00419h,0008Ah,001CAh,0008Ah,001CAh,00046h,00226h,00046h
dw 00226h,00000h,0008Ah,00000h,00100h,00000h,0008Ah,00000h
dw 00100h,00058h,00001h,00000h,00005h,00002h,00000h,00192h
reg_set29 label word
dw 00060h,002C0h,00000h,00000h,0031Fh,00000h,00004h,00000h
dw 00419h,0008Ah,001CAh,0008Ah,0018Ah,00046h,00226h,00046h
dw 00246h,00000h,0008Ah,00000h,00100h,00000h,0008Ah,00000h
dw 00080h,00058h,00000h,00000h,00005h,00002h,00000h,00192h
reg_set30 label word
dw 00060h,002C0h,00000h,00000h,0031Fh,00000h,00004h,00000h
dw 00419h,0008Ah,0018Ah,0008Ah,001CAh,00046h,00246h,00046h
dw 00226h,00000h,0008Ah,00000h,00080h,00000h,0008Ah,00000h
dw 00100h,00058h,00000h,00000h,00005h,00002h,00000h,00192h
reg_set31 label word
dw 00060h,002C0h,00000h,00000h,0031Fh,00000h,00004h,00000h
dw 00419h,000CAh,002CAh,000CAh,002CAh,00046h,00406h,00046h
dw 00406h,00000h,000CAh,00000h,00080h,00000h,000CAh,00000h
dw 00080h,00058h,00001h,00000h,0000Ah,00002h,00000h,00192h
reg_set32 label word
dw 00074h,00530h,00000h,00000h,00617h,00006h,0000Ch,00012h
dw 0020Ch,00167h,00567h,00167h,00567h,0002Ah,0020Ah,0002Ah
dw 0020Ah,00000h,00167h,00080h,00100h,00000h,00167h,00080h
dw 00100h,00056h,00001h,00101h,0000Ah,00001h,00002h,00188h
sifter_data label byte
dw 0180Ah,0180Ah,0180Ah,0080Fh,0080Fh,00815h,00815h,00815h
dw 00815h,00815h,00817h,0081Fh,0081Fh,0081Fh,0081Fh,0081Fh
dw 0081Fh,0081Fh,00817h,0081Fh,00815h,0081Dh,0081Dh,0081Fh
dw 0081Fh,0081Dh,00817h,0081Fh,0081Fh,0081Fh,0080Fh,0080Fh
DATA ends
;==========================================================
; stack segment
;==========================================================
STACK segment stack use16
dw 128 dup ( ? )
stack_adr label word
dw 0000
STACK ends
end jptable