home *** CD-ROM | disk | FTP | other *** search
/ FreeWare Collection 2 / FreeSoftwareCollection2pd199x-jp.img / ms_dos / inicrt / inicrt.asm next >
Assembly Source File  |  1990-06-14  |  20KB  |  709 lines

  1.     page    90, 126
  2.     title    'FM-TOWNS CRTC direct control'
  3.     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  4.     ;    CRTC initialize routine
  5.     ;
  6.     ;file name:    INICRT.EXE
  7.     ;machine:    FM-TOWNS
  8.     ;cpu:        80386
  9.     ;other file:    none
  10.     ;asm:        masm ver5.1
  11.     ;tab:        8
  12.     ;price:        none
  13.     ;copy:        free
  14.     ;copyright:    (C) YACHT 1989.
  15.     ;date:        Sat, 9 Sep 1989 V1.0A
  16.     ;        Wed, 4 Oct 1989 V1.00A ( source modify )
  17.     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  18.  
  19.     .386
  20. ;;    include    ybioa.inc        ; header file
  21.  
  22. opsize    macro
  23.     db    66h
  24.     endm
  25.  
  26. reg_set        struc
  27. crtc_HSW1    dw    ?
  28. crtc_HSW2    dw    ?
  29.         dw    ?
  30.         dw    ?
  31. crtc_HST    dw    ?
  32. crtc_VST1    dw    ?
  33. crtc_VST2    dw    ?
  34. crtc_EET    dw    ?
  35. crtc_VST    dw    ?
  36. crtc_HDS0    dw    ?
  37. crtc_HDE0    dw    ?
  38. crtc_HDS1    dw    ?
  39. crtc_HDE1    dw    ?
  40. crtc_VDS0    dw    ?
  41. crtc_VDE0    dw    ?
  42. crtc_VDS1    dw    ?
  43. crtc_VDE1    dw    ?
  44. crtc_FA0    dw    ?
  45. crtc_HAJ0    dw    ?
  46. crtc_FO0    dw    ?
  47. crtc_LO0    dw    ?
  48. crtc_FA1    dw    ?
  49. crtc_HAJ1    dw    ?
  50. crtc_FO1    dw    ?
  51. crtc_LO1    dw    ?
  52. crtc_EHAJ    dw    ?
  53. crtc_EVAJ    dw    ?
  54. crtc_ZOOM    dw    ?
  55. crtc_CR0    dw    ?
  56. crtc_CR1    dw    ?
  57. crtc_FR        dw    ?
  58. crtc_CR2    dw    ?
  59. reg_set    ends
  60.  
  61.     assume    cs: CODE, ss: STACK
  62. CODE    segment    para public use16
  63.  
  64.     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  65.     ;    jptable
  66.     ;in:    ds = PSP segment
  67.     ;out:    none
  68.     ;dest:    ?
  69.     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  70. jptable    proc    far
  71.     jmp    start
  72. version    label    byte
  73.     db    'inicrt.exe      '
  74.     db    'Version 0.1A    '        ; 1.00A
  75.     db    'FM-TOWNS        '
  76.     db    'Fri, 9 Sep 1989 '
  77.     db    '$'
  78. DATA_seg_ptr    dw    seg DATA
  79. jptable    endp
  80.     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  81.     ;    start
  82.     ;
  83.     ;in:    DS = PSP segment
  84.     ;out:    none
  85.     ;dest:    ?
  86.     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  87. start    proc    near
  88.     mov    bx, ds
  89.     mov    ds, cs: word ptr DATA_seg_ptr
  90.         assume    ds: DATA
  91.     mov    word ptr PSP_seg_ptr, bx
  92.     mov    ds, bx
  93.         assume    ds: nothing
  94.     mov    bx, 0080h
  95.     movzx    cx, byte ptr [ bx ]
  96.     inc    bx
  97.     or    cx, cx            ; イラナイ
  98.     jcxz    short start_msg
  99.     call    spskip            ; space skip
  100.     jc    short start_msg        ; end of line
  101.     cmp    al, '?'            ; if help command
  102.     jz    start_help
  103.     cmp    al, '@'            ; 
  104.     jz    short direct_reg_set
  105.     call    rdasc            ; 
  106.     jc    short start_err        ; error
  107.     or    ax, ax            ; if zero
  108.     jz    short start_err
  109.     cmp    ax, 00018d        ; max reg.
  110.     ja    short start_err        ; error
  111.     mov    dx, ax
  112.     call    spskip            ; space skip
  113.     jc    short start_1        ; single screen
  114.     cmp    dx, 0012d
  115.     ja    short start_err        ; error
  116.     call    rdasc
  117.     jc    short start_err        ; error
  118.     or    ax, ax
  119.     jz    short start_err        ; error
  120.     cmp    ax, 0011d        ; max
  121.     ja    short start_err
  122.     dec    ax
  123.     mov    cx, dx
  124.     mov    bx, 0012
  125.     mul    bx
  126.     add    ax, cx
  127.     mov    bx, ax
  128.     add    bx, offset combine_table
  129.     jmp    short start_2
  130. start_1:                ; for single screen
  131.     mov    bx, dx
  132.     add    bx, offset single_screen_table
  133. start_2:
  134.     mov    ds, cs: word ptr DATA_seg_ptr
  135.         assume    ds: DATA
  136.     movzx    ax, byte ptr [ bx ]
  137.     or    ax, ax
  138.     jz    short start_err        ; error
  139.     jmp    short direct_reg_set_1
  140.         assume    ds: nothing
  141. direct_reg_set:
  142.     inc    bx
  143.     dec    cx
  144.     jcxz    short start_err        ; error
  145.     call    rdasc
  146.     jc    short start_err        ; error
  147.     cmp    ax, 0032d        ; max
  148.     ja    short start_err
  149. direct_reg_set_1:
  150.     mov    ds, cs: word ptr DATA_seg_ptr
  151.         assume    ds: DATA
  152.     call    init_screen        ; set crtc
  153.     jmp    short start_none
  154.         assume    ds: nothing
  155. start_err:
  156.     mov    dx, offset error_msg
  157.     jmp    short start_msg_1
  158. start_msg:
  159.     mov    dx, offset usage_msg
  160. start_msg_1:
  161.     mov    ds, cs: word ptr DATA_seg_ptr
  162.         assume    ds: DATA
  163. start_msg_2:
  164.     mov    ah, 9
  165.     int    21h
  166.     mov    al,01h
  167. start_ret:
  168.     mov    ah, 4ch
  169.     int    21h
  170.     ret
  171. start_none:
  172.     xor    al, al
  173.     jmp    short start_ret
  174.  
  175. start_help:
  176.     mov    ds, cs: word ptr DATA_seg_ptr
  177.         assume    ds: DATA
  178.     mov    dx, offset combine_msg
  179.     jmp    short start_msg_2
  180. start    endp
  181.     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  182.     ;    spskip
  183.     ;in:    bx = address
  184.     ;    cx = counter
  185.     ;out:    bx = next
  186.     ;    cx = counter
  187.     ;    al = code
  188.     ;    cf = error
  189.     ;dest:    bx, ax, flags
  190.     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  191. spskip    proc    near
  192.     jcxz    short spskip_0
  193.     cmp    byte ptr [ bx ], ' '
  194.     jnz    short spskip_1
  195.     inc    bx
  196.     loop    short spskip
  197. spskip_0:
  198.     stc
  199.     jmp    short spskip_2
  200. spskip_1:
  201.     clc
  202. spskip_2:
  203.     mov    al, byte ptr [ bx ]
  204.     ret
  205. spskip    endp
  206.     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  207.     ;    rdasc
  208.     ;in:    bx = data
  209.     ;    cx = counter
  210.     ;out:    bx = next
  211.     ;    cx = count
  212.     ;    ax = suu
  213.     ;dest:    ax, bx, cx, flags
  214.     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  215. rdasc    proc    near
  216.     push    dx
  217.     push    si
  218.     mov    dx, 0000
  219.     jcxz    short rdasc_3
  220.     xor    ah, ah
  221.     mov    al, [ bx ]
  222.     sub    al, '0'
  223.     jc    short rdasc_3
  224.     cmp    al, 9
  225.     ja    short rdasc_3
  226.     jmp    short rdasc_2
  227. rdasc_1:
  228.     mov    al, [ bx ]
  229.     sub    al, '0'
  230.     jc    short rdasc_4
  231.     cmp    al, 9
  232.     ja    short rdasc_4
  233. rdasc_2:
  234.     add    dx, dx        ; *2
  235.     mov    si, dx
  236.     shl    dx, 2        ; *8
  237.     add    dx, si        ; *10
  238.     add    dx, ax
  239.     inc    bx
  240.     loop    short rdasc_1
  241.     jmp    short rdasc_4
  242. rdasc_3:
  243.     stc
  244.     jmp    short rdasc_5
  245. rdasc_4:
  246.     clc
  247. rdasc_5:
  248.     mov    ax, dx
  249.     pop    si
  250.     pop    dx
  251.     ret
  252. rdasc    endp
  253.     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  254.     ;    init_screen
  255.     ;in:    ax = no
  256.     ;out:    none
  257.     ;dest:    ?
  258.     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  259. init_screen    proc    near
  260.     call    crtc_data
  261.     jc    short init_screen_ret
  262.     call    display_off
  263.     call    crtc_init
  264.     call    video_ctl
  265.     call    display_on
  266. init_screen_ret:
  267.     ret
  268. init_screen    endp
  269.     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  270.     ;    crtc_data
  271.     ;in:    ax = no.
  272.     ;out:    si = crtc data address
  273.     ;    di = sifter address
  274.     ;dest:    ?
  275.     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  276. crtc_data    proc    near
  277.     cmp    ax, 33
  278.     cmc
  279.     jc    short crtc_data_ret
  280.     mov    si, ax
  281.     shl    si, 6
  282.     add    si, offset reg_set0
  283.     mov    di, ax
  284.     shl    di, 1
  285.     add    di, offset sifter_data
  286. crtc_data_ret:
  287.     ret
  288. crtc_data    endp
  289.     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  290.     ;    crtc_init
  291.     ;
  292.     ;in:    si = crtc data address
  293.     ;    di = sifter address
  294.     ;out:    none
  295.     ;dest:    ?
  296.     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  297. crtc_init    proc    near
  298.     call    crtc_off
  299.     call    crtc_set
  300.     call    crtc_on
  301.     ret
  302. crtc_init    endp
  303.     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  304.     ;    video_ctl
  305.     ;
  306.     ;in:    si = crtc data address
  307.     ;    di = sifter address
  308.     ;out:    none
  309.     ;dest:    flags
  310.     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  311. video_ctl    proc    near
  312.     push    ax
  313.     push    dx
  314.     mov    dx, 0448h        ; reg 1
  315.     mov    al, 0h
  316.     out    dx, al
  317.     mov    dx, 044ah        ; mov dl, 4ah
  318.     mov    ax, [ di ]
  319.     out    dx, al
  320.     mov    dx, 0448h        ; mov dl, 48h
  321.     mov    al, 01h            ; reg 0
  322.     out    dx, al
  323.     mov    dx, 044ah        ; mov dl, 4ah
  324.     mov    al, ah
  325.     out    dx, al
  326.     pop    dx
  327.     pop    ax
  328.     ret
  329. video_ctl    endp
  330.     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  331.     ;    crtc_set
  332.     ;
  333.     ;in:    si = crtc data address
  334.     ;    di = sifter address
  335.     ;out:    none
  336.     ;dest:    flags
  337.     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  338. crtc_set    proc    near
  339.     push    si
  340.     push    ax
  341.     push    di
  342.     push    dx
  343.     push    cx
  344.     mov    di, 0440h
  345.     mov    cx, 0020h        ; reg. count
  346.     mov    ax, 4200h        ; start register
  347.     cld
  348. crtset_2:
  349.     mov    dx, di            ; 0440h
  350.     out    dx, al
  351.     mov    dl, ah            ; 0442h
  352.     outsw
  353.     inc    al
  354.     loop    short crtset_2
  355.     pop    cx
  356.     pop    dx
  357.     pop    di
  358.     pop    ax
  359.     pop    si
  360.     ret
  361. crtc_set    endp
  362.     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  363.     ;    crtc_on
  364.     ;
  365.     ;in:    si = crtc data address
  366.     ;    di = sifter address
  367.     ;out:    none
  368.     ;dest:    flags
  369.     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  370. crtc_on    proc    near
  371.     push    ax
  372.     push    dx
  373.     mov    ah, [ si + ( 1ch * 2 ) + 1 ]
  374.     or    ah, 80h            ; display start
  375.     call    crtc_onoff
  376.     pop    dx
  377.     pop    ax
  378.     ret
  379. crtc_on    endp
  380.     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  381.     ;    crtc_off
  382.     ;in:    none
  383.     ;out:    none
  384.     ;dest:    flags
  385.     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  386. crtc_off    proc    near
  387.     push    ax
  388.     push    dx
  389.     xor    ah, ah
  390.     call    crtc_onoff
  391.     pop    dx
  392.     pop    ax
  393.     ret
  394. crtc_off    endp
  395.     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  396.     ;    crtc_onoff
  397.     ;in:    ah = data
  398.     ;out:    none
  399.     ;dest:    dx
  400.     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  401. crtc_onoff    proc    near
  402.     mov    dx, 0440h        ; crtc
  403.     mov    al, 1ch            ;  reg. 1ch
  404.     out    dx, al
  405.     mov    dl, 43h
  406.     mov    al, ah
  407.     out    dx, al
  408.     ret
  409. crtc_onoff    endp
  410.     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  411.     ;    crtc_wait
  412.     ;in:    none
  413.     ;out:    none
  414.     ;dest:    ?
  415.     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  416. crtc_wait    proc    near
  417.     push    ecx
  418.     push    ax
  419.     push    dx
  420.     mov    ecx, 10000h        ; time loop
  421.     cli
  422.     mov    dx, 0440h        ; crtc
  423.     mov    al, 1ch            ;  reg. 1ch
  424.     out    dx, al
  425.     mov    dl, 43h
  426. crtc_wait_1:
  427.     in    al, dx
  428.     or    al, al
  429.     jns    short crtc_wait_2
  430.     opsize
  431.     loop    short crtc_wait_1
  432. crtc_wait_2:
  433.     sti
  434.     pop    dx
  435.     pop    ax
  436.     pop    ecx
  437.     ret
  438. crtc_wait    endp
  439.     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  440.     ;    display_off
  441.     ;in:    none
  442.     ;out:    none
  443.     ;dest:    flags
  444.     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  445. display_off    proc    near
  446.     push    ax
  447.     push    dx
  448.     xor    al, al
  449.     mov    dx, 0fda0h        ; crtout
  450.     out    dx, al            ;  disable
  451.     pop    dx
  452.     pop    ax
  453.     ret
  454. display_off    endp
  455.     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  456.     ;    display_on
  457.     ;in:    none
  458.     ;out:    none
  459.     ;dest:    flags
  460.     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  461. display_on    proc    near
  462.     push    ax
  463.     push    dx
  464.     mov    al, 0fh
  465.     mov    dx, 0fda0h
  466.     out    dx, al
  467.     pop    dx
  468.     pop    ax
  469.     ret
  470. display_on    endp
  471. CODE    ends
  472. ;==========================================================
  473. ;    data segment
  474. ;==========================================================
  475. DATA    segment    para public use16
  476.  
  477. PSP_seg_ptr    dw    0000
  478.  
  479. usage_msg    db    'INICRT version 1.00A for FM-TOWNS',13,10
  480.         db    'Usage:INICRT screen_0 screen_1',13,10
  481.         db    '      INICRT @register_set_no',13,10
  482.         db    '      INICRT ?',13,10
  483.         db    '$'
  484.  
  485. error_msg    db    'INICRT parameter error.',13, 10
  486.         db    '$'
  487.  
  488. combine_msg    label    byte
  489.     db    'MULTI screen mode',13,10
  490.     db    '                 screen 0',13,10
  491.     db    '   | 1   2   3   4   5   6   7   8   9  10  11',13,10
  492.     db    '---|------------------------------------------',13,10
  493.     db    '  1| 6',13,10
  494.     db    '  2|     8',13,10
  495.     db    's 3|         9      19                  27',13,10
  496.     db    'c 4|            10      11',13,10
  497.     db    'r 5|        22      20                  28',13,10
  498.     db    'e 6|            23      16',13,10
  499.     db    'e 7|                        17      24',13,10
  500.     db    'n 8|                            18          25',13,10
  501.     db    '1 9|                        13      12',13,10
  502.     db    ' 10|        26      30                  29',13,10
  503.     db    ' 11|                            15          14',13,10
  504.     db    '----------------------------------------------',13,10
  505.     db    'SINGLE screen mode',13,10
  506.     db    ' ----------|---------|--------|-------',13,10
  507.     db    '  12|  1   | 13|  4  | 14|  3 | 15| 4',13,10
  508.     db    '  16|  5   | 17| 31  | 18| 32 |',13,10
  509.     db    ' ----------|---------|--------|-------',13,10
  510.     db    '$'
  511.  
  512. combine_table    label    byte
  513.     ;    0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11
  514.     db    0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0    ;1
  515.     db    0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0    ;2
  516.     db    0, 0, 0, 9, 0,19, 0, 0, 0, 0,27, 0    ;3
  517.     db    0, 0, 0, 0,10, 0,11, 0, 0, 0, 0, 0    ;4
  518.     db    0, 0, 0,22, 0,20, 0, 0, 0, 0,28, 0    ;5
  519.     db    0, 0, 0, 0,23, 0,16, 0, 0, 0, 0, 0    ;6
  520.     db    0, 0, 0, 0, 0, 0, 0,17, 0,24, 0, 0    ;7
  521.     db    0, 0, 0, 0, 0, 0, 0, 0,18, 0, 0,25    ;8
  522.     db    0, 0, 0, 0, 0, 0, 0,13, 0,12, 0, 0    ;9
  523.     db    0, 0, 0,26, 0,30, 0, 0, 0, 0,29, 0    ;10
  524.     db    0, 0, 0, 0, 0, 0, 0, 0,15, 0, 0,14    ;11
  525.  
  526. single_screen_table    label    byte
  527.     db    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5,31,32 ;0
  528.  
  529. reg_set0    label    word
  530.     dw    00060h,002C0h,00000h,00000h,0031Fh,00000h,00004h,00000h
  531.     dw    00419h,0008Ah,0030Ah,0008Ah,0030Ah,00046h,00406h,00046h
  532.     dw    00406h,00000h,0008Ah,00000h,00080h,00000h,0008Ah,00000h
  533.     dw    00080h,00058h,00001h,00000h,0000Fh,00002h,00000h,00192h
  534. reg_set1    label    word
  535.     dw    00060h,002C0h,00000h,00000h,0031Fh,00000h,00004h,00000h
  536.     dw    00419h,0008Ah,0030Ah,0008Ah,0030Ah,00046h,00406h,00046h
  537.     dw    00406h,00000h,0008Ah,00000h,00080h,00000h,0008Ah,00000h
  538.     dw    00080h,00058h,00001h,00000h,0000Fh,00002h,00000h,00192h
  539. reg_set2    label    word
  540.     dw    00040h,00320h,00000h,00000h,0035Fh,00000h,00010h,00000h
  541.     dw    0036Fh,0009Ch,0031Ch,0009Ch,0031Ch,00040h,00360h,00040h
  542.     dw    00360h,00000h,0009Ch,00000h,00080h,00000h,0009Ch,00000h
  543.     dw    00080h,0004Ah,00001h,00000h,0000Fh,00003h,00000h,00150h
  544. reg_set3    label    word
  545.     dw    00086h,00610h,00000h,00000h,0071Bh,00006h,0000Ch,00012h
  546.     dw    0020Ch,00129h,006C9h,00129h,006C9h,0002Ah,0020Ah,0002Ah
  547.     dw    0020Ah,00000h,00129h,00080h,00100h,00000h,00129h,00080h
  548.     dw    00100h,00064h,00001h,00101h,0000Fh,0000Ch,00003h,001CAh
  549. reg_set4    label    word
  550.     dw    00060h,002C0h,00000h,00000h,0031Fh,00000h,00004h,00000h
  551.     dw    00419h,0008Ah,0030Ah,0008Ah,0030Ah,00046h,00406h,00046h
  552.     dw    00406h,00000h,0008Ah,00000h,00080h,00000h,0008Ah,00000h
  553.     dw    00080h,00058h,00001h,00101h,0000Ah,00002h,00000h,00192h
  554. reg_set5    label    word
  555.     dw    00074h,00530h,00000h,00000h,00617h,00006h,0000Ch,00012h
  556.     dw    0020Ch,000E7h,005E7h,000E7h,005E7h,0002Ah,0020Ah,0002Ah
  557.     dw    0020Ah,00000h,000E7h,00080h,00100h,00000h,000E7h,00080h
  558.     dw    00100h,00056h,00001h,00303h,0000Ah,00001h,00002h,00188h
  559. reg_set6    label    word
  560.     dw    00040h,00320h,00000h,00000h,0035Fh,00000h,00010h,00000h
  561.     dw    0036Fh,0009Ch,0031Ch,0009Ch,0031Ch,00040h,00360h,00040h
  562.     dw    00360h,00000h,0009Ch,00000h,00050h,00000h,0009Ch,00000h
  563.     dw    00050h,0004Ah,00001h,00000h,0003Fh,00003h,00000h,00150h
  564. reg_set7    label    word
  565.     dw    00040h,00320h,00000h,00000h,0035Fh,00000h,00010h,00000h
  566.     dw    0036Fh,0009Ch,0031Ch,0009Ch,0031Ch,00040h,00360h,00040h
  567.     dw    00360h,00000h,0009Ch,00000h,00050h,00000h,0009Ch,00000h
  568.     dw    00050h,0004Ah,00001h,00010h,0003Fh,00003h,00000h,00150h
  569. reg_set8    label    word
  570.     dw    00040h,00320h,00000h,00000h,0035Fh,00000h,00010h,00000h
  571.     dw    0036Fh,0009Ch,0031Ch,0009Ch,0031Ch,00040h,00360h,00040h
  572.     dw    00360h,00000h,0009Ch,00000h,00050h,00000h,0009Ch,00000h
  573.     dw    00050h,0004Ah,00001h,01010h,0003Fh,00003h,00000h,00150h
  574. reg_set9    label    word
  575.     dw    00060h,002C0h,00000h,00000h,0031Fh,00000h,00004h,00000h
  576.     dw    00419h,0008Ah,0030Ah,0008Ah,0030Ah,00046h,00406h,00046h
  577.     dw    00406h,00000h,0008Ah,00000h,00080h,00000h,0008Ah,00000h
  578.     dw    00080h,00058h,00001h,00000h,0000Fh,00002h,00000h,00192h
  579. reg_set10    label    word
  580.     dw    00040h,00320h,00000h,00000h,0035Fh,00000h,00010h,00000h
  581.     dw    0036Fh,0009Ch,0031Ch,0009Ch,0031Ch,00040h,00360h,00040h
  582.     dw    00360h,00000h,0009Ch,00000h,00080h,00000h,0009Ch,00000h
  583.     dw    00080h,0004Ah,00001h,00000h,0000Fh,00003h,00000h,00150h
  584. reg_set11    label    word
  585.     dw    00040h,00320h,00000h,00000h,0035Fh,00000h,00010h,00000h
  586.     dw    0036Fh,0009Ch,0019Ch,0009Ch,0031Ch,00040h,00240h,00040h
  587.     dw    00360h,00000h,0009Ch,00000h,00080h,00000h,0009Ch,00000h
  588.     dw    00080h,0004Ah,00001h,00000h,0000Dh,00003h,00000h,00150h
  589. reg_set12    label    word
  590.     dw    00086h,00610h,00000h,00000h,0071Bh,00006h,0000Ch,00012h
  591.     dw    0020Ch,00129h,006C9h,00129h,006C9h,0002Ah,0020Ah,0002Ah
  592.     dw    0020Ah,00000h,00129h,00000h,00100h,00000h,00129h,00000h
  593.     dw    00100h,00064h,00001h,00303h,00005h,0000Ch,00003h,001CAh
  594. reg_set13    label    word
  595.     dw    00086h,00610h,00000h,00000h,0071Bh,00006h,0000Ch,00012h
  596.     dw    0020Ch,00129h,00529h,00129h,006C9h,0002Ah,0020Ah,0002Ah
  597.     dw    0020Ah,00000h,00129h,00000h,00080h,00000h,00129h,00000h
  598.     dw    00100h,00064h,00001h,00303h,00005h,0000Ch,00003h,001CAh
  599. reg_set14    label    word
  600.     dw    00074h,00530h,00000h,00000h,00617h,00006h,0000Ch,00012h
  601.     dw    0020Bh,000E7h,005E7h,000E7h,005E7h,0002Ah,0020Ah,0002Ah
  602.     dw    0020Ah,00000h,000E7h,00000h,00100h,00000h,000E7h,00000h
  603.     dw    00100h,00056h,00001h,00303h,00005h,00001h,00002h,00188h
  604. reg_set15    label    word
  605.     dw    00074h,00530h,00000h,00000h,00617h,00006h,0000Ch,00012h
  606.     dw    0020Bh,000E7h,004E7h,000E7h,005E7h,0002Ah,0020Ah,0002Ah
  607.     dw    0020Ah,00000h,000E7h,00000h,00080h,00000h,000E7h,00000h
  608.     dw    00100h,00056h,00001h,00303h,00005h,00001h,00002h,00188h
  609. reg_set16    label    word
  610.     dw    00040h,00320h,00000h,00000h,0035Fh,00000h,00010h,00000h
  611.     dw    0036Fh,0009Ch,0019Ch,0009Ch,0019Ch,00040h,00240h,00040h
  612.     dw    00240h,00000h,0009Ch,00000h,00080h,00000h,0009Ch,00000h
  613.     dw    00080h,0004Ah,00001h,00000h,00005h,00003h,00000h,00150h
  614. reg_set17    label    word
  615.     dw    00086h,00610h,00000h,00000h,0071Bh,00006h,0000Ch,00012h
  616.     dw    0020Ch,00129h,00529h,00129h,00529h,0002Ah,0020Ah,0002Ah
  617.     dw    0020Ah,00000h,00129h,00000h,00080h,00000h,00129h,00000h
  618.     dw    00080h,00064h,00001h,00303h,00005h,0000Ch,00003h,001CAh
  619. reg_set18    label    word
  620.     dw    00074h,00530h,00000h,00000h,00617h,00006h,0000Ch,00012h
  621.     dw    0020Bh,000E7h,004E7h,000E7h,004E7h,0002Ah,0020Ah,0002Ah
  622.     dw    0020Ah,00000h,000E7h,00000h,00080h,00000h,000E7h,00000h
  623.     dw    00080h,00056h,00001h,00303h,00005h,00001h,00002h,00188h
  624. reg_set19    label    word
  625.     dw    00060h,002C0h,00000h,00000h,0031Fh,00000h,00004h,00000h
  626.     dw    00419h,0008Ah,0018Ah,0008Ah,0030Ah,00046h,00246h,00046h
  627.     dw    00406h,00000h,0008Ah,00000h,00080h,00000h,0008Ah,00000h
  628.     dw    00080h,00058h,00001h,00000h,0000Dh,00002h,00000h,00192h
  629. reg_set20    label    word
  630.     dw    00060h,002C0h,00000h,00000h,0031Fh,00000h,00004h,00000h
  631.     dw    00419h,0008Ah,0018Ah,0008Ah,0018Ah,00046h,00246h,00046h
  632.     dw    00246h,00000h,0008Ah,00000h,00080h,00000h,0008Ah,00000h
  633.     dw    00080h,00058h,00001h,00000h,00005h,00002h,00000h,00192h
  634. reg_set21    label    word
  635.     dw    00040h,00320h,00000h,00000h,0035Fh,00000h,00010h,00000h
  636.     dw    0036Fh,0009Ch,0031Ch,0009Ch,0031Ch,00040h,00360h,00040h
  637.     dw    00360h,00000h,0009Ch,00000h,00050h,00000h,0009Ch,00000h
  638.     dw    00050h,0004Ah,00001h,01000h,0003Fh,00003h,00000h,00150h
  639. reg_set22    label    word
  640.     dw    00060h,002C0h,00000h,00000h,0031Fh,00000h,00004h,00000h
  641.     dw    00419h,0008Ah,0030Ah,0008Ah,0018Ah,00046h,00406h,00046h
  642.     dw    00246h,00000h,0008Ah,00000h,00080h,00000h,0008Ah,00000h
  643.     dw    00080h,00058h,00001h,00000h,00007h,00002h,00000h,00192h
  644. reg_set23    label    word
  645.     dw    00040h,00320h,00000h,00000h,0035Fh,00000h,00010h,00000h
  646.     dw    0036Fh,0009Ch,0031Ch,0009Ch,0019Ch,00040h,00360h,00040h
  647.     dw    00240h,00000h,0009Ch,00000h,00080h,00000h,0009Ch,00000h
  648.     dw    00080h,0004Ah,00001h,00000h,00007h,00003h,00000h,00150h
  649. reg_set24    label    word
  650.     dw    00086h,00610h,00000h,00000h,0071Bh,00006h,0000Ch,00012h
  651.     dw    0020Ch,00129h,006C9h,00129h,00529h,0002Ah,0020Ah,0002Ah
  652.     dw    0020Ah,00000h,00129h,00000h,00100h,00000h,00129h,00000h
  653.     dw    00080h,00064h,00001h,00303h,00005h,0000Ch,00003h,001CAh
  654. reg_set25    label    word
  655.     dw    00074h,00530h,00000h,00000h,00617h,00006h,0000Ch,00012h
  656.     dw    0020Bh,000E7h,005E7h,000E7h,004E7h,0002Ah,0020Ah,0002Ah
  657.     dw    0020Ah,00000h,000E7h,00000h,00100h,00000h,000E7h,00000h
  658.     dw    00080h,00056h,00001h,00303h,00005h,00001h,00002h,00188h
  659. reg_set26    label    word
  660.     dw    00060h,002C0h,00000h,00000h,0031Fh,00000h,00004h,00000h
  661.     dw    00419h,0008Ah,0030Ah,0008Ah,001CAh,00046h,00406h,00046h
  662.     dw    00226h,00000h,0008Ah,00000h,00080h,00000h,0008Ah,00000h
  663.     dw    00100h,00058h,00001h,00000h,00007h,00002h,00000h,00192h
  664. reg_set27    label    word
  665.     dw    00060h,002C0h,00000h,00000h,0031Fh,00000h,00004h,00000h
  666.     dw    00419h,0008Ah,001CAh,0008Ah,0030Ah,00046h,00226h,00046h
  667.     dw    00406h,00000h,0008Ah,00000h,00100h,00000h,0008Ah,00000h
  668.     dw    00080h,00058h,00001h,00000h,0000Dh,00002h,00000h,00192h
  669. reg_set28    label    word
  670.     dw    00060h,002C0h,00000h,00000h,0031Fh,00000h,00004h,00000h
  671.     dw    00419h,0008Ah,001CAh,0008Ah,001CAh,00046h,00226h,00046h
  672.     dw    00226h,00000h,0008Ah,00000h,00100h,00000h,0008Ah,00000h
  673.     dw    00100h,00058h,00001h,00000h,00005h,00002h,00000h,00192h
  674. reg_set29    label    word
  675.     dw    00060h,002C0h,00000h,00000h,0031Fh,00000h,00004h,00000h
  676.     dw    00419h,0008Ah,001CAh,0008Ah,0018Ah,00046h,00226h,00046h
  677.     dw    00246h,00000h,0008Ah,00000h,00100h,00000h,0008Ah,00000h
  678.     dw    00080h,00058h,00000h,00000h,00005h,00002h,00000h,00192h
  679. reg_set30    label    word
  680.     dw    00060h,002C0h,00000h,00000h,0031Fh,00000h,00004h,00000h
  681.     dw    00419h,0008Ah,0018Ah,0008Ah,001CAh,00046h,00246h,00046h
  682.     dw    00226h,00000h,0008Ah,00000h,00080h,00000h,0008Ah,00000h
  683.     dw    00100h,00058h,00000h,00000h,00005h,00002h,00000h,00192h
  684. reg_set31    label    word
  685.     dw    00060h,002C0h,00000h,00000h,0031Fh,00000h,00004h,00000h
  686.     dw    00419h,000CAh,002CAh,000CAh,002CAh,00046h,00406h,00046h
  687.     dw    00406h,00000h,000CAh,00000h,00080h,00000h,000CAh,00000h
  688.     dw    00080h,00058h,00001h,00000h,0000Ah,00002h,00000h,00192h
  689. reg_set32    label    word
  690.     dw    00074h,00530h,00000h,00000h,00617h,00006h,0000Ch,00012h
  691.     dw    0020Ch,00167h,00567h,00167h,00567h,0002Ah,0020Ah,0002Ah
  692.     dw    0020Ah,00000h,00167h,00080h,00100h,00000h,00167h,00080h
  693.     dw    00100h,00056h,00001h,00101h,0000Ah,00001h,00002h,00188h
  694. sifter_data    label    byte
  695.     dw    0180Ah,0180Ah,0180Ah,0080Fh,0080Fh,00815h,00815h,00815h
  696.     dw    00815h,00815h,00817h,0081Fh,0081Fh,0081Fh,0081Fh,0081Fh
  697.     dw    0081Fh,0081Fh,00817h,0081Fh,00815h,0081Dh,0081Dh,0081Fh
  698.     dw    0081Fh,0081Dh,00817h,0081Fh,0081Fh,0081Fh,0080Fh,0080Fh
  699. DATA    ends
  700. ;==========================================================
  701. ;    stack segment
  702. ;==========================================================
  703. STACK    segment    stack    use16
  704.     dw    128 dup ( ? )
  705. stack_adr    label    word
  706.     dw    0000
  707. STACK    ends
  708.     end    jptable
  709.