home *** CD-ROM | disk | FTP | other *** search
/ Archive Magazine 1995 / ARCHIVE95.iso / discs / utilities / utility_01 / modules / NewModes / VIDCSrc < prev   
Text File  |  1991-02-17  |  26KB  |  1,146 lines

  1. REM > EnhVIDCSrc
  2. REM
  3. REM Modified modes for NEC 3D
  4. REM
  5. REM (c) 1990 Andy Ling
  6. REM
  7. REM Address  : 29 Manor Road
  8. REM            Burgess Hill
  9. REM            West Sussex
  10. REM            RH15 ONW
  11.  
  12. PROCInitialise
  13.  
  14. DIM code% code_size, L% -1  : REM   This sets L% to limit of assembly
  15.  
  16. PROCAssemble
  17.  
  18. IF save AND (optlo AND %100) OSCLI "SAVE VIDCMod "+STR$~code%+"+"+STR$~P%: OSCLI "SETTYPE VIDCMod FFA"
  19. *RMLOAD VIDCMod
  20.  
  21. END
  22.  
  23. DEFPROCInitialise
  24. CLS
  25. save = TRUE :optlo = %1100 : opthi = %1110
  26. bstart = 121
  27. start = 123
  28. width = 640
  29. bwidth = width + (start - bstart) * 2
  30. length = 5
  31. cycle = 776
  32. sync = 36
  33. wstart = 125
  34. wwidth = 960
  35. wlength = 121
  36. mega_start = 141
  37. mega_bstart = 139
  38. mega_width = 1152
  39. mega_bwidth = mega_width + (mega_start - mega_bstart) * 2
  40. mega_length = 1
  41. mega_cycle = 1400
  42. mega_sync = 51
  43. code_size   = 4500   : REM Amount reserved for assembling code
  44.  
  45. REM #####  Set up register names
  46. link    = 14        : REM Link register for subroutine calls
  47. sp      = 13        : REM Stack pointer
  48. ENDPROC
  49.  
  50. DEFPROCAssemble
  51. FOR pass = optlo TO opthi STEP (opthi - optlo)
  52. IF optlo AND %100   P%=0:O%=code% ELSE P%=code%:O%=0
  53.   [
  54.     OPT     pass
  55.  
  56. ;#####
  57. ;#   relocatable module header
  58. ;#####
  59.     EQUD    0                           ; Startcode
  60.     EQUD    init                        ; Initialisation code
  61.     EQUD    0                           ; Finalisation code
  62.     EQUD    service                     ; Service requests
  63.     EQUD    title                       ; Title string offset
  64.     EQUD    help                        ; Help string offset
  65.     EQUD    commands                    ; Command table offset
  66.  
  67. ;#####
  68. ;#   Help and title strings
  69. ;#####
  70. .title
  71.     EQUS    "VIDCMod"
  72.     EQUB    0
  73.     ALIGN
  74. .help
  75.     EQUS    "Modified Modes for NEC 3D with VIDC Enhancer"+CHR$9+"1.00 ("+MID$(TIME$,5,11)+")"
  76.     EQUS    " (c) A. D. Ling"
  77.     EQUB    0
  78.     ALIGN
  79.  
  80. ;#####
  81. ;#   Commands recognised by module
  82. ;#####
  83. .commands
  84.     EQUS    "NormalModes"
  85.     EQUB    0
  86.     ALIGN
  87.     EQUD    normal_mode
  88.     EQUD    0
  89.     EQUD    0
  90.     EQUD    normal_help
  91.  
  92.     EQUS    "ExtendModes"
  93.     EQUB    0
  94.     ALIGN
  95.     EQUD    extended_mode
  96.     EQUD    0
  97.     EQUD    0
  98.     EQUD    extend_help
  99.  
  100.     EQUD    0
  101.  
  102. .normal_help
  103.     EQUS    "Use normal VIDC for modes 0 - 17"
  104.     EQUB    0
  105.     ALIGN
  106.  
  107. .extend_help
  108.     EQUS    "Use VIDC enhancer for modes 0 - 17"
  109.     EQUB    0
  110.     ALIGN
  111.  
  112. ;#####
  113. ;#   Finalisation code - Don't die if it's fatal
  114. ;#####
  115. .finalise
  116.     CMP     R10     ,# 1            ; check for fatal finalisation
  117.     MOVNE   PC      ,link           ; return if not fatal
  118.     ADR     R0      ,error
  119.     ORRS    PC      ,link , #1<<28  ; set overflow flag
  120. .error
  121.     EQUD    &900
  122.     EQUS    "VIDC module refuses to die"
  123.     EQUB    0
  124.     ALIGN
  125.  
  126. ;#####
  127. ;#   Initialisation code switches VIDC Enhancer on
  128. ;#####
  129. .init
  130.     STMDB   R13!,{R0-R9,R14}
  131.     MOV     R0,#&87                    ; read current mode
  132.     SWI     "OS_Byte"
  133.     CMP     R2,#&60
  134.     MOVCS   R0,#1                      ; mode > &60
  135.     MOVCC   R0,#0                      ; mode <= &60
  136.     CMP     R2,#16
  137.     CMPNE   R2,#17
  138.     MOVNE   R2,R0
  139.     LDREQ   R2,flag
  140.     LDR     R3,lstore
  141.     LDR     R4,latch
  142.     MOV     R0,PC
  143.     ORR     R1,R0,#&0C000000
  144.     TEQP    R1,#0                      ; clear status flags
  145.     LDRB    R5,[R3,#0]
  146.     BIC     R5,R5,#&20
  147.     ORR     R5,R5,R2,LSL #5
  148.     STRB    R5,[R3,#0]                 ; set bit 5 if wide
  149.     STRB    R5,[R4,#0]                 ; mode and save it
  150.     TEQP    R0,#0
  151.     LDMIA   R13!,{R0-R9,PC}
  152.  
  153.     ALIGN
  154. .lstore
  155.     EQUD    &00000105
  156. .latch
  157.     EQUD    &03350018
  158.  
  159. ;#####
  160. ;#   mode selection
  161. ;#####
  162. .normal_mode
  163.     MOV     R0      ,# 0
  164.     STR     R0      ,flag
  165.     MOV     PC      ,link
  166.  
  167. .extended_mode
  168.     MOV     R0      ,# 1
  169.     STR     R0      ,flag
  170.     MOV     R0      ,# 0
  171.     MOV     PC      ,link
  172.  
  173. ;#####
  174. ;#   Services OS_Module - Traps mode changes
  175. ;#####
  176. .service
  177.     CMP     R1      ,# &46          ; Mode change
  178.     BEQ     init
  179.     CMP     R1      ,# &50          ; Service mode extension
  180.     MOVNE   PC      ,link           ; Return if not mode change
  181.     CMN     R3      ,#1             ; test for monitor type
  182.     CMPNE   R3      ,#1
  183.     MOVNE   PC      ,link           ; return if not multisync
  184.     STMFD   (sp)!   ,{R5-R8,link}
  185.     ADR     R5      ,table
  186.     LDR     R8      ,flag
  187.     CMP     R8      ,#0
  188.     MOVEQ   R8      ,#(table_end - table) >> 2
  189.     MOVNE   R8      ,#(table2_end - table) >> 2
  190.     MOV     R6      ,# 0
  191. .loop
  192.     LDR     R7      ,[R5,R6,LSL #2]
  193.     CMP     R2      ,R7
  194.     BEQ     found
  195.     ADD     R6      ,R6,#3
  196.     CMP     R6      ,R8
  197.     BLT     loop
  198.     LDMFD   (sp)!   ,{R5-R8,PC}
  199. .found
  200.     MOV     R1      ,# 0            ; claim mode change
  201.     ADR     R7      ,m0work_list
  202.     ADD     R6      ,R6,# 1
  203.     LDR     R3      ,[R5,R6,LSL #2]
  204.     ADD     R3      ,R3,R7
  205.     ADD     R6      ,R6,# 1
  206.     LDR     R4      ,[R5,R6,LSL #2]
  207.     ADD     R4      ,R4,R7
  208.     LDMFD   (sp)!   ,{R5-R8,PC}
  209.  
  210.  
  211.     ALIGN
  212. .flag
  213.     EQUD    1
  214.  
  215. .table
  216.     EQUD    18
  217.     EQUD    m18vidc_list - m0work_list
  218.     EQUD    m18work_list - m0work_list
  219.  
  220.     EQUD    19
  221.     EQUD    m19vidc_list - m0work_list
  222.     EQUD    m19work_list - m0work_list
  223.  
  224.     EQUD    20
  225.     EQUD    m20vidc_list - m0work_list
  226.     EQUD    m20work_list - m0work_list
  227.  
  228.     EQUD    21
  229.     EQUD    m21vidc_list - m0work_list
  230.     EQUD    m21work_list - m0work_list
  231.  
  232.     EQUD    76
  233.     EQUD    m76vidc_list - m0work_list
  234.     EQUD    m76work_list - m0work_list
  235.  
  236.     EQUD    77
  237.     EQUD    m77vidc_list - m0work_list
  238.     EQUD    m77work_list - m0work_list
  239.  
  240.     EQUD    78
  241.     EQUD    m78vidc_list - m0work_list
  242.     EQUD    m78work_list - m0work_list
  243.  
  244.     EQUD    79
  245.     EQUD    m79vidc_list - m0work_list
  246.     EQUD    m79work_list - m0work_list
  247.  
  248.     EQUD    96
  249.     EQUD    m96vidc_list - m0work_list
  250.     EQUD    m96work_list - m0work_list
  251.  
  252.     EQUD    97
  253.     EQUD    m97vidc_list - m0work_list
  254.     EQUD    m97work_list - m0work_list
  255.  
  256.     EQUD    98
  257.     EQUD    m98vidc_list - m0work_list
  258.     EQUD    m98work_list - m0work_list
  259.  
  260.     EQUD    100
  261.     EQUD    m100vidc_list - m0work_list
  262.     EQUD    m100work_list - m0work_list
  263.  
  264.     EQUD    101
  265.     EQUD    m101vidc_list - m0work_list
  266.     EQUD    m101work_list - m0work_list
  267.  
  268.     EQUD    102
  269.     EQUD    m102vidc_list - m0work_list
  270.     EQUD    m102work_list - m0work_list
  271. .table_end
  272.  
  273. .table2
  274.     EQUD    0
  275.     EQUD    m0vidc_list - m0work_list
  276.     EQUD    m0work_list - m0work_list
  277.  
  278.     EQUD    1
  279.     EQUD    m1vidc_list - m0work_list
  280.     EQUD    m1work_list - m0work_list
  281.  
  282.     EQUD    2
  283.     EQUD    m2vidc_list - m0work_list
  284.     EQUD    m2work_list - m0work_list
  285.  
  286.     EQUD    3
  287.     EQUD    m3vidc_list - m0work_list
  288.     EQUD    m3work_list - m0work_list
  289.  
  290.     EQUD    4
  291.     EQUD    m4vidc_list - m0work_list
  292.     EQUD    m4work_list - m0work_list
  293.  
  294.     EQUD    5
  295.     EQUD    m5vidc_list - m0work_list
  296.     EQUD    m5work_list - m0work_list
  297.  
  298.     EQUD    6
  299.     EQUD    m6vidc_list - m0work_list
  300.     EQUD    m6work_list - m0work_list
  301.  
  302.     EQUD    7
  303.     EQUD    m7vidc_list - m0work_list
  304.     EQUD    m7work_list - m0work_list
  305.  
  306.     EQUD    8
  307.     EQUD    m8vidc_list - m0work_list
  308.     EQUD    m8work_list - m0work_list
  309.  
  310.     EQUD    9
  311.     EQUD    m9vidc_list - m0work_list
  312.     EQUD    m9work_list - m0work_list
  313.  
  314.     EQUD    10
  315.     EQUD    m10vidc_list - m0work_list
  316.     EQUD    m10work_list - m0work_list
  317.  
  318.     EQUD    11
  319.     EQUD    m11vidc_list - m0work_list
  320.     EQUD    m11work_list - m0work_list
  321.  
  322.     EQUD    12
  323.     EQUD    m12vidc_list - m0work_list
  324.     EQUD    m12work_list - m0work_list
  325.  
  326.     EQUD    13
  327.     EQUD    m13vidc_list - m0work_list
  328.     EQUD    m13work_list - m0work_list
  329.  
  330.     EQUD    14
  331.     EQUD    m14vidc_list - m0work_list
  332.     EQUD    m14work_list - m0work_list
  333.  
  334.     EQUD    15
  335.     EQUD    m15vidc_list - m0work_list
  336.     EQUD    m15work_list - m0work_list
  337.  
  338.     EQUD    16
  339.     EQUD    m16vidc_list - m0work_list
  340.     EQUD    m16work_list - m0work_list
  341.  
  342.     EQUD    17
  343.     EQUD    m17vidc_list - m0work_list
  344.     EQUD    m17work_list - m0work_list
  345.  
  346. .table2_end
  347.  
  348. .m0work_list
  349.     EQUD    0
  350.     EQUD    0
  351.     EQUD    -1
  352.  
  353. .m0vidc_list
  354. .m4vidc_list
  355.     EQUD    0
  356.     EQUD    0
  357.     EQUD    &8063C000
  358.     EQUD    &840BC000
  359.     EQUD    &880F4000
  360.     EQUD    &8C0D0000
  361.     EQUD    &905D0000
  362.     EQUD    &945F4000
  363.     EQUD    &A04AC000
  364.     EQUD    &A4008000
  365.     EQUD    &A8064000
  366.     EQUD    &AC064000
  367.     EQUD    &B0464000
  368.     EQUD    &B4464000
  369.     EQUD    &E0000003
  370.     EQUD    -1
  371.  
  372. .m1work_list
  373.     EQUD    0
  374.     EQUD    1
  375.     EQUD    -1
  376.  
  377. .m1vidc_list
  378. .m5vidc_list
  379.     EQUD    0
  380.     EQUD    1
  381.     EQUD    &8031C000
  382.     EQUD    &8405C000
  383.     EQUD    &88078000
  384.     EQUD    &8C064000
  385.     EQUD    &902E4000
  386.     EQUD    &942F8000
  387.     EQUD    &A04AC000
  388.     EQUD    &A4008000
  389.     EQUD    &A8064000
  390.     EQUD    &AC064000
  391.     EQUD    &B0464000
  392.     EQUD    &B4464000
  393.     EQUD    &E0000005
  394.     EQUD    -1
  395.  
  396. .m2work_list
  397.     EQUD    0
  398.     EQUD    2
  399.     EQUD    -1
  400.  
  401. .m3work_list
  402.     EQUD    0
  403.     EQUD    3
  404.     EQUD    -1
  405.  
  406. .m4work_list
  407.     EQUD    0
  408.     EQUD    4
  409.     EQUD    -1
  410.  
  411. .m5work_list
  412.     EQUD    0
  413.     EQUD    5
  414.     EQUD    -1
  415.  
  416. .m6work_list
  417.     EQUD    0
  418.     EQUD    6
  419.     EQUD    -1
  420.  
  421. .m6vidc_list
  422.     EQUD    0
  423.     EQUD    6
  424.     EQUD    &8031C000
  425.     EQUD    &8405C000
  426.     EQUD    &88078000
  427.     EQUD    &8C064000
  428.     EQUD    &902E4000
  429.     EQUD    &942F8000
  430.     EQUD    &A04AC000
  431.     EQUD    &A4008000
  432.     EQUD    &A8064000
  433.     EQUD    &AC064000
  434.     EQUD    &B044C000
  435.     EQUD    &B444C000
  436.     EQUD    &E0000005
  437.     EQUD    -1
  438.  
  439. .m7work_list
  440.     EQUD    0
  441.     EQUD    7
  442.     EQUD    -1
  443.  
  444. .m7vidc_list
  445.     EQUD    0
  446.     EQUD    7
  447.     EQUD    &8031C000
  448.     EQUD    &8405C000
  449.     EQUD    &88078000
  450.     EQUD    &8C06C000
  451.     EQUD    &902EC000
  452.     EQUD    &942F8000
  453.     EQUD    &A04AC000
  454.     EQUD    &A4008000
  455.     EQUD    &A8064000
  456.     EQUD    &AC064000
  457.     EQUD    &B044C000
  458.     EQUD    &B444C000
  459.     EQUD    &E0000009
  460.     EQUD    -1
  461.  
  462. .m8work_list
  463.     EQUD    0
  464.     EQUD    8
  465.     EQUD    -1
  466.  
  467. .m8vidc_list
  468.     EQUD    0
  469.     EQUD    8
  470.     EQUD    &8063C000
  471.     EQUD    &840BC000
  472.     EQUD    &880F4000
  473.     EQUD    &8C0E0000
  474.     EQUD    &905E0000
  475.     EQUD    &945F4000
  476.     EQUD    &A04AC000
  477.     EQUD    &A4008000
  478.     EQUD    &A8064000
  479.     EQUD    &AC064000
  480.     EQUD    &B0464000
  481.     EQUD    &B4464000
  482.     EQUD    &E0000007
  483.     EQUD    -1
  484.  
  485. .m9work_list
  486.     EQUD    0
  487.     EQUD    9
  488.     EQUD    -1
  489.  
  490. .m2vidc_list
  491. .m9vidc_list
  492.     EQUD    0
  493.     EQUD    9
  494.     EQUD    &8031C000
  495.     EQUD    &8405C000
  496.     EQUD    &88078000
  497.     EQUD    &8C06C000
  498.     EQUD    &902EC000
  499.     EQUD    &942F8000
  500.     EQUD    &A04AC000
  501.     EQUD    &A4008000
  502.     EQUD    &A8064000
  503.     EQUD    &AC064000
  504.     EQUD    &B0464000
  505.     EQUD    &B4464000
  506.     EQUD    &E0000009
  507.     EQUD    -1
  508.  
  509. .m10work_list
  510.     EQUD    0
  511.     EQUD    10
  512.     EQUD    -1
  513.  
  514. .m11work_list
  515.     EQUD    0
  516.     EQUD    11
  517.     EQUD    -1
  518.  
  519. .m3vidc_list
  520. .m11vidc_list
  521.     EQUD    0
  522.     EQUD    11
  523.     EQUD    &8063C000
  524.     EQUD    &840BC000
  525.     EQUD    &880F4000
  526.     EQUD    &8C0E0000
  527.     EQUD    &905E0000
  528.     EQUD    &945F4000
  529.     EQUD    &A04AC000
  530.     EQUD    &A4008000
  531.     EQUD    &A8064000
  532.     EQUD    &AC064000
  533.     EQUD    &B044C000
  534.     EQUD    &B444C000
  535.     EQUD    &E0000007
  536.     EQUD    -1
  537.  
  538. .m12work_list
  539.     EQUD    0
  540.     EQUD    12
  541.     EQUD    -1
  542.  
  543. .m12vidc_list
  544.     EQUD    0
  545.     EQUD    12
  546.     EQUD    &8063C000
  547.     EQUD    &840BC000
  548.     EQUD    &880F4000
  549.     EQUD    &8C0E8000
  550.     EQUD    &905E8000
  551.     EQUD    &945F4000
  552.     EQUD    &A04AC000
  553.     EQUD    &A4008000
  554.     EQUD    &A8064000
  555.     EQUD    &AC064000
  556.     EQUD    &B0464000
  557.     EQUD    &B4464000
  558.     EQUD    &E000000B
  559.     EQUD    -1
  560.  
  561. .m13work_list
  562.     EQUD    0
  563.     EQUD    13
  564.     EQUD    -1
  565.  
  566. .m10vidc_list
  567. .m13vidc_list
  568.     EQUD    0
  569.     EQUD    13
  570.     EQUD    &8031C000
  571.     EQUD    &8405C000
  572.     EQUD    &88078000
  573.     EQUD    &8C074000
  574.     EQUD    &902F4000
  575.     EQUD    &942F8000
  576.     EQUD    &A04AC000
  577.     EQUD    &A4008000
  578.     EQUD    &A8064000
  579.     EQUD    &AC064000
  580.     EQUD    &B0464000
  581.     EQUD    &B4464000
  582.     EQUD    &E000000D
  583.     EQUD    -1
  584.  
  585. .m14work_list
  586.     EQUD    0
  587.     EQUD    14
  588.     EQUD    -1
  589.  
  590. .m14vidc_list
  591.     EQUD    0
  592.     EQUD    14
  593.     EQUD    &8063C000
  594.     EQUD    &840BC000
  595.     EQUD    &880F4000
  596.     EQUD    &8C0E8000
  597.     EQUD    &905E8000
  598.     EQUD    &945F4000
  599.     EQUD    &A04AC000
  600.     EQUD    &A4008000
  601.     EQUD    &A8064000
  602.     EQUD    &AC064000
  603.     EQUD    &B044C000
  604.     EQUD    &B444C000
  605.     EQUD    &E000000B
  606.     EQUD    -1
  607.  
  608. .m15work_list
  609.     EQUD    0
  610.     EQUD    15
  611.     EQUD    -1
  612.  
  613. .m15vidc_list
  614.     EQUD    0
  615.     EQUD    15
  616.     EQUD    &8063C000
  617.     EQUD    &840BC000
  618.     EQUD    &880F4000
  619.     EQUD    &8C0F0000
  620.     EQUD    &905F0000
  621.     EQUD    &945F4000
  622.     EQUD    &A04AC000
  623.     EQUD    &A4008000
  624.     EQUD    &A8064000
  625.     EQUD    &AC064000
  626.     EQUD    &B0464000
  627.     EQUD    &B4464000
  628.     EQUD    &E000000F
  629.     EQUD    -1
  630.  
  631. .m16work_list
  632.     EQUD    0
  633.     EQUD    16
  634.     EQUD    -1
  635.  
  636. .m16vidc_list
  637.     EQUD    0
  638.     EQUD    16
  639.     EQUD    &80A24000
  640.     EQUD    &84108000
  641.     EQUD    &88190000
  642.     EQUD    &8C184000
  643.     EQUD    &909C4000
  644.     EQUD    &949D0000
  645.     EQUD    &A04AC000
  646.     EQUD    &A4008000
  647.     EQUD    &A8064000
  648.     EQUD    &AC064000
  649.     EQUD    &B0464000
  650.     EQUD    &B4464000
  651.     EQUD    -1
  652.  
  653. .m17work_list
  654.     EQUD    0
  655.     EQUD    17
  656.     EQUD    -1
  657.  
  658. .m17vidc_list
  659.     EQUD    0
  660.     EQUD    17
  661.     EQUD    &80A24000
  662.     EQUD    &84108000
  663.     EQUD    &88190000
  664.     EQUD    &8C184000
  665.     EQUD    &909C4000
  666.     EQUD    &949D0000
  667.     EQUD    &A04AC000
  668.     EQUD    &A4008000
  669.     EQUD    &A8064000
  670.     EQUD    &AC064000
  671.     EQUD    &B044C000
  672.     EQUD    &B444C000
  673.     EQUD    -1
  674.  
  675. .m18vidc_list
  676.     EQUD    0
  677.     EQUD    18                      ; Base MODE
  678.     EQUD    &80000000 OR (start + width + length - 2) / 2 << 14
  679.     EQUD    &84000000 OR (sync - 2) / 2 << 14
  680.     EQUD    &88000000 OR (start - 1) / 2 << 14
  681.     EQUD    &8C000000 OR (start - 19) / 2 << 14
  682.     EQUD    &90000000 OR (start + width - 19) / 2 << 14
  683.     EQUD    &94000000 OR (start + width - 1) / 2 << 14
  684.     EQUD    -1                      ; End
  685.  
  686. .m18work_list
  687.     EQUD    0
  688.     EQUD    18                      ; Base MODE
  689.     EQUD    -1                      ; End
  690.  
  691. .m19vidc_list
  692.     EQUD    0
  693.     EQUD    19                      ; Base MODE
  694.     EQUD    &80000000 OR (start + width + length - 2) / 2 << 14
  695.     EQUD    &84000000 OR (sync - 2) / 2 << 14
  696.     EQUD    &88000000 OR (start - 1) / 2 << 14
  697.     EQUD    &8C000000 OR (start - 11) / 2 << 14
  698.     EQUD    &90000000 OR (start + width - 11) / 2 << 14
  699.     EQUD    &94000000 OR (start + width - 1) / 2 << 14
  700.     EQUD    -1                      ; End
  701.  
  702. .m19work_list
  703.     EQUD    0
  704.     EQUD    19                      ; Base MODE
  705.     EQUD    -1                      ; End
  706.  
  707.  
  708. .m20vidc_list
  709.     EQUD    0
  710.     EQUD    20                      ; Base MODE
  711. ;    EQUD    &80000000 OR (start + width + length - 2) / 2 << 14
  712.     EQUD    &80000000 OR (cycle - 2) / 2 << 14
  713.     EQUD    &84000000 OR (sync - 2) / 2 << 14
  714.     EQUD    &88000000 OR (bstart - 1) / 2 << 14
  715.     EQUD    &8C000000 OR (start - 7) / 2 << 14
  716.     EQUD    &90000000 OR (start + width - 7) / 2 << 14
  717.     EQUD    &94000000 OR (bstart + bwidth - 1) / 2 << 14
  718.     EQUD    -1                      ; End
  719.  
  720. .m20work_list
  721.     EQUD    0
  722.     EQUD    20                      ; Base MODE
  723.     EQUD    -1                      ; End
  724.  
  725. .m21vidc_list
  726.     EQUD    0
  727.     EQUD    21                      ; Base MODE
  728.     EQUD    &80000000 OR (start + width + length - 2) / 2 << 14
  729.     EQUD    &84000000 OR (sync - 2) / 2 << 14
  730.     EQUD    &88000000 OR (start - 1) / 2 << 14
  731.     EQUD    &8C000000 OR (start - 5) / 2 << 14
  732.     EQUD    &90000000 OR (start + width - 5) / 2 << 14
  733.     EQUD    &94000000 OR (start + width - 1) / 2 << 14
  734.     EQUD    -1                      ; End
  735.  
  736. .m21work_list
  737.     EQUD    0
  738.     EQUD    21                      ; Base MODE
  739.     EQUD    -1                      ; End
  740.  
  741. .m76vidc_list
  742.     EQUD    0
  743.     EQUD    18                      ; Base MODE
  744.     EQUD    &80000000 OR (wstart + wwidth + wlength - 2) / 2 << 14
  745.     EQUD    &84000000 OR &02D << 14
  746.     EQUD    &88000000 OR (wstart - 1) / 2 << 14
  747.     EQUD    &8C000000 OR (wstart - 19) / 2 << 14
  748.     EQUD    &90000000 OR (wstart + wwidth - 19) / 2 << 14
  749.     EQUD    &94000000 OR (wstart + wwidth - 1) / 2 << 14
  750.     EQUD    &9C000000 OR &0E0 << 14
  751.     EQUD    &A0000000 OR &199 << 14
  752.     EQUD    &A4000000 OR &000 << 14
  753.     EQUD    &A8000000 OR &013 << 14
  754.     EQUD    &AC000000 OR &013 << 14
  755.     EQUD    &B0000000 OR &193 << 14
  756.     EQUD    &B4000000 OR &193 << 14
  757.     EQUD    &E0000000 OR &033
  758.     EQUD    -1                      ; End
  759.  
  760. .m76work_list
  761.     EQUD    0
  762.     EQUD    18                      ; Base MODE
  763.     EQUD    1
  764.     EQUD    119
  765.     EQUD    2
  766.     EQUD    47
  767.     EQUD    3
  768.     EQUD    1
  769.     EQUD    4
  770.     EQUD    1
  771.     EQUD    5
  772.     EQUD    2
  773.     EQUD    6
  774.     EQUD    120
  775.     EQUD    7
  776.     EQUD    &B400
  777.     EQUD    8
  778.     EQUD    4
  779.     EQUD    9
  780.     EQUD    0
  781.     EQUD    10
  782.     EQUD    0
  783.     EQUD    11
  784.     EQUD    959
  785.     EQUD    12
  786.     EQUD    383
  787.     EQUD    -1                      ; End
  788.  
  789. .m77vidc_list
  790.     EQUD    0
  791.     EQUD    19                      ; Base MODE
  792.     EQUD    &80000000 OR (wstart + wwidth + wlength - 2) / 2 << 14
  793.     EQUD    &84000000 OR &02D << 14
  794.     EQUD    &88000000 OR (wstart - 1) / 2 << 14
  795.     EQUD    &8C000000 OR (wstart - 11) / 2 << 14
  796.     EQUD    &90000000 OR (wstart + wwidth - 11) / 2 << 14
  797.     EQUD    &94000000 OR (wstart + wwidth - 1) / 2 << 14
  798.     EQUD    &9C000000 OR &0E0 << 14
  799.     EQUD    &A0000000 OR &199 << 14
  800.     EQUD    &A4000000 OR &000 << 14
  801.     EQUD    &A8000000 OR &013 << 14
  802.     EQUD    &AC000000 OR &013 << 14
  803.     EQUD    &B0000000 OR &193 << 14
  804.     EQUD    &B4000000 OR &193 << 14
  805.     EQUD    &E0000000 OR &037
  806.     EQUD    -1                      ; End
  807.  
  808. .m77work_list
  809.     EQUD    0
  810.     EQUD    19                      ; Base MODE
  811.     EQUD    1
  812.     EQUD    119
  813.     EQUD    2
  814.     EQUD    47
  815.     EQUD    3
  816.     EQUD    3
  817.     EQUD    4
  818.     EQUD    1
  819.     EQUD    5
  820.     EQUD    2
  821.     EQUD    6
  822.     EQUD    240
  823.     EQUD    7
  824.     EQUD    &16800
  825.     EQUD    8
  826.     EQUD    5
  827.     EQUD    9
  828.     EQUD    1
  829.     EQUD    10
  830.     EQUD    1
  831.     EQUD    11
  832.     EQUD    959
  833.     EQUD    12
  834.     EQUD    383
  835.     EQUD    -1                      ; End
  836.  
  837. .m78vidc_list
  838.     EQUD    0
  839.     EQUD    20                      ; Base MODE
  840.     EQUD    &80000000 OR (wstart + wwidth + wlength - 2) / 2 << 14
  841.     EQUD    &84000000 OR &02D << 14
  842.     EQUD    &88000000 OR (wstart - 1) / 2 << 14
  843.     EQUD    &8C000000 OR (wstart - 7) / 2 << 14
  844.     EQUD    &90000000 OR (wstart + wwidth - 7) / 2 << 14
  845.     EQUD    &94000000 OR (wstart + wwidth - 1) / 2 << 14
  846.     EQUD    &9C000000 OR &0E0 << 14
  847.     EQUD    &A0000000 OR &199 << 14
  848.     EQUD    &A4000000 OR &000 << 14
  849.     EQUD    &A8000000 OR &013 << 14
  850.     EQUD    &AC000000 OR &013 << 14
  851.     EQUD    &B0000000 OR &193 << 14
  852.     EQUD    &B4000000 OR &193 << 14
  853.     EQUD    &E0000000 OR &02B
  854.     EQUD    -1                      ; End
  855.  
  856. .m78work_list
  857.     EQUD    0
  858.     EQUD    20                      ; Base MODE
  859.     EQUD    1
  860.     EQUD    119
  861.     EQUD    2
  862.     EQUD    47
  863.     EQUD    3
  864.     EQUD    15
  865.     EQUD    4
  866.     EQUD    1
  867.     EQUD    5
  868.     EQUD    2
  869.     EQUD    6
  870.     EQUD    480
  871.     EQUD    7
  872.     EQUD    &2D000
  873.     EQUD    8
  874.     EQUD    6
  875.     EQUD    9
  876.     EQUD    2
  877.     EQUD    10
  878.     EQUD    2
  879.     EQUD    11
  880.     EQUD    959
  881.     EQUD    12
  882.     EQUD    383
  883.     EQUD    -1                      ; End
  884.  
  885. .m79vidc_list
  886.     EQUD    0
  887.     EQUD    21                      ; Base MODE
  888.     EQUD    &80000000 OR (wstart + wwidth + wlength - 2) / 2 << 14
  889.     EQUD    &84000000 OR &02D << 14
  890.     EQUD    &88000000 OR (wstart - 1) / 2 << 14
  891.     EQUD    &8C000000 OR (wstart - 5) / 2 << 14
  892.     EQUD    &90000000 OR (wstart + wwidth - 5) / 2 << 14
  893.     EQUD    &94000000 OR (wstart + wwidth - 1) / 2 << 14
  894.     EQUD    &9C000000 OR &0E0 << 14
  895.     EQUD    &A0000000 OR &199 << 14
  896.     EQUD    &A4000000 OR &000 << 14
  897.     EQUD    &A8000000 OR &013 << 14
  898.     EQUD    &AC000000 OR &013 << 14
  899.     EQUD    &B0000000 OR &193 << 14
  900.     EQUD    &B4000000 OR &193 << 14
  901.     EQUD    &E0000000 OR &00F
  902.     EQUD    -1                      ; End
  903.  
  904. .m79work_list
  905.     EQUD    0
  906.     EQUD    21                      ; Base MODE
  907.     EQUD    1
  908.     EQUD    119
  909.     EQUD    2
  910.     EQUD    47
  911.     EQUD    3
  912.     EQUD    63
  913.     EQUD    4
  914.     EQUD    1
  915.     EQUD    5
  916.     EQUD    2
  917.     EQUD    6
  918.     EQUD    960
  919.     EQUD    7
  920.     EQUD    &5A000
  921.     EQUD    8
  922.     EQUD    7
  923.     EQUD    9
  924.     EQUD    3
  925.     EQUD    10
  926.     EQUD    3
  927.     EQUD    11
  928.     EQUD    959
  929.     EQUD    12
  930.     EQUD    383
  931.     EQUD    -1                      ; End
  932.  
  933. .m96vidc_list
  934.     EQUD    &00000000
  935.     EQUD    &00000012
  936.     EQUD    &807CC000
  937.     EQUD    &840EC000
  938.     EQUD    &8813C000
  939.     EQUD    &8C118000
  940.     EQUD    &90758000
  941.     EQUD    &9477C000
  942.     EQUD    &A09D4000
  943.     EQUD    &A4010000
  944.     EQUD    &A8064000
  945.     EQUD    &AC064000
  946.     EQUD    &B09C4000
  947.     EQUD    &B49C4000
  948.     EQUD    -1
  949.  
  950. .m96work_list
  951.     EQUD    &00000000
  952.     EQUD    &00000012
  953.     EQUD    &00000001
  954.     EQUD    &00000063
  955.     EQUD    &00000002
  956.     EQUD    &0000004A
  957.     EQUD    &00000006
  958.     EQUD    &00000064
  959.     EQUD    &00000007
  960.     EQUD    &0000EA60
  961.     EQUD    &0000000B
  962.     EQUD    &0000031F
  963.     EQUD    &0000000C
  964.     EQUD    &00000257
  965.     EQUD    -1
  966.  
  967. .m97vidc_list
  968.     EQUD    &00000000
  969.     EQUD    &00000013
  970.     EQUD    &807CC000
  971.     EQUD    &840EC000
  972.     EQUD    &8813C000
  973.     EQUD    &8C128000
  974.     EQUD    &90768000
  975.     EQUD    &9477C000
  976.     EQUD    &A09D4000
  977.     EQUD    &A4010000
  978.     EQUD    &A8064000
  979.     EQUD    &AC064000
  980.     EQUD    &B09C4000
  981.     EQUD    &B49C4000
  982.     EQUD    -1
  983.  
  984. .m97work_list
  985.     EQUD    &00000000
  986.     EQUD    &00000013
  987.     EQUD    &00000001
  988.     EQUD    &00000063
  989.     EQUD    &00000002
  990.     EQUD    &0000004A
  991.     EQUD    &00000006
  992.     EQUD    &000000C8
  993.     EQUD    &00000007
  994.     EQUD    &0001D4C0
  995.     EQUD    &0000000B
  996.     EQUD    &0000031F
  997.     EQUD    &0000000C
  998.     EQUD    &00000257
  999.     EQUD    -1
  1000.  
  1001. .m98vidc_list
  1002.     EQUD    &00000000
  1003.     EQUD    &00000014
  1004.     EQUD    &807CC000
  1005.     EQUD    &840EC000
  1006.     EQUD    &8813C000
  1007.     EQUD    &8C130000
  1008.     EQUD    &90770000
  1009.     EQUD    &9477C000
  1010.     EQUD    &A09D4000
  1011.     EQUD    &A4010000
  1012.     EQUD    &A8064000
  1013.     EQUD    &AC064000
  1014.     EQUD    &B09C4000
  1015.     EQUD    &B49C4000
  1016.     EQUD    -1
  1017.  
  1018. .m98work_list
  1019.     EQUD    &00000000
  1020.     EQUD    &00000014
  1021.     EQUD    &00000001
  1022.     EQUD    &00000063
  1023.     EQUD    &00000002
  1024.     EQUD    &0000004A
  1025.     EQUD    &00000006
  1026.     EQUD    &00000190
  1027.     EQUD    &00000007
  1028.     EQUD    &0003A980
  1029.     EQUD    &0000000B
  1030.     EQUD    &0000031F
  1031.     EQUD    &0000000C
  1032.     EQUD    &00000257
  1033.     EQUD    -1
  1034.  
  1035. .m100vidc_list
  1036.      EQUD    0
  1037.      EQUD    18
  1038.      EQUD    &80000000 OR (mega_cycle - 2) / 2 << 14
  1039.      EQUD    &84000000 OR (mega_sync - 2) / 2 << 14
  1040.      EQUD    &88000000 OR (mega_bstart - 1) / 2 << 14
  1041.      EQUD    &8C000000 OR (mega_start - 19) / 2 << 14
  1042.      EQUD    &90000000 OR (mega_start + mega_width - 19) / 2 << 14
  1043.      EQUD    &94000000 OR (mega_bstart + mega_bwidth - 1) / 2 << 14
  1044.      EQUD    &A07CC000
  1045.      EQUD    &A4028000
  1046.      EQUD    &A8094000
  1047.      EQUD    &AC094000
  1048.      EQUD    &B0794000
  1049.      EQUD    &B4794000
  1050.      EQUD    -1
  1051.  
  1052. .m100work_list
  1053.      EQUD    &00000000
  1054.      EQUD    &00000012
  1055.      EQUD    &00000001
  1056.      EQUD    &0000008F
  1057.      EQUD    &00000002
  1058.      EQUD    &00000037
  1059.      EQUD    &00000005
  1060.      EQUD    &00000002
  1061.      EQUD    &00000006
  1062.      EQUD    &00000090
  1063.      EQUD    &00000007
  1064.      EQUD    &0000FC00
  1065.      EQUD    &0000000B
  1066.      EQUD    &0000047F
  1067.      EQUD    &0000000C
  1068.      EQUD    &000001BF
  1069.      EQUD    -1
  1070.  
  1071. .m101vidc_list
  1072.      EQUD    0
  1073.      EQUD    19
  1074.      EQUD    &80000000 OR (mega_cycle - 2) / 2 << 14
  1075.      EQUD    &84000000 OR (mega_sync - 2) / 2 << 14
  1076.      EQUD    &88000000 OR (mega_bstart - 1) / 2 << 14
  1077.      EQUD    &8C000000 OR (mega_start - 11) / 2 << 14
  1078.      EQUD    &90000000 OR (mega_start + mega_width - 11) / 2 << 14
  1079.      EQUD    &94000000 OR (mega_bstart + mega_bwidth - 1) / 2 << 14
  1080.      EQUD    &A07CC000
  1081.      EQUD    &A4028000
  1082.      EQUD    &A8094000
  1083.      EQUD    &AC094000
  1084.      EQUD    &B0794000
  1085.      EQUD    &B4794000
  1086.      EQUD    -1
  1087.  
  1088. .m101work_list
  1089.      EQUD    &00000000
  1090.      EQUD    &00000013
  1091.      EQUD    &00000001
  1092.      EQUD    &0000008F
  1093.      EQUD    &00000002
  1094.      EQUD    &00000037
  1095.      EQUD    &00000005
  1096.      EQUD    &00000002
  1097.      EQUD    &00000006
  1098.      EQUD    &00000120
  1099.      EQUD    &00000007
  1100.      EQUD    &0001F800
  1101.      EQUD    &0000000B
  1102.      EQUD    &0000047F
  1103.      EQUD    &0000000C
  1104.      EQUD    &000001BF
  1105.      EQUD    -1
  1106.  
  1107. .m102vidc_list
  1108.      EQUD    0
  1109.      EQUD    20
  1110. ;     EQUD    &80000000 OR (mega_start + 1152 + 7 - 2) / 2 << 14
  1111.      EQUD    &80000000 OR (mega_cycle - 2) / 2 << 14
  1112.      EQUD    &84000000 OR (mega_sync - 2) / 2 << 14
  1113.      EQUD    &88000000 OR (mega_bstart - 1) / 2 << 14
  1114.      EQUD    &8C000000 OR (mega_start - 7) / 2 << 14
  1115.      EQUD    &90000000 OR (mega_start + mega_width - 7) / 2 << 14
  1116.      EQUD    &94000000 OR (mega_bstart + mega_bwidth - 1) / 2 << 14
  1117.      EQUD    &A07CC000
  1118.      EQUD    &A4028000
  1119.      EQUD    &A8094000
  1120.      EQUD    &AC094000
  1121.      EQUD    &B0794000
  1122.      EQUD    &B4794000
  1123.      EQUD    -1
  1124.  
  1125. .m102work_list
  1126.      EQUD    &00000000
  1127.      EQUD    &00000014
  1128.      EQUD    &00000001
  1129.      EQUD    &0000008F
  1130.      EQUD    &00000002
  1131.      EQUD    &00000037
  1132.      EQUD    &00000005
  1133.      EQUD    &00000002
  1134.      EQUD    &00000006
  1135.      EQUD    &00000240
  1136.      EQUD    &00000007
  1137.      EQUD    &0003F000
  1138.      EQUD    &0000000B
  1139.      EQUD    &0000047F
  1140.      EQUD    &0000000C
  1141.      EQUD    &000001BF
  1142.      EQUD    -1
  1143.   ]
  1144. NEXT pass
  1145. ENDPROC
  1146.