home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / C64-128Toolkit / ACE-R11-SCR1.ARC / CONFIG.S < prev   
Encoding:
Text File  |  2019-04-13  |  17.6 KB  |  1,268 lines

  1. ;*** ├ONFIGURATION ╨ROGRAM ***
  2.  
  3. .SEQ ACEHEAD.S
  4. .SEQ KERNHEAD.S
  5. .ORG ACE┴PP┴DDRESS
  6. .OBJ "@0:CONFIG"
  7.  
  8. JMP MAIN
  9. .BYTE "C","╞",ACE╔─3
  10. .BYTE 64,0
  11.  
  12. KERNEL╙ETLFS  = $FFBA
  13. KERNEL╙ETNAM  = $FFBD
  14. KERNEL╧PEN    = $FFC0
  15. KERNEL├LOSE   = $FFC3
  16. KERNEL├HKIN   = $FFC6
  17. KERNEL├HKOUT  = $FFC9
  18. KERNEL├LRCHN  = $FFCC
  19. KERNEL├HRIN   = $FFCF
  20. KERNEL╠OAD    = $FFD5
  21. KERNEL╙WAPPER = $FF5F
  22. ST = $90
  23. TOTAL┬ANKS .BUF 2
  24. CHR├╥ = 13
  25. CHR╤UOTE = 34
  26.  
  27. CONFIG┬UF    = 2   ;(2)
  28. SYS╬AME      = 4   ;(2)
  29. RAM0╞REE═AP  = 6   ;(2)
  30. ACE┼ND╨AGE   = 8   ;(1)
  31. SYS╘YPE      = 9   ;(1)
  32. CHARSET4BIT╨ = 10  ;(2)
  33. MEM╥EAD      = 12  ;(2)
  34. MEM╫RITE     = 14  ;(2)
  35. BANKS        = 16  ;(1)
  36. BANK╠IMIT    = 17  ;(1)
  37. SAVE0        = 18  ;(2)
  38. SAVE2        = 20  ;(2)
  39. SAVE╬        = 22  ;(2)
  40. TITLE╨TR     = $70 ;(2)
  41.  
  42. MAIN = *
  43.    LDA #0
  44.    STA ACE╘OTAL═EMORY+0
  45.    STA ACE╘OTAL═EMORY+1
  46.    STA TOTAL┬ANKS+0
  47.    STA TOTAL┬ANKS+1
  48.    LDA #<TITLE
  49.    LDY #>TITLE
  50.    STA TITLE╨TR+0
  51.    STY TITLE╨TR+1
  52.    JSR LOAD├ONFIG
  53.    BCS +
  54.    JSR LOAD├HARSET
  55.    BCS +
  56.    JSR LOAD╙HELL
  57.    BCS +
  58.    JSR LOAD├HARSET4BIT
  59.    BCS +
  60.    JSR SCREEN╔NIT
  61.    JSR SET─ATE
  62.    JSR DISPLAY─ATE
  63.    JSR GET╥AMLINK╨ARMS
  64.    JSR INTERNAL═EMORY
  65.    JSR REU═EMORY
  66.    JSR RLREU═EMORY
  67.    JSR RL═EMORY
  68.    LDA TOTAL┬ANKS+0
  69.    LDY TOTAL┬ANKS+1
  70.    STA ACE╘OTAL═EMORY+2
  71.    STY ACE╘OTAL═EMORY+3
  72.    JSR TOTAL═EMORY
  73.    LDX #3
  74. -  LDA ACE╞REE═EMORY,X
  75.    STA ACE╘OTAL═EMORY,X
  76.    DEX
  77.    BPL -
  78.    CLC
  79.    LDA #<TITLE
  80.    LDY #>TITLE
  81.    STA 2
  82.    STY 3
  83.    SEC
  84.    LDA TITLE╨TR+0
  85.    SBC #<TITLE
  86.    STA 4
  87.    LDA TITLE╨TR+1
  88.    SBC #>TITLE
  89.    STA 5
  90.    CLC
  91. +  RTS
  92.  
  93. TEST═EMORY╘YPE = *  ;( .┴=TYPE, .╪=BANK╠IMIT ) : .┴=BANK├OUNT
  94.    STA MP+3
  95.    STX BANK╠IMIT
  96.    LDA #$00
  97.    LDY #$80  ;** PAGE TO USE FOR TESTING RAM
  98.    LDX #$00
  99.    STA MP+0
  100.    STY MP+1
  101.    STX MP+2
  102.    LDA #0
  103.    STA BANKS
  104.  
  105.    NEXT┬ANK = *
  106.    LDA BANKS
  107.    STA MP+2
  108.    JSR SAVE┬ANK
  109.    LDA #$FF-$CB
  110.    STA MEM╫RITE
  111.    LDA MP+2
  112.    STA MEM╫RITE+1
  113.    LDX #MEM╫RITE
  114.    LDY #2
  115.    JSR ZPSTORE
  116.    LDA #$FF-$CB
  117.    LDX MP+2
  118.    JSR TEST┬ANK
  119.    BCS BANK╞AIL
  120.    LDA #$CB
  121.    STA MEM╫RITE
  122.    LDX #MEM╫RITE
  123.    LDY #2
  124.    JSR ZPSTORE
  125.    LDA #$CB
  126.    LDX MP+2
  127.    JSR TEST┬ANK
  128.    BCS BANK╞AIL
  129.    LDA #$CB
  130.    LDX #0
  131.    JSR TEST┬ANK
  132.    BCS BANK╞AIL
  133.    LDA MP+2
  134.    CMP #2
  135.    BCC +
  136.    LDA #$CB
  137.    LDX #2
  138.    JSR TEST┬ANK
  139.    BCS BANK╞AIL
  140. +  JSR RESTORE┬ANK
  141.    INC BANKS
  142.    LDA BANKS
  143.    CMP BANK╠IMIT
  144.    BCC NEXT┬ANK
  145.  
  146.    BANK╞AIL = *
  147.    JSR RESTORE╫RAP┬ANKS
  148.    LDA BANKS
  149.    RTS
  150.  
  151. SAVE┬ANK = *  ;()
  152.    LDX #SAVE╬
  153.    LDY #2
  154.    LDA MP+2
  155.    CMP #0
  156.    BNE +
  157.    LDX #SAVE0
  158. +  CMP #2
  159.    BNE +
  160.    LDX #SAVE2
  161. +  JSR ZPLOAD
  162.    RTS
  163.  
  164. RESTORE┬ANK = *  ;()
  165.    LDA MP+2
  166.    CMP #0
  167.    BEQ +
  168.    CMP #2
  169.    BEQ +
  170.    LDX #SAVE╬
  171.    LDY #2
  172.    JSR ZPSTORE
  173. +  RTS
  174.  
  175. RESTORE╫RAP┬ANKS = *  ;()
  176.    LDA BANKS
  177.    CMP #3
  178.    BCC +
  179. +  LDA #2
  180.    STA MP+2
  181.    LDX #SAVE2
  182.    LDY #2
  183.    JSR ZPSTORE
  184.    LDA BANKS
  185.    CMP #1
  186.    BCC +
  187.    LDA #0
  188.    STA MP+2
  189.    LDX #SAVE0
  190.    LDY #2
  191.    JSR ZPSTORE
  192. +  RTS
  193.  
  194. RD╓AL  = 10  ;(1)
  195. RD┬ANK = 11  ;(1)
  196.  
  197. TEST┬ANK = *  ;( .┴=DATA, .╪=BANK ) : .├╙=ERR
  198.    STA RD╓AL
  199.    LDA MP+2
  200.    STA RD┬ANK
  201.    STX MP+2
  202.    LDA #$FF
  203.    STA MEM╥EAD
  204.    STA MEM╥EAD+1
  205.    LDX #MEM╥EAD
  206.    LDY #2
  207.    JSR ZPLOAD
  208.    LDA MEM╥EAD
  209.    CMP RD╓AL
  210.    BNE +
  211.    LDA MEM╥EAD+1
  212.    CMP MP+2
  213.    BNE +
  214.    LDA RD┬ANK
  215.    STA MP+2
  216.    CLC 
  217.    RTS
  218. +  LDA RD┬ANK
  219.    STA MP+2
  220.    SEC
  221.    RTS
  222.  
  223. PUTS = *
  224.    STA $40
  225.    STY $41
  226.    LDY #0
  227. -  LDA ($40),Y
  228.    BEQ +
  229.    JSR CHROUT
  230.    INY
  231.    BNE -
  232.    INC $41
  233.    BNE -
  234. +  RTS
  235.  
  236. LOAD├ONFIG = *
  237.    LDA #0
  238.    LDX 186
  239.    LDY #0
  240.    JSR KERNEL╙ETLFS
  241.    LDA #10
  242.    LDX #<LOAD├ONFIG╬AME
  243.    LDY #>LOAD├ONFIG╬AME
  244.    JSR KERNEL╙ETNAM
  245.    LDA #0
  246.    LDX CONFIG┬UF
  247.    LDY CONFIG┬UF+1
  248.    JSR KERNEL╠OAD
  249.    BCS +
  250.    CLC
  251.    RTS
  252. +  LDA #<BAD├ONFIG
  253.    LDY #>BAD├ONFIG
  254.    JSR PUTS
  255.    SEC
  256.    RTS
  257.  
  258.    LOAD├ONFIG╬AME = *
  259.    .ASC "CONFIG.SYS"
  260.    BAD├ONFIG = *
  261.    .ASC "┼RROR ATTEMPTING TO B-LOAD "
  262.    .BYTE CHR╤UOTE
  263.    .ASC "CONFIG.SYS"
  264.    .BYTE CHR╤UOTE
  265.    .ASC ", ABORTING."
  266.    .BYTE CHR├╥,0
  267.  
  268. LOAD├HARSET = *
  269.    LDA #0
  270.    LDX 186
  271.    LDY #0
  272.    JSR KERNEL╙ETLFS
  273.    LDA #11
  274.    LDX #<LOAD├HARSET╬AME
  275.    LDY #>LOAD├HARSET╬AME
  276.    JSR KERNEL╙ETNAM
  277.    LDA #0
  278.    LDX #<$2000
  279.    LDY #>$2000
  280.    JSR KERNEL╠OAD
  281.    BCS +
  282.    CLC
  283.    RTS
  284. +  LDA #<BAD├HARSET
  285.    LDY #>BAD├HARSET
  286.    JSR PUTS
  287.    SEC
  288.    RTS
  289.  
  290.    LOAD├HARSET╬AME = *
  291.    .ASC "ACE-CHARSET"
  292.    BAD├HARSET = *
  293.    .ASC "┼RROR ATTEMPTING TO B-LOAD "
  294.    .BYTE CHR╤UOTE
  295.    .ASC "ACE-CHARSET"
  296.    .BYTE CHR╤UOTE
  297.    .ASC ", ABORTING."
  298.    .BYTE CHR├╥,0
  299.  
  300. LOAD╙HELL = *
  301.    LDA #0
  302.    LDX 186
  303.    LDY #0
  304.    JSR KERNEL╙ETLFS
  305.    LDA #2
  306.    LDX #<LOAD╙HELL╬AME
  307.    LDY #>LOAD╙HELL╬AME
  308.    JSR KERNEL╙ETNAM
  309.    LDA #0
  310.    LDX #<ACE╙HELL┴DDRESS
  311.    LDY #>ACE╙HELL┴DDRESS
  312.    JSR KERNEL╠OAD
  313.    BCS +
  314.    CLC
  315.    RTS
  316. +  LDA #<BAD╙HELL
  317.    LDY #>BAD╙HELL
  318.    JSR PUTS
  319.    SEC
  320.    RTS
  321.  
  322.    LOAD╙HELL╬AME = *
  323.    .ASC "SH"
  324.    BAD╙HELL = *
  325.    .ASC "┼RROR ATTEMPTING TO B-LOAD "
  326.    .BYTE CHR╤UOTE
  327.    .ASC "SH"
  328.    .BYTE CHR╤UOTE
  329.    .ASC ", ABORTING."
  330.    .BYTE CHR├╥,0
  331.  
  332. LOAD├HARSET4BIT = *
  333.    LDA SYS╘YPE
  334.    CMP #64
  335.    BNE LOAD├H4┼XIT
  336.    LDY #$C0
  337.    LDA (CONFIG┬UF),Y
  338.    BPL LOAD├H4┼XIT
  339.    LDA #0
  340.    LDX 186
  341.    LDY #0
  342.    JSR KERNEL╙ETLFS
  343.    LDA #16
  344.    LDX #<LOAD├H4╬AME
  345.    LDY #>LOAD├H4╬AME
  346.    JSR KERNEL╙ETNAM
  347.    LDA #0
  348.    LDX #<CHAR4BIT┬UF
  349.    LDY #>CHAR4BIT┬UF
  350.    JSR KERNEL╠OAD
  351.    BCS +
  352.    SEI
  353.    LDA #$30
  354.    STA $01
  355.    LDX #0
  356. -  LDA CHAR4BIT┬UF+$000,X
  357.    STA $D800,X
  358.    LDA CHAR4BIT┬UF+$100,X
  359.    STA $D900,X
  360.    LDA CHAR4BIT┬UF+$200,X
  361.    STA $DA00,X
  362.    LDA CHAR4BIT┬UF+$300,X
  363.    STA $DB00,X
  364.    INX
  365.    BNE -
  366.    LDA #$36
  367.    STA $01
  368.    CLI
  369.    LOAD├H4┼XIT = *
  370.    CLC
  371.    RTS
  372. +  LDA #<BAD├H4
  373.    LDY #>BAD├H4
  374.    JSR PUTS
  375.    SEC
  376.    RTS
  377.  
  378.    LOAD├H4╬AME = *
  379.    .ASC "ACE-CHARSET-4BIT"
  380.    BAD├H4 = *
  381.    .ASC "┼RROR ATTEMPTING TO B-LOAD "
  382.    .BYTE CHR╤UOTE
  383.    .ASC "ACE-CHARSET-4BIT"
  384.    .BYTE CHR╤UOTE
  385.    .ASC ", ABORTING."
  386.    .BYTE CHR├╥,0
  387.  
  388. SCREEN╔NIT = *
  389.    LDA #147
  390.    JSR $FFD2
  391.    LDA SYS╬AME+0
  392.    LDY SYS╬AME+1
  393.    JSR PUTS
  394.    RTS
  395.  
  396. DISPLAY─ATE = *
  397.    LDA #<DATE┬UF
  398.    LDY #>DATE┬UF
  399.    JSR GETDATE
  400.    ;** YEAR
  401.    LDA DATE┬UF+0
  402.    LDX #11
  403.    JSR PUT─IGITS
  404.    LDA DATE┬UF+1
  405.    LDX #13
  406.    JSR PUT─IGITS
  407.    ;** MONTH
  408.    LDA DATE┬UF+2
  409.    CMP #$10
  410.    BCC +
  411.    SEC
  412.    SBC #$10-10
  413. +  TAX
  414.    LDA MONTH╙TR+0,X
  415.    STA DATE╙TR+7
  416.    LDA MONTH╙TR+13,X
  417.    STA DATE╙TR+8
  418.    LDA MONTH╙TR+26,X
  419.    STA DATE╙TR+9
  420.    ;** DAY
  421.    LDA DATE┬UF+3
  422.    LDX #4
  423.    JSR PUT─IGITS
  424.    ;** HOUR
  425.    LDA DATE┬UF+4
  426.    LDX #"A"
  427.    CMP #$00
  428.    BNE +
  429.    LDA #$12
  430.    JMP PUT╚OUR
  431. +  CMP #$12
  432.    BCC PUT╚OUR
  433.    LDX #"P"
  434.    CMP #$12
  435.    BEQ PUT╚OUR
  436.    SEI
  437.    SED
  438.    SEC
  439.    SBC #$12
  440.    CLD
  441.    CLI
  442.    PUT╚OUR = *
  443.    STX DATE╙TR+26
  444.    LDX #17
  445.    JSR PUT─IGITS
  446.    ;** MINUTE
  447.    LDA DATE┬UF+5
  448.    LDX #20
  449.    JSR PUT─IGITS
  450.    ;** SECOND
  451.    LDA DATE┬UF+6
  452.    LDX #23
  453.    JSR PUT─IGITS
  454.    ;** DAY OF WEEK
  455.    LDA DATE┬UF+7
  456.    AND #$07
  457.    TAX
  458.    LDA DOW╙TR+0,X
  459.    STA DATE╙TR+0
  460.    LDA DOW╙TR+8,X
  461.    STA DATE╙TR+1
  462.    LDA DOW╙TR+16,X
  463.    STA DATE╙TR+2
  464.    LDA #<DATE╙TR
  465.    LDY #>DATE╙TR
  466.    JSR PUTS
  467.    RTS
  468.  
  469.    PUT─IGITS = *  ;( .┴=NUM, .╪=OFFSET )
  470.    PHA
  471.    LSR
  472.    LSR
  473.    LSR
  474.    LSR
  475.    ORA #$30
  476.    STA DATE╙TR,X
  477.    PLA
  478.    AND #$0F
  479.    ORA #$30
  480.    STA DATE╙TR+1,X
  481.    RTS
  482.  
  483.    DATE╙TR = *
  484.         ;0123456789012345678901234567
  485.    .ASC "╘UE-05-═AY-1993  11:34:12 PM"
  486.    .BYTE 13,13,0
  487.    DATE┬UF .BUF 10
  488.    DOW╙TR = *
  489.    .ASC "*╙═╘╫╘╞╙"
  490.    .ASC "*UOUEHRA"
  491.    .ASC "*NNEDUIT"
  492.    MONTH╙TR = *
  493.    .ASC "*╩╞═┴═╩╩┴╙╧╬─"
  494.    .ASC "*AEAPAUUUECOE"
  495.    .ASC "*NBRRYNLGPTVC"
  496.  
  497. TRY─ATE = 10
  498.  
  499. SET─ATE = *
  500.    LDY #$82
  501. -  STY TRY─ATE
  502.    LDA (CONFIG┬UF),Y
  503.    CMP #$FF
  504.    BEQ +
  505.    JSR CMD╧PEN
  506.    BCS +
  507.    LDA #<QUERY─ATE╙TR
  508.    LDY #>QUERY─ATE╙TR
  509.    JSR CMD╙END
  510.    BCS QUERY┼RROR
  511.    LDA #<DATE┬UF
  512.    LDY #>DATE┬UF
  513.    LDX #9
  514.    JSR CMD─ATA
  515.    BCS QUERY┼RROR
  516.    JSR CMD├LOSE
  517.    JMP CONVERT├MD─ATE
  518.  
  519.    QUERY┼RROR = *
  520.    JSR CMD├LOSE
  521. +  INC TRY─ATE
  522.    LDY TRY─ATE
  523.    CPY #$86
  524.    BCC -
  525.  
  526.    SET─EFAULT─ATE = *
  527.    LDA CONFIG┬UF
  528.    LDY CONFIG┬UF+1
  529.    CLC
  530.    ADC #$86
  531.    BCC +
  532.    INY
  533. +  JMP SETDATE
  534.  
  535.    QUERY─ATE╙TR = *
  536.    .ASC "T-RB"
  537.    .BYTE 13,0
  538.  
  539. CONVERT├MD─ATE = *
  540.    LDA DATE┬UF+4
  541.    LDX DATE┬UF+7
  542.    BEQ +
  543.    SEI
  544.    SED
  545.    CLC
  546.    ADC #$12
  547.    CLD
  548.    CLI
  549. +  CMP #$12
  550.    BNE +
  551.    LDA #$00
  552. +  CMP #$24
  553.    BNE +
  554.    LDA #$12
  555. +  STA DATE┬UF+4
  556.    CLC
  557.    LDA DATE┬UF+0
  558.    ADC #$51
  559.    STA DATE┬UF+7
  560.    LDX #$19
  561.    LDA DATE┬UF+1
  562.    CMP #$70
  563.    BCS +
  564.    LDX #$20
  565. +  STX DATE┬UF+0
  566.    LDA #<DATE┬UF
  567.    LDY #>DATE┬UF
  568.    JSR SETDATE
  569.    RTS
  570.  
  571. CMD╧PEN = *  ;( .┴=DEVICE ) : .├╙=ERR
  572.    TAX
  573.    LDA #6
  574.    LDY #15
  575.    JSR KERNEL╙ETLFS
  576.    LDA #0
  577.    JSR KERNEL╙ETNAM
  578.    JSR KERNEL╧PEN
  579.    RTS
  580.  
  581. CMD├LOSE = *  ;()
  582.    CLC
  583.    LDA #6
  584.    JSR KERNEL├LOSE
  585.    RTS
  586.  
  587. CMD╙END = *  ;( (.┴┘)=CMD╙TR┌ ) : .├╙=ERR
  588.    STA $40
  589.    STY $41
  590.    LDX #6
  591.    JSR KERNEL├HKOUT
  592.    BCC +
  593.    RTS
  594. +  LDY #0
  595. -  LDA ($40),Y
  596.    BEQ +
  597.    JSR $FFD2
  598.    INY
  599.    BNE -
  600. +  JSR KERNEL├LRCHN
  601.    CLC
  602.    RTS
  603.  
  604. CMD─ATA = *  ;( (.┴┘)=CMD┬UF, .╪=LEN ) : .├╙=ERR
  605.    STA $40
  606.    STY $41
  607.    STX $42
  608.    LDX #6
  609.    JSR KERNEL├HKIN
  610.    BCC +
  611.    RTS
  612. +  LDX #0
  613.    JSR KERNEL├HRIN
  614.    CMP #"0"
  615.    BCC ++
  616.    CMP #"9"+1
  617.    BCS ++
  618.    BAD─ATA = *
  619. -  JSR KERNEL├HRIN
  620.    BCS +
  621.    BIT ST
  622.    BVS +
  623.    CMP #13
  624.    BNE -
  625. +  JSR KERNEL├LRCHN
  626.    SEC
  627.    RTS
  628. +  LDY #0
  629.    STA ($40),Y
  630.    INY
  631. -  JSR KERNEL├HRIN
  632.    STA ($40),Y 
  633.    INY
  634.    CPY $42
  635.    BCC -
  636.    CMP #13
  637.    BNE BAD─ATA
  638.    JSR KERNEL├LRCHN
  639.    CLC
  640.    RTS
  641.  
  642. GET╥AMLINK╨ARMS = *
  643.    LDY #$80
  644.    LDA (CONFIG┬UF),Y
  645.    JSR CMD╧PEN
  646.    BCS RL╨ARMS┼RROR
  647.  
  648.    ;** RAMLINK RAM ACCESS
  649.    LDA #<PART╥L├MD
  650.    LDY #>PART╥L├MD
  651.    JSR CMD╙END
  652.    BCS RL╨ARMS┼RROR
  653.    LDA #<RL╔DENT
  654.    LDY #>RL╔DENT
  655.    JSR CHECK╨ARTITION
  656.    BCS +
  657.    STA ACE╥AMLINK╙TART
  658.    STY ACE╥AMLINK╙TART+1
  659.    STX ACE╥AMLINK┬ANKS
  660.  
  661.    ;** INDIRECT REU ACCESS
  662. +  LDA #<PART╥LREU├MD
  663.    LDY #>PART╥LREU├MD
  664.    JSR CMD╙END
  665.    BCS RL╨ARMS┼RROR
  666.    LDA #<RLREU╔DENT
  667.    LDY #>RLREU╔DENT
  668.    JSR CHECK╨ARTITION
  669.    BCS RL╨ARMS┼RROR
  670.    STA ACE╥AMLINK╥EU╙TART
  671.    STY ACE╥AMLINK╥EU╙TART+1
  672.    STX ACE╥AMLINK╥EU┬ANKS
  673.  
  674.    RL╨ARMS┼RROR = *
  675.    JSR CMD├LOSE
  676.    RTS
  677.  
  678. CHECK╨ARTITION = *  ;( (.┴┘)=NAME ) : .├╙=ERR, .┴┘=START, .╪=BANKS
  679.    STA $44
  680.    STY $45
  681.    LDA #<PARTITION┬UF
  682.    LDY #>PARTITION┬UF
  683.    LDX #31
  684.    JSR CMD─ATA
  685.    BCS CHECK┼RR┼XIT
  686.    LDA PARTITION┬UF+0
  687.    CMP #7
  688.    BNE CHECK┼RR┼XIT
  689.    LDY #0
  690. -  LDA ($44),Y
  691.    BEQ +
  692.    CMP PARTITION┬UF+3,Y
  693.    BNE CHECK┼RR┼XIT
  694.    INY
  695.    BNE -
  696. +  LDA PARTITION┬UF+21
  697.    LDY PARTITION┬UF+20
  698.    LDX PARTITION┬UF+28
  699.    CLC
  700.    RTS
  701.  
  702.    CHECK┼RR┼XIT = *
  703.    SEC
  704.    RTS
  705.  
  706. PART╥L├MD = *
  707.    .ASC "G-P"
  708.    .BYTE 31,0
  709. RL╔DENT = *
  710.    .ASC "RL-RAM"
  711.    .BYTE $A0,0
  712. PART╥LREU├MD = *
  713.    .ASC "G-P"
  714.    .BYTE 30,0
  715. RLREU╔DENT = *
  716.    .ASC "INDIRECT-REU"
  717.    .BYTE $A0,0
  718. PARTITION┬UF .BUF 35
  719.  
  720. PUTNUM = *  ;( [$44]=NUM, .┴=WIDTH )
  721.    PHA
  722.    LDA #<OUTCHAR
  723.    LDY #>OUTCHAR
  724.    STA ZP+0
  725.    STY ZP+1
  726.    LDX #$44
  727.    PLA
  728.    JSR UTOA
  729.    JSR PUTCOMMA
  730.    LDX #0
  731. -  LDA OUTCHAR,X
  732.    BEQ +
  733.    JSR CHROUT
  734.    INX
  735.    BNE -
  736. +  RTS
  737.    OUTCHAR .BUF 11
  738.  
  739. PUTCOMMA = *  ;( OUTCHAR )
  740.    LDX #$FF
  741. -  INX
  742.    LDA OUTCHAR,X
  743.    BNE -
  744. -  DEX
  745.    DEX
  746.    DEX
  747.    DEX
  748.    CPX #$80
  749.    BCC +
  750.    RTS
  751. +  CPX #0
  752.    BCS +
  753.    RTS
  754. +  LDA OUTCHAR,X
  755.    CMP #" "
  756.    BNE +
  757.    RTS
  758. +  STX $44
  759.    LDY #0
  760. -  LDA OUTCHAR+1,Y
  761.    STA OUTCHAR,Y
  762.    INY
  763.    CPY $44
  764.    BCC -
  765.    LDA #"_"
  766.    STA OUTCHAR,Y
  767.    JMP --
  768.    RTS
  769.  
  770. DISPLAY┴VAIL = *  ;( (.┴┘)=NAME, (.╪,$45)=BANKS )
  771.    STA $40
  772.    STY $41
  773.    STX $44
  774.    LDY #0
  775. -  LDA ($40),Y
  776.    JSR CHROUT
  777.    INY
  778.    CPY #6
  779.    BCC -
  780.    LDA #":"
  781.    JSR CHROUT
  782.    TXA
  783.    CLC
  784.    ADC TOTAL┬ANKS
  785.    STA TOTAL┬ANKS
  786.    LDA $45
  787.    ADC TOTAL┬ANKS+1
  788.    STA TOTAL┬ANKS+1
  789.    LDA #0
  790.    STA $46
  791.    STA $47
  792.    LDX #6
  793. -  ASL $44
  794.    ROL $45
  795.    ROL $46
  796.    ROL $47
  797.    DEX
  798.    BNE -
  799.    LDA #6
  800.    JSR PUTNUM
  801.    LDA #"╦"
  802.    JSR CHROUT
  803.    RTS
  804.  
  805. ADD╘O╞REE = *  ;( [$44]=BYTES )
  806.    CLC
  807.    LDA $44
  808.    ADC ACE╞REE═EMORY+0
  809.    STA ACE╞REE═EMORY+0
  810.    LDA $45
  811.    ADC ACE╞REE═EMORY+1
  812.    STA ACE╞REE═EMORY+1
  813.    LDA $46
  814.    ADC ACE╞REE═EMORY+2
  815.    STA ACE╞REE═EMORY+2
  816.    BCC +
  817.    INC ACE╞REE═EMORY+3
  818. +  RTS
  819.  
  820. DISPLAY╞REE = *  ;( [$44]=BYTES )
  821.    LDA #<FREE═SG
  822.    LDY #>FREE═SG
  823.    JSR PUTS
  824.    LDA #10
  825.    JSR PUTNUM
  826.    LDA #13
  827.    JSR CHROUT
  828.    RTS
  829.    FREE═SG = *
  830.    .ASC "   FREE:"
  831.    .BYTE 0
  832.  
  833. RESET╞REE = *
  834.    LDA #0
  835.    LDX #3
  836. -  STA $44,X
  837.    DEX
  838.    BPL -
  839.    RTS
  840.  
  841. INTERNAL═EMORY = *
  842.    LDA #ACE═EM╔NTERNAL
  843.    LDX #255
  844.    SEI
  845.    JSR TEST═EMORY╘YPE
  846.    CLI
  847.    STA ACE╔NTERNAL┬ANKS
  848.    PHA
  849.    JSR INSTALL╔NTERN╓ECTORS
  850.    PLA
  851.    TAX
  852.    LDA #0
  853.    STA $45
  854.    LDA #<INTERNAL╬AME
  855.    LDY #>INTERNAL╬AME
  856.    JSR DISPLAY┴VAIL
  857.    JSR RESET╞REE
  858.  
  859.    ;** RAM0
  860.    LDA #ACE═EM╔NTERNAL
  861.    STA MP+3
  862.    LDA #0
  863.    STA ACE╔NTERNAL├UR
  864.    LDA RAM0╞REE═AP+0
  865.    LDY RAM0╞REE═AP+1
  866.    STA ACE╥AM0╞REEMAP+0
  867.    STY ACE╥AM0╞REEMAP+1
  868.    LDX #0
  869.    STA MP+0
  870.    STY MP+1
  871.    STX MP+2
  872.    LDY #$A3
  873.    BIT SYS╘YPE
  874.    BMI +
  875.    LDY #$C1
  876. +  LDA (CONFIG┬UF),Y
  877.    TAY
  878.    LDA #1
  879.    LDX #>ACE┴PP┴DDRESS
  880.    JSR INIT┬ANKS
  881.    JSR FREE╥AM0┴FTER╦ERNEL
  882.  
  883.    ;** RAM1
  884.    BIT SYS╘YPE
  885.    BPL EXP╔NTERNAL64
  886.    LDA #$00
  887.    STA MP+0
  888.    LDY #$A0
  889.    LDA (CONFIG┬UF),Y
  890.    STA MP+1
  891.    STA ACE╥AM1╞REEMAP
  892.    LDA #1
  893.    STA MP+2
  894.    LDY #$A1
  895.    LDA (CONFIG┬UF),Y
  896.    TAY
  897.    LDA #2
  898.    LDX MP+1
  899.    INX
  900.    JSR INIT┬ANKS
  901.  
  902.    ;** RAM2-7 C128
  903.    EXP╔NTERNAL128 = *
  904.    LDA #2
  905.    STA MP+2
  906.    LDA #$00
  907.    LDY #$04
  908.    STA MP+0
  909.    STY MP+1
  910.    LDY #$A5
  911.    LDA (CONFIG┬UF),Y
  912.    LDX ACE╔NTERNAL┬ANKS
  913.    JSR MIN
  914.    STA ACE╔NTERNAL┬ANKS
  915.    LDX #$05
  916.    LDY #$FF
  917.    JSR INIT┬ANKS
  918.    JSR ADD╘O╞REE
  919.    JSR DISPLAY╞REE
  920.    RTS
  921.  
  922.    ;** RAM1-3 C64
  923.    EXP╔NTERNAL64 = *
  924.    LDA #1
  925.    STA ACE╔NTERNAL┬ANKS
  926.    JSR ADD╘O╞REE
  927.    JSR DISPLAY╞REE
  928.    RTS
  929.  
  930.    INTERNAL╬AME = *
  931.    .ASC "INTERN"
  932.  
  933. RESERVE╘╨┴ = *
  934.    LDY #$A8
  935.    BIT SYS╘YPE
  936.    BMI +
  937.    LDY #$C6
  938. +  LDA (CONFIG┬UF),Y
  939.    STA $40
  940.    LDY #>ACE┴PP┴DDRESS
  941.    LDA #$FE
  942.    CPY $40
  943.    BCS +
  944. -  STA (RAM0╞REE═AP),Y
  945.    INY
  946.    CPY $40
  947.    BCC -
  948. +  SEC
  949.    LDA $40
  950.    SBC #>ACE┴PP┴DDRESS
  951.    STA $40
  952.    SEC
  953.    LDA ACE╞REE═EMORY+1
  954.    SBC $40
  955.    STA ACE╞REE═EMORY+1
  956.    LDA ACE╞REE═EMORY+2
  957.    SBC #0
  958.    STA ACE╞REE═EMORY+2
  959.    LDA ACE╞REE═EMORY+3
  960.    SBC #0
  961.    STA ACE╞REE═EMORY+3
  962.    RTS
  963.  
  964. RESERVE╓IC80 = *
  965.    BIT SYS╘YPE
  966.    BVS +
  967. -  RTS
  968. +  LDY #$C0
  969.    LDA (CONFIG┬UF),Y
  970.    BPL -
  971.    LDA #$FC
  972.    LDY #$D8
  973. -  STA (RAM0╞REE═AP),Y
  974.    INY
  975.    CPY #$FF
  976.    BCC -
  977.    SEC
  978.    LDA ACE╞REE═EMORY+1
  979.    SBC #$FF-$D8
  980.    STA ACE╞REE═EMORY+1
  981.    LDA ACE╞REE═EMORY+2
  982.    SBC #0
  983.    STA ACE╞REE═EMORY+2
  984.    LDA ACE╞REE═EMORY+3
  985.    SBC #0
  986.    STA ACE╞REE═EMORY+3
  987.    RTS
  988.  
  989. FREE╥AM0┴FTER╦ERNEL = *
  990.    ;** FREE END.KERNEL->ST.SHELL
  991.    LDY ACE┼ND╨AGE
  992.    CPY #>ACE┴PP┴DDRESS
  993.    BCS +
  994.    LDA #$00
  995. -  STA (RAM0╞REE═AP),Y
  996.    INY
  997.    CPY #>ACE┴PP┴DDRESS
  998.    BCC -
  999. +  SEC
  1000.    LDA #>ACE┴PP┴DDRESS
  1001.    SBC ACE┼ND╨AGE
  1002.    STA $40
  1003.    CLC
  1004.    LDA $45
  1005.    ADC $40
  1006.    STA $45
  1007.    BCC +
  1008.    INC $46
  1009.    BNE +
  1010.    INC $47
  1011. +  RTS
  1012.  
  1013. INSTALL╔NTERN╓ECTORS = *
  1014.    BIT SYS╘YPE
  1015.    BPL INSTALL╓ECTORS64
  1016.    LDA ACE╔NTERNAL┬ANKS
  1017.    CMP #2
  1018.    BCS +
  1019.    RTS
  1020. +  SEI
  1021.    LDA #2
  1022.    LDY #ACE═EM╔NTERNAL
  1023.    STA MP+2
  1024.    STY MP+3
  1025. -  LDA #$05
  1026.    LDY #$FF
  1027.    STA MP+0
  1028.    STY MP+1
  1029.    STA ZP+0
  1030.    STY ZP+1
  1031.    LDA #<251
  1032.    LDY #>251
  1033.    JSR STASH
  1034.    INC MP+2
  1035.    LDA MP+2
  1036.    CMP ACE╔NTERNAL┬ANKS
  1037.    BCC -
  1038.    CLI
  1039.    RTS
  1040.  
  1041. INSTALL╓ECTORS64 = *
  1042.    ;XX COPY TO EXP BANKS
  1043.    RTS
  1044.  
  1045. REU═EMORY = *
  1046.    LDA #ACE═EM╥┼╒
  1047.    LDX #255
  1048.    JSR TEST═EMORY╘YPE
  1049.    STA ACE╥EU┬ANKS
  1050.    TAX
  1051.    BNE +
  1052.    LDA ACE╥AMLINK╥EU┬ANKS
  1053.    BEQ +
  1054.    RTS
  1055. +  LDA #0
  1056.    STA $45
  1057.    LDA #<REU╬AME
  1058.    LDY #>REU╬AME
  1059.    JSR DISPLAY┴VAIL
  1060.    JSR RESET╞REE
  1061.    LDA #ACE═EM╥┼╒
  1062.    STA MP+3
  1063.    LDY #$A6
  1064.    BIT SYS╘YPE
  1065.    BMI +
  1066.    LDY #$C2
  1067. +  LDA (CONFIG┬UF),Y
  1068.    STA ACE╥EU╙TART
  1069.    STA ACE╥EU├UR
  1070.    LDY #$A7
  1071.    BIT SYS╘YPE
  1072.    BMI +
  1073.    LDY #$C3
  1074. +  LDA (CONFIG┬UF),Y
  1075.    LDX ACE╥EU┬ANKS
  1076.    JSR MIN
  1077.    STA ACE╥EU┬ANKS
  1078.    LDA #$00
  1079.    LDY #$FF
  1080.    LDX ACE╥EU╙TART
  1081.    STA MP+0
  1082.    STY MP+1
  1083.    STX MP+2
  1084.    LDA ACE╥EU┬ANKS
  1085.    LDX #$00
  1086.    LDY #$FF
  1087.    JSR INIT┬ANKS
  1088.    JSR ADD╘O╞REE
  1089.    JSR DISPLAY╞REE
  1090.    RTS
  1091.    REU╬AME = *
  1092.    .ASC "REU   "
  1093.  
  1094. RLREU═EMORY = *
  1095.    LDA ACE╥EU┬ANKS
  1096.    BEQ +
  1097.    LDA #0
  1098.    STA ACE╥AMLINK╥EU┬ANKS
  1099. -  RTS
  1100. +  LDX ACE╥AMLINK╥EU┬ANKS
  1101.    BEQ -
  1102.    LDA #0
  1103.    STA $45
  1104.    LDA #<RLREU╬AME
  1105.    LDY #>RLREU╬AME
  1106.    JSR DISPLAY┴VAIL
  1107.    JSR RESET╞REE
  1108.    LDA #ACE═EM╥╠╥┼╒
  1109.    STA MP+3
  1110.    LDY #$A6
  1111.    BIT SYS╘YPE
  1112.    BMI +
  1113.    LDY #$C2
  1114. +  LDA (CONFIG┬UF),Y
  1115.    STA ACE╥EU╙TART  ;**SIC
  1116.    STA ACE╥AMLINK╥EU├UR
  1117.    LDY #$A7
  1118.    BIT SYS╘YPE
  1119.    BMI +
  1120.    LDY #$C3
  1121. +  LDA (CONFIG┬UF),Y
  1122.    LDX ACE╥AMLINK╥EU┬ANKS
  1123.    JSR MIN
  1124.    STA ACE╥AMLINK╥EU┬ANKS
  1125.    LDA #$00
  1126.    LDY #$FF
  1127.    LDX ACE╥AMLINK╥EU╙TART
  1128.    STA MP+0
  1129.    STY MP+1
  1130.    STX MP+2
  1131.    LDA ACE╥AMLINK╥EU┬ANKS
  1132.    LDX #$00
  1133.    LDY #$FF
  1134.    JSR INIT┬ANKS
  1135.    JSR ADD╘O╞REE
  1136.    JSR DISPLAY╞REE
  1137.    RTS
  1138.    RLREU╬AME = *
  1139.    .ASC "RL-REU"
  1140.  
  1141. RL═EMORY = *
  1142.    LDX ACE╥AMLINK┬ANKS
  1143.    LDA #0
  1144.    STA $45
  1145.    LDA #<RL╬AME
  1146.    LDY #>RL╬AME
  1147.    JSR DISPLAY┴VAIL
  1148.    JSR RESET╞REE
  1149.    LDY #$81
  1150.    LDA (CONFIG┬UF),Y
  1151.    LDX ACE╥AMLINK┬ANKS
  1152.    JSR MIN
  1153.    STA ACE╥AMLINK┬ANKS
  1154.    LDA #ACE═EM╥╠
  1155.    STA MP+3
  1156.    LDA #$00
  1157.    LDY #$FF
  1158.    LDX #0
  1159.    STX ACE╥AMLINK├UR
  1160.    STA MP+0
  1161.    STY MP+1
  1162.    STX MP+2
  1163.    LDA ACE╥AMLINK┬ANKS
  1164.    LDX #$00
  1165.    LDY #$FF
  1166.    JSR INIT┬ANKS
  1167.    JSR ADD╘O╞REE
  1168.    JSR DISPLAY╞REE
  1169.    RTS
  1170.    RL╬AME = *
  1171.    .ASC "RL-RAM"
  1172.  
  1173. TOTAL═EMORY = *
  1174.    LDX TOTAL┬ANKS
  1175.    LDA TOTAL┬ANKS+1
  1176.    STA $45
  1177.    LDA #<TOTAL╬AME
  1178.    LDY #>TOTAL╬AME
  1179.    JSR DISPLAY┴VAIL
  1180.    LDX #3
  1181. -  LDA ACE╞REE═EMORY,X
  1182.    STA $44,X
  1183.    DEX
  1184.    BPL -
  1185.    JSR DISPLAY╞REE
  1186.    LDA #13
  1187.    JSR CHROUT
  1188.    JSR RESERVE╘╨┴
  1189.    JSR RESERVE╓IC80
  1190.    RTS
  1191.    TOTAL╬AME = *
  1192.    .ASC "TOTAL "
  1193.    RTS
  1194.  
  1195. END┬ANK   = 10  ;(1)
  1196. START╞REE = 11  ;(1)
  1197. END╞REE   = 12  ;(1)
  1198.  
  1199. INIT┬ANKS = *  ;( [MP]=FIRST╞REEMAP, .┴=END┬ANK+1, .╪=START╞REE, .┘=END╞REE+1 )
  1200.    STA END┬ANK
  1201.    STX START╞REE
  1202.    STY END╞REE
  1203.    LDA #<FREEMAP
  1204.    LDY #>FREEMAP
  1205.    STA ZP+0
  1206.    STY ZP+1
  1207.    LDX #0
  1208.    LDA #$FF
  1209. -  STA FREEMAP,X
  1210.    INX
  1211.    BNE -
  1212.    LDX START╞REE
  1213.    CPX END╞REE
  1214.    BCS FREE╬EXT┬ANK
  1215.    LDA #$00
  1216. -  STA FREEMAP,X
  1217.    INX
  1218.    CPX END╞REE
  1219.    BCC -
  1220.  
  1221.    FREE╬EXT┬ANK = *
  1222.    LDA MP+2
  1223.    CMP END┬ANK
  1224.    BCS +
  1225.    LDA #<256
  1226.    LDY #>256
  1227.    JSR STASH
  1228.    INC MP+2
  1229.    SEC
  1230.    LDA END╞REE
  1231.    SBC START╞REE
  1232.    CLC
  1233.    ADC $45
  1234.    STA $45
  1235.    BCC FREE╬EXT┬ANK
  1236.    INC $46
  1237.    BNE FREE╬EXT┬ANK
  1238.    INC $47
  1239.    JMP FREE╬EXT┬ANK
  1240. +  RTS
  1241.  
  1242. MIN = *  ;( .┴=NUM1, .╪=NUM2 ) : .┴=MIN
  1243.    STX $40
  1244.    CMP $40
  1245.    BCC +
  1246.    LDA $40
  1247. +  RTS
  1248.  
  1249. CHROUT╙AVE .BUF 1
  1250.  
  1251. CHROUT = *
  1252.    JSR $FFD2
  1253.    STY CHROUT╙AVE
  1254.    LDY #0
  1255.    STA (TITLE╨TR),Y
  1256.    INC TITLE╨TR+0
  1257.    BNE +
  1258.    INC TITLE╨TR+1
  1259. +  LDY CHROUT╙AVE
  1260.    CLC
  1261.    RTS
  1262.  
  1263. BSS = *
  1264. FREEMAP = BSS+0
  1265. TITLE = FREEMAP+256
  1266. CHAR4BIT┬UF = TITLE+512
  1267. BSS┼ND = CHAR4BIT┬UF+1024
  1268.