Subversion Repositories NedoOS

Rev

Rev 668 | Rev 681 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download

  1. modCd=((modC+255)/256)*256
  2. BEGcur
  3.         LD A,(EPAT)
  4.         CALL iPATq
  5.        CALL XPP2
  6.        LD A,C
  7.         CALL ICHNQ
  8.         LD A,(CURY)
  9.         ld (beg1),A
  10.        XOR A
  11.         JR IBEGq
  12. DECBEG2
  13. DECBEG1 LD A,-1
  14.         JR IBEG1Q
  15. INCBEG2
  16. INCBEG1 LD A,1
  17. IBEG1Q  LD HL,ARX
  18.         BIT 5,(HL)
  19. IBEGq   LD HL,beg1
  20.         ld DE,#2E0B
  21.         jr Z,$+8
  22. IBEG2q   LD HL,beg2
  23.          ld DE,#380B
  24.         ADD A,(HL)
  25.         AND 63
  26.         LD (HL),A
  27. toOO
  28.         LD BC,#2F0A
  29.          INC B
  30.          SUB C
  31.         jr NC,$-2
  32.         ADD A,C
  33.         PUSH AF
  34.         LD A,B
  35.         CALL PRADD
  36.         POP AF
  37. toOOQ   INC D
  38.         ADD A,'0'
  39.         JP PRADD
  40. prpatl
  41.         LD A,(PATLEN)
  42.         INC A
  43.         LD DE,#0C07
  44.         JR toOO
  45. toOOOO
  46.         PUSH DE
  47.         push IX
  48.         LD IX,OOOO
  49.         LD DE,1000
  50.         CALL toOPP
  51.         LD DE,100
  52.         CALL toOPP
  53.         LD DE,10
  54.         CALL toOPP
  55.         LD (IX),L
  56.         POP IX
  57.         pop DE
  58.         LD L,'0'
  59.         LD A,(OOOO)
  60.         ADD A,L
  61.         CALL PRADD
  62.         INC D
  63.         LD A,(OOOO+1)
  64.         ADD A,L
  65.         CALL PRADD
  66.         INC D
  67.         LD A,(OOOO+2)
  68.         ADD A,L
  69.         CALL PRADD
  70.         LD A,(OOOO+3)
  71.         JR toOOQ
  72. toOPP
  73.         LD B,-1
  74.         OR A
  75.         INC B
  76.         SBC HL,DE
  77.         jr NC,$-3
  78.         ADD HL,DE
  79.         LD (IX),B
  80.         INC IX
  81.         RET
  82. POSFON
  83. TEMPO=$+1
  84.         LD A,4
  85.         LD DE,#4106
  86.         CALL PRF8
  87.         LD A,(LENG)
  88.         LD E,#66
  89.         CALL PRF8
  90.         LD A,(LOOP)
  91.         LD E,#86
  92.         CALL PRF8
  93.         LD HL,TTITLE
  94.         LD DE,#60C
  95.         LD B,32
  96.         CALL PRTXADD
  97.         LD HL,TAUTHOR
  98.         LD DE,#60D
  99.         LD B,32
  100.         CALL PRTXADD
  101. PATFON
  102.         LD A,(POS)
  103.         PUSH AF
  104.         LD DE,#4126
  105.         CALL PRF8
  106.         POP AF
  107.         LD L,A
  108.         LD H,TPOSS/256
  109.         LD A,(HL)
  110.         LD DE,#4146
  111.         CALL PRF8
  112.        CALL prpatl
  113.         LD A,(EPAT)
  114.         LD DE,#41C6
  115. PRF8    LD B,#F8
  116. PR88    PUSH DE
  117.         LD L,A
  118.         ld H,0
  119.         LD C,H
  120.         ADD HL,HL
  121.         ADD HL,HL
  122.         ADD HL,HL
  123.         ADD HL,BC
  124.         LD A,(curpg32khigh) ;ok ;(pg)
  125.         PUSH AF
  126. PR88PG=$+1
  127.         LD A,pg4
  128.         CALL OUTME
  129.        DUP 5
  130.         LD A,(HL)
  131.         ld (DE),A
  132.         INC D
  133.         inc L
  134.        EDUP
  135.         LD A,(HL)
  136.         ld (DE),A
  137.         POP AF
  138.         pop DE
  139.         INC E
  140.         ;JP OUTME
  141.         push bc
  142.         SETPG32KHIGH
  143.         pop bc
  144.         ret
  145. PR7D    LD B,FNTNOTE/256
  146.         JR PR88
  147. INCTMP
  148.         LD A,(TEMPO)
  149.         INC A
  150.         AND 63
  151.         RET Z
  152. ITMPQ   LD (TEMPO),A
  153.         LD (temp1),A
  154.         LD DE,#4106
  155.         JR PRF8
  156. DECTMP
  157.         LD A,(TEMPO)
  158.         DEC A
  159.         RET Z
  160.         JR ITMPQ
  161.  
  162. INCPOSU LD A,(ESNGon)
  163.         OR A
  164.         JP Z,INCEPAT
  165.        CALL ROLnxPO
  166.        JR IPOSQA
  167. INCPOS
  168.         LD A,(POS)
  169.         INC A
  170. IPOSQ   LD (POS),A
  171. IPOSQA LD A,(POS)
  172.         PUSH AF
  173.         LD A,(ESNGon)
  174.         OR A
  175.         jr NZ,IPOSPAT
  176.         POP AF
  177.         LD DE,#4126
  178.         CALL PRF8
  179.         LD HL,(POS)
  180.         LD H,TPOSS/256
  181.         LD A,(HL)
  182.         LD DE,#4146
  183.         JR PRF8
  184.  
  185. DECPOSU LD A,(ESNGon)
  186.         OR A
  187.         JP Z,DECEPAT
  188.        SCF
  189.        CALL UPRnxPO
  190.        JR IPOSQA
  191. DECPOS
  192.         LD A,(POS)
  193.         DEC A
  194.         JR IPOSQ
  195. IPOSPAT POP AF
  196.         LD L,A
  197.         LD H,TPOSS/256
  198.         LD A,(HL)
  199.         LD L,A
  200.         LD (EPAT),A
  201.         INC H
  202.         LD A,(HL)
  203.         LD (PATLEN),A
  204.         CALL PATFON
  205. IPOSPATQ
  206.        XOR A
  207.        LD (CURY),A
  208.        INC A          ;
  209.        LD (tempCNT),A ;
  210.        JP PRPATUU     ;иначе глючит перекл.на лету в режиме TS
  211. ;8
  212. JPITEM
  213.        LD A,(NOPKA)
  214.        OR A
  215.        RET Z
  216.         LD D,0;A
  217.         LD A,(ITEM)
  218.         CP -1
  219.         RET Z
  220.         DEC A
  221.         ADD A,A
  222.         LD E,A
  223.        CALL RE ;повторное не страшно?
  224. useadr=$+1
  225.         LD HL,MENUUSE
  226.         ADD HL,DE
  227.         LD A,(HL)
  228.         INC HL
  229.         LD H,(HL)
  230.         LD L,A
  231.         JP (HL)
  232. STROKA
  233. ;A=line#
  234. ;E=scrY
  235. ;B=pat
  236.         PUSH BC
  237.         push AF
  238.        ;AND 63
  239.         LD C,A
  240.         LD A,E
  241.         LD (STROKY),A
  242.         ex af,af'
  243.        PUSH DE
  244.        CALL GETnADR
  245.        PUSH HL
  246.        POP IX
  247.        POP DE
  248.        LD D,0
  249.        CALL DE2SCR
  250.        ex de,hl
  251.        LD A,C
  252.        INC D
  253.        LD B,FNTDEC/256
  254.        CALL PR88
  255.        INC E
  256.        LD A,(IX)
  257.        OR (IX+1)
  258.        jr NZ,$+7
  259.         LD A,pg7
  260.         ld (PR88PG),A
  261.        INC E
  262.         LD A,(IX)
  263.        CALL PRF8 ;NZ,NC
  264.         LD A,(IX+1)
  265.        CALL PRF8
  266.        INC E
  267.        LD A,pg7
  268.        ld (PR88PG),A
  269.       LD A,(IX+2)
  270.       CALL PRF8
  271.       INC E
  272.        LD A,16+4
  273.        ex af,af'
  274.         LD BC,3
  275.        LD A,C
  276. STROK0  PUSH AF
  277.         ADD IX,BC
  278.         LD A,(IX)
  279.         AND #7F
  280.         LD BC,13
  281.         jr Z,sTRNbl
  282.         DEC C
  283.         DEC A
  284.         CP 96
  285.         jr Z,sTRNres
  286.         INC B
  287.         SUB C
  288.         jr NC,$-2
  289.         ADD A,C
  290.         PUSH BC
  291.         CALL PR7D
  292.         POP AF
  293.         JR sTRNQ
  294. sTRNbl
  295. sTRNres LD A,C
  296.         CALL PR7D
  297.         LD A,C
  298. sTRNQ
  299.         ADD A,14
  300.         CALL PR7D
  301.         LD A,(IX+3)
  302.         CALL PRF8 ;XX..
  303.         PUSH DE
  304.         ex af,af'
  305.        LD D,A
  306.        ADD A,10+6
  307.        ex af,af'
  308.         LD A,(IX)
  309.         RLA
  310.         jr NC,STRnG
  311.         LD A,(IX+3)
  312.         RRA
  313.         RRA
  314.         RRA
  315.         RRA
  316.         AND 15
  317.         ADD A,'G'
  318. STROKY=$+1
  319.         LD E,0
  320.         CALL PRADD
  321. STRnG   POP DE
  322.         LD A,(IX+4)
  323.         CALL PRF8
  324.         INC E
  325.         LD A,(IX+1)
  326.         CALL PRF8
  327.         LD A,(IX+2)
  328.         CALL PRF8
  329.         INC E
  330.         LD BC,5
  331.         POP AF
  332.         DEC A
  333.         JP NZ,STROK0
  334.         LD A,pg4
  335.         LD (PR88PG),A
  336.         POP AF
  337.         pop BC
  338.         RET
  339. ;1
  340. TSTFIRH
  341.        HALT
  342. TSTFIRE CALL CANCEL
  343.         jr NC,TST1
  344.         LD A,(NOPKA)
  345.         OR A
  346.         RET Z
  347.         LD A,(ARX)
  348. TSTXMIN=$+1
  349.         CP 0
  350.         RET C
  351. TSTXMAX=$+1
  352.         CP 0
  353.         jr NC,TST1
  354.         LD A,(ARXY)
  355. TSTYMIN=$+1
  356.         CP 0
  357.         RET C
  358. TSTYMAX=$+1
  359.         CP 0
  360. TST1    CCF
  361.         RET
  362.  
  363.         LD B,'-'
  364. NEGHL
  365.         XOR A
  366.         SUB L
  367.         LD L,A
  368.         SBC A,A
  369.         SUB H
  370.         LD H,A
  371.         RET
  372.  
  373. CLORNSM CALL CLORNS
  374. CLSMPS
  375.         XOR A
  376.         CALL CLSMP
  377.         INC A
  378.         AND 31
  379.         jr NZ,$-6
  380.         RET
  381. CLORNS
  382.         XOR A
  383.          CALL CLORN
  384.          INC A
  385.          AND #F
  386.         jr NZ,$-6
  387.        LD HL,TORNSZ+1
  388.        LD B,6
  389.        LD A,B
  390.        INC HL
  391.        inc HL
  392.        LD (HL),3
  393.        DJNZ $-4
  394.         LD HL,TDEFORN
  395. CLORNS1 ex de,hl
  396.         PUSH AF
  397.         CALL HLOR3
  398.         POP AF
  399.         ex de,hl
  400.         LDI
  401.         LDI
  402.         LDI
  403.         DEC A
  404.         jr NZ,CLORNS1
  405.         RET
  406. CLSMP
  407.         PUSH AF
  408.         ADD A,SMPS/256
  409.         LD H,A
  410.        SUB SMPS/256+#F
  411.        SUB 1
  412.         CALL OUT4
  413.         LD BC,252
  414.         LD L,B
  415.        jr NZ,CLSMPnG
  416.         LD (HL),264&0xff  ;сэмпл G
  417.         INC HL       ;=тихая огибающая
  418.         LD (HL),264/256 ;(для орнамента F)
  419.        JR CLSMPqG
  420. CLSMPnG
  421.         LD (HL),B
  422.         INC HL
  423.         LD (HL),B
  424. CLSMPqG INC HL
  425.         LD (HL),64
  426.        jr NC,$+4
  427.        LD (HL),192   ;сэмпл F = --E
  428.         INC L
  429.         LD (HL),B
  430.         INC L
  431.         ex de,hl
  432.        LD H,D
  433.         LD L,B
  434.         LDIR
  435.         LD L,3
  436.         LD (HL),15
  437.         POP AF
  438.         LD L,A
  439.         ADD HL,HL
  440.         LD H,TSMPSZ/256
  441.         LD (HL),0
  442.         INC L
  443.         LD (HL),1
  444.         RET
  445. CLORN
  446.         PUSH AF
  447.         LD HL,TORNSZ+1
  448.         ADD A,A
  449.         ADD A,L
  450.         LD L,A
  451.        CP 0xff&(#F*2+TORNSZ+1)
  452.         CALL OUT4
  453.         LD BC,63
  454.         LD (HL),1
  455.         DEC HL
  456.         LD (HL),B
  457.         CALL _orn
  458.         LD (HL),B
  459.        jr NZ,$+4
  460.        LD (HL),-96
  461.         LD D,H
  462.         LD E,L
  463.         INC E
  464.         LDIR
  465.         POP AF
  466.         RET
  467.  
  468. DECOMS
  469.         if 1==0
  470.         LD A,1
  471.         ld (yedecom),A
  472.         LD A,'C'
  473.         ld (filextS),A
  474.         DEC A
  475.         LD (filextF),A
  476.         endif
  477. DISKS
  478.         ;LD (IY),-1
  479.         ;LD (IY+48),8
  480.         LD A,201
  481.         ld (MHEXFNTpg),A
  482.         ;XOR A
  483.         ;LD (#5CF9),A
  484.        ;LD L,A,H,A,(#5D0F),HL ;в DOS уже есть
  485.         ;LD A,9
  486.         ;ld (#5D06),A
  487.         LD (DISKSP),SP
  488.         LD HL,DISKCOO
  489.         LD DE,DISKUSE
  490.         LD BC,mDISK
  491.         CALL WINDOW
  492.         LD HL,tDISK
  493.         LD DE,0
  494.         CALL PRMENU
  495.         LD HL,filename_5CDD
  496.         LD DE,#B06
  497.         LD B,8
  498.         CALL PRTXADD
  499.  
  500.        LD A,(comped)
  501.        OR A
  502.        JR Z,DISKnsz
  503.         LD HL,tSZ
  504.         LD DE,0
  505.         CALL PRMENU
  506.         LD HL,(SNGLEN)
  507.         LD DE,#1500
  508.         CALL PRHL
  509. DISKnsz
  510.  
  511.        LD A,(catH)
  512.        INC A
  513.        CALL Z,READCAT
  514.         CALL PRCATEI
  515. CATLOOP
  516.        CALL RESHALT
  517.         CALL NZ,REREAD
  518.         CALL JPITEM
  519.         CALL USEBAR
  520.         CALL TSTFIRE
  521.         jr NC,CATLOOP
  522. DISKQ
  523.         if 1==1 ;TODO move code and vars around to avoid
  524. movd0a0=$+1
  525.         LD A,0
  526.         OR A
  527.         jr Z,DSKQnMV
  528.         CALL OUT7
  529.         LD HL,ld000
  530.         LD DE,la000
  531.         LD BC,#2000
  532.         LDIR
  533.         XOR A
  534.         LD (movd0a0),A
  535. DSKQnMV
  536.         endif
  537.        ;LD A,'IMVEC
  538.        ;LD I,A
  539.        ;IM 2
  540. DISKSP=$+1
  541.         LD SP,0
  542.         LD A,205
  543.         ld (MHEXFNTpg),A
  544.        CALL DOWNMER
  545.         CALL CLOSWIN
  546.         LD A,'S'
  547.         ld (filextS),A
  548.         LD A,'F'
  549.         ld (filextF),A
  550.         XOR A
  551.         LD (comped),A
  552.         ;LD (yedecom),A
  553.         CALL MKSCROL
  554.         CALL POSFON
  555.         CALL PRPAT
  556.         JR COPYFRQ
  557.        IF set
  558. SETUP
  559.         LD HL,SETUCOO
  560.         LD DE,SETUUSE
  561.         LD BC,mSETUP
  562.         CALL WINDOW
  563.         LD HL,tSETUP
  564.         LD DE,0
  565.         CALL PRMENU
  566.         CALL PRSETS
  567. SETUPP0
  568.        CALL HALTER
  569.         CALL JPITEM
  570.         CALL TSTFIRE
  571.         jr NC,SETUPP0
  572.         CALL SETCOLS
  573.         CALL CLOSWIN
  574.         CALL PRPAT
  575.        ENDIF
  576. COPYFRQ
  577.         CALL OUT6
  578. FRQn=$+1
  579.         LD DE,1
  580.         LD HL,NT_DATA
  581.         ADD HL,DE
  582.         add HL,DE
  583.         add HL,DE
  584.         LD BC,T_
  585.         LD E,(HL)
  586.         INC HL
  587.         ex de,hl
  588.         ADD HL,BC
  589.         LD A,(DE)
  590.         ld (COPF3),A
  591.         INC DE
  592.         LD A,(DE)
  593.         ADD A,C
  594.         LD C,A
  595.         ADC A,B
  596.         SUB C
  597.         LD B,A
  598.         LD DE,FrTab
  599.         PUSH BC
  600.         push DE
  601.         LD B,12
  602. COPF1   PUSH BC
  603.         LD C,(HL)
  604.         INC HL
  605.         LD B,(HL)
  606.         PUSH HL
  607.         push DE
  608.         ex de,hl
  609.         LD DE,23
  610.         LD HX,8
  611. COPF2   SRL B
  612.         RR C
  613.         LD A,C
  614. COPF3   ADC A,D ;=ADC 0
  615.         LD (HL),A
  616.         INC HL
  617.         LD A,B
  618.         ADC A,D
  619.         LD (HL),A
  620.         ADD HL,DE
  621.         DEC HX
  622.         jr NZ,COPF2
  623.         POP DE
  624.         pop HL
  625.         INC DE
  626.         inc DE
  627.         INC HL
  628.         POP BC
  629.         DJNZ COPF1
  630.         POP HL
  631.         pop DE
  632. CORR_1  LD A,(DE)
  633.         OR A
  634.         RET Z
  635.         INC DE
  636.         RRA
  637.         PUSH HL
  638.         PUSH AF
  639.         ADD A,A
  640.         LD C,A
  641.         ADD HL,BC
  642.         POP AF
  643.         INC (HL)
  644.         jr NC,$+4
  645.          DEC (HL)
  646.          dec (HL)
  647.         POP HL
  648.         JR CORR_1
  649.  
  650.        IF set
  651. suPOI   LD HL,poion
  652.         JR suCPL
  653.  
  654. suKJ    XOR A
  655.         IN A,(31)
  656.         CPL
  657.         AND #F
  658.         RET Z
  659.         LD HL,joy
  660.         JR suCPL
  661.  
  662. suSND   LD A,(SHOLK)
  663.         OR A
  664.         LD A,201
  665.         jr Z,$+3
  666.          XOR A
  667.         LD (SHOLK),A
  668.         JR PRSETS
  669.  
  670. suPLAY  LD HL,playon
  671. suCPL   LD A,(HL)
  672.         CPL
  673.         LD (HL),A
  674.         JR PRSETS
  675.  
  676. suPAP1  LD HL,pap1
  677.         JR suATR
  678.  
  679. suINK2  LD HL,ink2
  680.         JR suATR
  681.  
  682. suPAP2  LD HL,pap2
  683.         JR suATR
  684.  
  685. suBORD  LD HL,bord
  686.         JR suATR
  687.  
  688. suFRQ   LD HL,FRQn
  689.         INC (HL)
  690.         RES 2,(HL)
  691.         JR PRSETS
  692.  
  693. suINK1  LD HL,ink1
  694. suATR   LD A,(HL)
  695.         ADD A,8
  696.         AND 56
  697.         LD (HL),A
  698. PRSETS
  699.         LD BC,(FRQn-1)
  700.         INC B
  701.         LD DE,12
  702.         LD HL,tPTST-12
  703.          ADD HL,DE
  704.         DJNZ $-1
  705.         LD DE,#1301
  706.         CALL PRMENU
  707.         LD A,(poion)
  708.         LD HL,tON
  709.         OR A
  710.         jr NZ,$+5
  711.          LD HL,tOFF
  712.         LD DE,#1602
  713.         CALL PRMENU
  714.         ;LD HL,#5971
  715.         ;LD BC,32
  716.         ;LD A,(ink1)
  717.         ;ld (HL),A
  718.         ;INC L
  719.         ;LD A,(pap1)
  720.         ;ld (HL),A
  721.         ;ADD HL,BC
  722.         ;LD A,(pap2)
  723.         ;ld (HL),A
  724.         ;DEC L
  725.         ;LD A,(ink2)
  726.         ;ld (HL),A
  727.         ;LD A,(bord)
  728.         ;ld (#59B2),A
  729.         LD A,(SHOLK)
  730.         LD HL,tON
  731.         OR A
  732.         jr Z,$+5
  733.          LD HL,tOFF
  734.         LD DE,#1407
  735.         CALL PRMENU
  736.         LD A,(joy)
  737.         LD HL,tON
  738.         OR A
  739.         jr NZ,$+5
  740.          LD HL,tOFF
  741.         LD DE,#1909
  742.         CALL PRMENU
  743.         LD A,(playon)
  744.         OR A
  745.         LD HL,tALL
  746.         jr NZ,$+5
  747.          LD HL,tNOTE
  748.         LD DE,#1408
  749.         JP PRMENU
  750.        ENDIF
  751. ;1+?
  752. SETCOLS
  753.         LD HL,ink1
  754.         LD A,(HL)
  755.         INC HL
  756.         RRCA
  757.         RRCA
  758.         RRCA
  759.         OR (HL)
  760.         LD L,A
  761.         ld H,A
  762.         LD (col1),HL
  763.         LD HL,ink2
  764.         LD A,(HL)
  765.         INC HL
  766.         RRCA
  767.         RRCA
  768.         RRCA
  769.         OR (HL)
  770.         LD L,A
  771.         ld H,A
  772.         LD (col2),HL
  773.         ;LD A,(bord)
  774.         ;RRCA
  775.         ;RRCA
  776.         ;RRCA
  777.         ;OUT (-2),A
  778.         RET
  779.  
  780. EDFILE
  781.         LD HL,filename_5CDD
  782.         LD DE,#B06
  783.         LD A,8
  784.         CALL EDTXT
  785.         JP WAITNOK
  786. SAVSMP
  787.         LD HL,TSSMP
  788.         ld DE,#C01
  789.         CALL PRMENU
  790.         ld hl,fileext_5CE5
  791.         ld (hl),'s'
  792.         inc hl
  793.         ld (hl),'m'
  794.         inc hl
  795.         ld (hl),'p'
  796.         ;LD C,#12
  797.         ;CALL DOS
  798.         CALL OUT4
  799.         LD A,(smp)
  800.         PUSH AF
  801.         ADD A,SMPS/256
  802.         LD H,A
  803.         LD DE,BUF
  804.         LD BC,256
  805.         LD L,C
  806.         LDIR
  807.         POP AF
  808.         ADD A,A
  809.         LD L,A
  810.         ld H,TSMPSZ/256
  811.         LDI
  812.         LDI
  813.         LD HL,BUF
  814.         LD DE,258
  815. DOSb
  816.         push de
  817.         push hl
  818.         ld hl,filename_5CDD
  819.         ld de,filinfo+FILINFO_FNAME
  820.         push de
  821.         call cpmname_to_dotname
  822.         pop de
  823.         OS_CREATEHANDLE
  824.         pop de
  825.         pop hl ;de=buf, hl=size
  826.         push bc
  827.         OS_WRITEHANDLE
  828.         pop bc
  829.         OS_CLOSEHANDLE
  830.         ;LD C,#B
  831. DOSbQ   ;CALL DOS
  832.        ;LD HL,#5D0F
  833.        ;ld A,(HL)
  834.        ;ld (HL),0
  835.        ;OR A
  836.        ;jr Z,$+4
  837.        ; OUT (-2),A
  838.        LD A,-1
  839.        ld (catH),A
  840.         JP DISKQ
  841. SAVORN
  842.         LD HL,TSORN
  843.         ld DE,#B01
  844.         CALL PRMENU
  845.         ld hl,fileext_5CE5
  846.         ld (hl),'o'
  847.         inc hl
  848.         ld (hl),'r'
  849.         inc hl
  850.         ld (hl),'n'
  851.         ;LD C,#12
  852.         ;CALL DOS
  853.         CALL OUT4
  854.         CALL HLORN
  855.         LD DE,BUF
  856.         ld BC,64
  857.         LDIR
  858.         LD H,TORNSZ/256
  859.         ld L,A
  860.         LDI
  861.         LDI
  862.         LD HL,BUF
  863.         ld DE,66
  864.         JR DOSb
  865. SAVPAT
  866.         LD HL,TSPAT
  867.         ld DE,#B01
  868.         CALL PRMENU
  869. CURY=$+1
  870. EPAT=$+2
  871.         LD BC,0
  872.         ld C,0
  873.         CALL GETnADR
  874.         PUSH HL
  875.         ld hl,fileext_5CE5
  876.         ld (hl),'p'
  877.         inc hl
  878.         ld (hl),'a'
  879.         inc hl
  880.         ld (hl),'t'
  881.         ;LD A,'p'
  882.         ;ld (fileext_5CE5),A
  883.         ;LD C,#12
  884.         ;CALL DOS
  885.         POP HL
  886.         LD DE,#480
  887.         JR DOSb
  888. SAVCOMP
  889.         CALL OUT7
  890.         ;LD C,#12
  891.       IF 1==0;cmpilmnu
  892.        LD A,(plyrON)
  893.        OR A
  894.         LD HL,plaer
  895.         ld A,'C'
  896.        jr NZ,$+7
  897.       ENDIF
  898.         ld hl,fileext_5CE5
  899.         ld (hl),'p'
  900.         inc hl
  901.         ld (hl),'t'
  902.         inc hl
  903.         ld (hl),'3'
  904.         LD HL,mod
  905.         ;ld A,'m'
  906.         ;LD (fileext_5CE5),A
  907.        ;PUSH HL
  908.        ; CALL DOS
  909.        ;POP HL
  910.         LD DE,(SNGLEN)
  911.        ; LD C,#B
  912.        ; CALL DOS
  913.        ; LD C,#A
  914.        ; CALL DOS
  915.        ; LD A,C
  916.        ; PUSH AF
  917.        ; LD C,8
  918.        ; CALL DOS
  919.         ;LD HL,(SNGST)
  920.         ;ld (#5CE6),HL ;TR-DOS only
  921.         ;POP AF
  922.         ;LD C,9 ;save file descriptor ;TODO
  923.         JP DOSbQ
  924. SAVE
  925. comped=$+1
  926.         LD A,0
  927.         OR A
  928.         jr NZ,SAVCOMP
  929.         ;CALL EXB0
  930.        LD A,40 ;NOKILL
  931.         CALL cMPILE
  932.         PUSH HL
  933.         push DE
  934.         ;CALL EXB0
  935.         CALL OUT7
  936.  
  937.         ld hl,fileext_5CE5
  938.         ld (hl),'p'
  939.         inc hl
  940.         ld (hl),'t'
  941.         inc hl
  942.         ld (hl),'3'
  943.        
  944.         ;LD C,#12
  945.         ;LD A,'m'
  946.         ;ld (fileext_5CE5),A
  947.         ;CALL DOS
  948.         POP DE
  949.         pop HL
  950.         JP DOSb
  951. CATUP
  952.         LD A,(cattop)
  953.         DEC A
  954.         RET M
  955.         LD (cattop),A
  956.         JR PRCATEI
  957. CATDN
  958.         LD A,(cattop)
  959.         INC A
  960.         ADD A,7
  961. catH=$+1
  962.         CP 255
  963.         RET NC
  964.         SUB 7
  965.         LD (cattop),A
  966. ;2
  967. PRCATEI
  968.         JP PRCAT
  969. DESCADR
  970.         LD L,A
  971.         ld H,0
  972.         ld E,L
  973.         ld D,H
  974.         ADD HL,HL
  975.         ADD HL,HL
  976.        ADD HL,DE
  977.         ADD HL,HL
  978.        ADD HL,DE ;*11
  979.         LD DE,CATfilt
  980.         ADD HL,DE
  981.         RET
  982. LDORN
  983.         LD HL,TLORN
  984.         ld DE,#A01
  985.         CALL PRMENU
  986.         CALL OUT4
  987.         LD HL,BUF
  988.         PUSH HL
  989.         LD (LDADR),HL
  990.         CALL LDFILE
  991.         CALL HLORN
  992.         ex de,hl
  993.         POP HL
  994.         LD BC,64
  995.         LDIR
  996.         LD D,TORNSZ/256
  997. LDORNQ  LD E,A
  998.         LDI
  999.         LDI
  1000.         JP DISKQ
  1001. LDSMP
  1002.         LD HL,TLSMP
  1003.         ld DE,#B01
  1004.         CALL PRMENU
  1005.         CALL OUT4
  1006.         LD HL,BUF
  1007.         PUSH HL
  1008.         LD (LDADR),HL
  1009.         CALL LDFILE
  1010.         LD A,(smp)
  1011.         PUSH AF
  1012.         ADD A,SMPS/256
  1013.         LD D,A
  1014.         POP AF
  1015.         ADD A,A
  1016.         POP HL
  1017.         LD BC,256
  1018.         LD E,C
  1019.         LDIR
  1020.         LD D,TSMPSZ/256
  1021.         JR LDORNQ
  1022. LOAD
  1023.         LD A,(ITEM)
  1024.         SUB 9
  1025.         LD C,A
  1026.         ld A,(cattop)
  1027.         ADD A,C
  1028.         CALL DESCADR
  1029.         LD DE,filename_5CDD
  1030.         ld BC,11
  1031.         LDIR
  1032.         dec hl
  1033.        LD C,(HL)
  1034.         dec hl
  1035. ;yedecom=$+1
  1036. ;        LD A,0
  1037. ;        DEC A
  1038. ;        JP Z,DECOM
  1039.         DEC HL
  1040.         LD A,(HL)
  1041.         or 0x20
  1042.         ;jr $
  1043.        IF gs
  1044.         CP 'i'
  1045.         JP Z,LDGS
  1046.        ENDIF
  1047.         CP 'o'
  1048.         jr Z,LDORN
  1049.         ;CP 'S'
  1050.         ;jr Z,LDST
  1051.         CP 'm'
  1052.         jr Z,LDSNG
  1053.         ;CP 'F'
  1054.         ;jr Z,LDSTP
  1055.         CP 'p'
  1056.         jr Z,LDPAT
  1057.         CP 's'
  1058.         jr Z,LDSMP
  1059.         ret
  1060.         ;CP 'M'
  1061.         ;RET NZ
  1062. ld_pt2
  1063.         CALL OUT7
  1064.         LD HL,mod
  1065.         ld (LDADR),HL
  1066.         CALL LDFILE
  1067.          DI
  1068.         ;CALL EXB0
  1069.         CALL LDPT2PP
  1070.         ;CALL EXB0
  1071.         ;LD IY,23610
  1072.          EI
  1073.         JR ex9BQ
  1074. LDST
  1075.         CALL MOVD0A0
  1076.         CALL LDFILE
  1077.         CALL LDSTPP
  1078.         JR ex9BQ
  1079. LDSTP
  1080.         CALL MOVD0A0
  1081.         LD (LDADR),HL
  1082.         CALL LDFILE
  1083.         LD A,-1
  1084.         ld (ksaON),A
  1085.         ld (STand),A
  1086.         CALL LDKSAPP
  1087.         XOR A
  1088.         LD (ksaON),A
  1089.         LD A,#F
  1090.         ld (STand),A
  1091. ex9BQ   LD A,(TPOSS)
  1092.         ld (EPAT),A
  1093.         JP DISKQ
  1094. LDPAT
  1095.        LD A,C ;third char of extension
  1096.        ;or 0x20
  1097.        CP '3'
  1098.        jr Z,LDSNG_pt3
  1099.         LD HL,TLPAT
  1100.         ld DE,#B01
  1101.         CALL PRMENU
  1102.         LD A,(EPAT)
  1103.         ld B,A
  1104.         ld C,0
  1105.         CALL GETnADR
  1106.         LD (LDADR),HL
  1107.         CALL LDFILE
  1108.         JP DISKQ
  1109. LDSNG
  1110.        LD A,C ;third char of extension
  1111.        ;or 0x20
  1112.        CP '2'
  1113.        jr Z,ld_pt2
  1114.  
  1115. LDSNG_pt3
  1116.         CALL OUT7
  1117.         LD HL,mod
  1118.        IF tstPT
  1119.        PUSH HL
  1120.        ENDIF
  1121.         LD (LDADR),HL
  1122.         CALL LDFILE
  1123.         LD HL,TPROTR
  1124.        IF tstPT
  1125.        POP DE
  1126.         LD B,13
  1127. LDSNGCP LD A,(DE)
  1128.         CP (HL)
  1129.         jr NZ,PRSORRY
  1130.         INC DE
  1131.         INC HL
  1132.         DJNZ LDSNGCP
  1133.        ENDIF
  1134. LDSNGQ   DI
  1135.         ;CALL EXB0
  1136.         CALL LDPT3PP
  1137.         ;CALL EXB0
  1138.          EI
  1139.         XOR A
  1140.         LD (POS),A
  1141.         LD A,(TPOSS)
  1142.         LD (EPAT),A
  1143.         JP DISKQ
  1144. PRSORRY LD HL,TSORRY
  1145.         JP PRDISKQ
  1146.  
  1147. ;DOSTSPP LD (#5C3D),SP
  1148. ;        JP #3D13
  1149. ;1
  1150. DOSTEST
  1151.         ;CALL DOSTSPP
  1152.         ;LD A,#C9
  1153.         ;ld (#5CC2),A
  1154.         ;LD A,IMVEC/256
  1155.         ;ld I,A
  1156.         ;IM 2
  1157.         ;EI
  1158.         ;LD A,(#5D0F)
  1159.         ;INC A
  1160.         ;jr Z,DOSTSOK
  1161.         ;LD A,(23610)
  1162.         ;INC A
  1163.         ;RET Z
  1164. ;DOSTSOK LD HL,TDISKER
  1165.         ;LD A,(#5D0F)
  1166.         ;CP -1
  1167.         ;jr NZ,$+5
  1168.         ;LD HL,TNOFILE
  1169.         ;LD (IY),-1
  1170. PRDISKQ LD DE,#601
  1171.         CALL PRMENU
  1172.        ;LD B,50
  1173.        ;HALT
  1174.        ;DJNZ $-1
  1175.         JP DISKQ
  1176.        IF gs
  1177. LDGS
  1178.         LD C,#A
  1179.         CALL DOS
  1180.         LD A,C
  1181.         LD C,8
  1182.         CALL DOS
  1183.         CALL OUT7
  1184.         LD HL,(#5CEB) ;trsec
  1185.         LD (#5CF4),HL ;curtrsec
  1186.  
  1187.        ;LD DE,(#5CF4)
  1188.        ;LD HL,modCd
  1189.        ;LD BC,#1005
  1190.        ;CALL DOS
  1191.         CALL LGSMPDISK
  1192.         LD DE,#FC00
  1193.         LD BC,20+(31*30)
  1194.         LDIR
  1195.  
  1196. ;1. Load module
  1197. ;2. Load samples
  1198.  
  1199.         SC #30 ;Load module
  1200.         WC
  1201.  
  1202.        ;LD HL,modCd
  1203.         LD BC,0;szsmp
  1204.         CALL LGSMPLOOP
  1205.  
  1206. ;find max pattern
  1207.        ;LD HL,modCd+950
  1208.         LD B,(HL) ;songlength
  1209.         INC HL
  1210.         INC HL
  1211.        ;LD HL,modCd+950+2 ;positions
  1212.         XOR A
  1213. FNDMAXPAT0
  1214.         CP (HL)
  1215.         JR NC,$+3
  1216.         LD A,(HL)
  1217.         INC HL
  1218.         DJNZ FNDMAXPAT0
  1219.         INC A
  1220.  
  1221.         LD HL,modCd+950+134
  1222.  
  1223. ;skip A patterns
  1224.         ADD A,A
  1225.         ADD A,A
  1226.         LD B,A
  1227.         LD C,0
  1228.         ;A*1024
  1229. LGSKP0  INC L
  1230.         CALL Z,LGSMPH
  1231.         DEC BC
  1232.         LD A,B
  1233.         OR C
  1234.         JR NZ,LGSKP0
  1235.  
  1236.         LD DE,#FC00+20+22
  1237.         LD B,31
  1238. LGSMPS0
  1239.         PUSH BC
  1240.         LD A,(DE)
  1241.         INC DE
  1242.         LD B,A
  1243.         LD A,(DE)
  1244.         LD C,A
  1245.         ;smpsize/2
  1246.         SLA C
  1247.         RL B
  1248.        ;SC #38 ;Load FX
  1249.         SD #01 ;signed sample
  1250.         SC #3E ;Load FX ext
  1251.         WC
  1252.         CALL LGSMPLOOP
  1253.         EX DE,HL
  1254.         LD BC,30-1
  1255.         ADD HL,BC ;next smp descr
  1256.         EX DE,HL
  1257.         POP BC
  1258.         DJNZ LGSMPS0
  1259.         JP DISKQ
  1260.  
  1261. LGSMPLOOP
  1262.         SC #D1 ;Open Stream
  1263.         WC
  1264.         LD A,B
  1265.         OR C
  1266.         JR Z,LGSMPSKIPQ
  1267. LGSMP0
  1268.         LD A,(HL)
  1269.         OUT (GSDAT),A
  1270.         WD
  1271.         INC L
  1272.         CALL Z,LGSMPH
  1273.         DEC BC
  1274.         LD A,B
  1275.         OR C
  1276.         JR NZ,LGSMP0
  1277. LGSMPSKIPQ
  1278.         SC #D2 ;Close Stream
  1279.         WC
  1280.         RET
  1281. LGSMPH
  1282.         INC H
  1283.         LD A,H
  1284.         CP modCd/256+#10
  1285.         RET NZ
  1286. LGSMPDISK
  1287.         LD HL,modCd
  1288.         PUSH BC
  1289.         PUSH DE
  1290.         PUSH HL
  1291.         LD DE,(#5CF4)
  1292.         LD BC,#1005
  1293.         CALL DOS
  1294.         POP HL
  1295.         POP DE
  1296.         POP BC
  1297.         RET
  1298.        ENDIF ;gs
  1299.  
  1300. LDFILE
  1301. ;filename_5CDD
  1302.         ld hl,filename_5CDD
  1303.         ld de,filinfo+FILINFO_FNAME
  1304.         push de
  1305.         call cpmname_to_dotname ;hl -> de
  1306.         pop de ;filinfo+FILINFO_FNAME
  1307.         OS_OPENHANDLE
  1308.         ;ld a,b
  1309.         ;ld (curhandle),a
  1310. ;curhandle=$+1
  1311. ;        ld b,0
  1312.         push bc
  1313. LDADR=$+1
  1314.         LD de,mod
  1315.         ld hl,0x4000
  1316.         OS_READHANDLE
  1317.         pop bc
  1318.         OS_CLOSEHANDLE
  1319.  
  1320. DOS
  1321.         ret
  1322.        if 1==0
  1323.         PUSH IX
  1324.         CALL DOSTEST
  1325.         POP IX
  1326.         RET
  1327. msgRIA
  1328.         PUSH AF
  1329.         ;LD A,(curpg32khigh) ;ok ;(pg)
  1330.         ;ld (OLDPG),A
  1331.         LD BC,mDISKER
  1332.         CALL WINDUM
  1333.         LD HL,tDISKER
  1334.         LD DE,0
  1335.         CALL PRMENU
  1336.         POP AF
  1337.         RET
  1338.        endif
  1339. REREAD
  1340.        if 1==0
  1341.         SUB '1'
  1342.         RET C
  1343.         CP 4
  1344.         RET NC
  1345.         LD (23833),A
  1346.         LD (23798),A
  1347.         LD (23800),A
  1348.         LD (23801),A
  1349.         CALL drive
  1350.         LD C,1
  1351.         CALL DOS
  1352.        endif
  1353. READCAT
  1354.         LD A,8
  1355.         ld (DSKopts),A
  1356.          LD HL,CATfilt
  1357.         LD DE,CATfilt+1
  1358.         LD (HL),32
  1359.        LD B,1;C,#48
  1360.         LDIR
  1361.         LD A,8
  1362.         ld (catopts),A
  1363.         XOR A
  1364.         LD (catH),A
  1365.         LD (cattop),A
  1366.         CALL PRCAT
  1367.        
  1368.         ;LD HL,CATdos
  1369.         ;LD DE,0
  1370.         ;LD BC,#805
  1371.         ;CALL DOS
  1372.  
  1373.         ld de,emptypath
  1374.         OS_OPENDIR
  1375.         LD HL,CATfilt
  1376.         ld bc,0
  1377. loaddir0
  1378.         call loaddir_filinfo
  1379.         jp c,loaddirq
  1380.         jr z,loaddir0
  1381.         push bc
  1382.         push hl
  1383.         ld de,filinfo+FILINFO_FNAME
  1384.         call dotname_to_cpmname ;de -> hl
  1385.         pop hl
  1386.         push hl
  1387.         ld bc,8
  1388.         add hl,bc
  1389.         LD BC,7+gs
  1390.         LD A,(hl)
  1391.         or 0x20
  1392.         LD HL,FILEXTS
  1393.         CPIR
  1394.         pop hl
  1395.         pop bc
  1396.         jr NZ,loaddir0
  1397.         ld de,11;9
  1398.         add hl,de
  1399.         inc bc
  1400.         bit 7,c
  1401.         jr z,loaddir0
  1402. loaddirq
  1403.         ;jr $
  1404.         if 1==0
  1405.         ld (hl),0
  1406.          LD IX,CATdos
  1407.          LD DE,CATfilt
  1408.         XOR A
  1409.         ex af,af'
  1410.        LD B,128
  1411. RDCAT0  PUSH BC
  1412.       LD BC,7+gs
  1413.        LD A,(IX)
  1414.        OR A
  1415.        jr Z,RDCATQ-1
  1416.        ;DEC A
  1417.        ;jr Z,RDBADXT
  1418.        LD HL,FILEXTS
  1419.        LD A,(IX+8)
  1420.       CPIR
  1421.       jr NZ,RDBADXT
  1422.        PUSH IX
  1423.        POP HL
  1424.       LD C,10;9
  1425.        LDIR
  1426.        ex af,af'
  1427.         INC A
  1428.         ex af,af'
  1429. RDBADXT LD C,16
  1430.        ADD IX,BC
  1431.        POP BC
  1432.        DJNZ RDCAT0
  1433.        PUSH BC
  1434.        POP BC
  1435. RDCATQ  ex af,af'
  1436.         endif
  1437.  
  1438.         ld a,c
  1439.         LD (catH),A ; number of files
  1440.         LD C,8
  1441.         CP C
  1442.         jr C,$+3
  1443.          LD A,C
  1444.         LD (catopts),A
  1445.         ADD A,C
  1446.         LD (options),A
  1447.         LD (DSKopts),A
  1448.         XOR A
  1449.         LD (cattop),A
  1450. PRCAT
  1451.         LD A,(cattop)
  1452.         CALL DESCADR
  1453. catopts=$+1
  1454.         LD A,8
  1455.         LD B,A
  1456.         OR A
  1457.         jr Z,pRCATQ
  1458.         LD DE,#1504
  1459. PRCAT0  PUSH BC
  1460.         push DE
  1461.         LD B,8
  1462.         CALL PRTXADD
  1463.         INC D
  1464.         inc B
  1465.         CALL PRTXT
  1466.        INC HL
  1467.        INC HL
  1468.         POP DE
  1469.         pop BC
  1470.         INC E
  1471.         DJNZ PRCAT0
  1472. pRCATQ JP CATBAR
  1473. DECPAT
  1474.         LD A,-1
  1475.         JR IPATQ
  1476. INCPAT  LD A,1
  1477. IPATQ   LD HL,(POS)
  1478.         ld H,TPOSS/256
  1479.         ADD A,(HL)
  1480.         JP P,$+5
  1481.         LD A,PATS-1
  1482.         CP PATS
  1483.         jr C,$+3
  1484.         XOR A
  1485.         LD HL,(POS)
  1486.         ld H,TPOSS/256
  1487.         LD (HL),A
  1488.         ld C,A
  1489.         LD A,(ESNGon)
  1490.         OR A
  1491.         LD A,C
  1492.         LD DE,#4146
  1493.         JP Z,PRF8
  1494.         LD (EPAT),A
  1495.         INC H
  1496.         LD L,C
  1497.         LD A,(HL)
  1498.         ld (PATLEN),A
  1499.         CALL PATFON
  1500.         JP IPOSPATQ;PRPAT ;v3+698
  1501. INCLENG
  1502.         LD A,(LENG)
  1503.         INC A
  1504.         jr NZ,$+3
  1505.         INC A
  1506. ILENQ   LD (LENG),A
  1507.         LD DE,#4166
  1508.         JP PRF8
  1509. DECLENG LD A,(LENG)
  1510.         DEC A
  1511.         jr NZ,ILENQ
  1512.         DEC A
  1513.         JR ILENQ
  1514. INCLOOP
  1515.         LD A,(LOOP)
  1516.         INC A
  1517. ILOOPQ  LD (LOOP),A
  1518.         LD DE,#4186
  1519.         JP PRF8
  1520. DECLOOP LD A,(LOOP)
  1521.         DEC A
  1522.         JR ILOOPQ
  1523. INCVOL
  1524. VOL=$+1
  1525.         LD A,#F
  1526.         INC A
  1527.         AND #F
  1528.         RET Z
  1529. IVOLQ   LD (VOL),A
  1530.         PUSH AF
  1531.         LD DE,#41A6
  1532.         CALL PRF8
  1533.         POP AF
  1534.         ADD A,A
  1535.         ADD A,A
  1536.         ADD A,A
  1537.         ADD A,A
  1538.         LD (glovol),A
  1539.         RET
  1540. DECVOL  LD A,(VOL)
  1541.         DEC A
  1542.         RET M
  1543.         JR IVOLQ
  1544. INCEPAT
  1545.         LD A,(EPAT)
  1546.         INC A
  1547.         LD B,0
  1548. IEPATQ  CP PATS
  1549.         jr C,$+3
  1550.          LD A,B
  1551.         LD (EPAT),A
  1552.         PUSH AF
  1553.         LD HL,TPATSZ
  1554.         ADD A,L
  1555.         LD L,A
  1556.         LD A,(HL)
  1557.         LD (PATLEN),A
  1558.         LD A,(ESNGon)
  1559.         OR A
  1560.         jr NZ,IESNG
  1561.        CALL prpatl
  1562.         POP AF
  1563.         LD DE,#41C6
  1564.         CALL PRF8
  1565. iEPATQQ
  1566.         JP IPOSPATQ;PRPAT ;v3+698
  1567. DECEPAT LD A,(EPAT)
  1568.         DEC A
  1569.         LD B,PATS-1
  1570.         JR IEPATQ
  1571. IESNG   LD HL,(POS)
  1572.         ld H,TPOSS/256
  1573.         POP AF
  1574.         LD (HL),A
  1575.         CALL PATFON
  1576.         JR iEPATQQ
  1577. CPLm
  1578.         LD A,(HL)
  1579.         XOR -1
  1580.         LD (HL),A
  1581.         LD HL,tON
  1582.         RET Z
  1583.         LD HL,tOFF
  1584.         RET
  1585. AUTOON
  1586.         LD HL,auto
  1587.         CALL CPLm
  1588.         LD DE,#A0A
  1589.         JR NXDIVQ
  1590. ENVON
  1591.         LD HL,aenv
  1592.         CALL CPLm
  1593.         LD DE,#A0B
  1594.         JR NXDIVQ
  1595. NXTDIV
  1596.         LD A,127
  1597.         IN A,(-2)
  1598.         RRA
  1599.         RRA
  1600.         CALL C,CANCEL2
  1601.         LD HL,div
  1602.         LD A,(HL)
  1603.         INC A
  1604.         jr C,$+4
  1605.         SUB 2
  1606.         AND 7
  1607.         LD (HL),A
  1608.         LD D,A
  1609.         ADD A,A
  1610.         ADD A,D
  1611.         LD E,A
  1612.         LD D,0
  1613.         LD HL,DIVS
  1614.         ADD HL,DE
  1615.         LD DE,#F0B
  1616. NXDIVQ  JP PRMENU
  1617. MKSCROL
  1618.       CALL OUT7
  1619.         LD HL,scrolin
  1620.         LD DE,_d000
  1621.         PUSH DE
  1622.         LD BC,scroLEN
  1623.         LDIR
  1624.         POP HL
  1625.         PUSH HL
  1626.         LD BC,scroSIZ
  1627.         LDIR
  1628.         ex de,hl
  1629.         LD (HL),#C3
  1630.         INC HL
  1631.         LD (HL),scrolQ&0xff
  1632.         INC HL
  1633.         LD (HL),scrolQ/256
  1634.         INC HL
  1635.         LD (scrol2J),HL
  1636.         POP DE
  1637.        PUSH HL
  1638.         PUSH DE
  1639.         LD BC,scroSIZ+scroLEN
  1640.          ex de,hl
  1641.          LDIR
  1642.          ex de,hl ;#
  1643.         LD (HL),#C3
  1644.         INC HL
  1645.         LD (HL),scrol2Q&0xff
  1646.         INC HL
  1647.         LD (HL),scrol2Q/256
  1648.         POP IX
  1649.         LD HL,#5103
  1650.         LD DE,#49E0
  1651.         LD C,8
  1652. MSCR0   LD B,6
  1653. MSCR1   CALL MscrPP
  1654.         CALL DDE
  1655.         call DHL
  1656.         DJNZ MSCR1
  1657.         CALL DDE
  1658.         call DHL
  1659.        INC D
  1660.        inc H
  1661.         DEC C
  1662.         jr NZ,MSCR0
  1663.        POP IX
  1664.         LD HL,#56C3
  1665.         LD DE,#56E0
  1666.         LD C,8
  1667. MSCR2   LD B,6
  1668. MSCR3   CALL MscrPP
  1669.         CALL UDE
  1670.         call UHL
  1671.         DJNZ MSCR3
  1672.         CALL UDE
  1673.         call UHL
  1674.        DEC D
  1675.        dec H
  1676.         DEC C
  1677.         jr NZ,MSCR2
  1678.         RET
  1679. MscrPP
  1680.        PUSH BC
  1681.        LD C,-3
  1682.         LD A,L
  1683.         LD (IX+1),A
  1684.         LD (IX+2),H
  1685.         ADD A,C
  1686.         LD (IX+4),A
  1687.         LD (IX+5),H
  1688.         LD A,E
  1689.         LD (IX+7),A
  1690.         LD (IX+8),D
  1691.         SUB C
  1692.         LD (IX+11),A
  1693.         LD (IX+12),D
  1694.         SUB C
  1695.         LD (IX+15),A
  1696.         LD (IX+16),D
  1697.         SBC A,C
  1698.         LD (IX+20),A
  1699.         LD (IX+21),D
  1700.         SBC A,C
  1701.         LD (IX+24),A
  1702.         LD (IX+25),D
  1703.         ADD A,21
  1704.         LD (IX+40),A
  1705.         LD (IX+41),D
  1706.         LD BC,scroLEN ;54
  1707.         ADD IX,BC
  1708.        POP BC
  1709.         RET
  1710. scrolST
  1711.         DI
  1712.         PUSH AF
  1713.         push BC
  1714.         push DE
  1715.         push HL
  1716.         push IX
  1717.         CALL OUT7
  1718.         LD (scrolQ+1),SP
  1719.         JP _d000
  1720. scrolQ
  1721.         LD SP,0
  1722.         POP IX
  1723.         pop HL
  1724.         pop DE
  1725.         pop BC
  1726.         pop AF
  1727.         RET
  1728. scrol2
  1729.         PUSH AF
  1730.         push BC
  1731.         push DE
  1732.         push HL
  1733.         push IX
  1734.         CALL OUT7
  1735.         LD (scrol2Q+1),SP
  1736. scrol2J=$+1
  1737.         JP _d000
  1738. scrol2Q
  1739.         LD SP,0
  1740.         POP IX
  1741.         pop HL
  1742.         pop DE
  1743.         pop BC
  1744.         pop AF
  1745.         RET
  1746. scrolin
  1747.         LD SP,0;0
  1748.         LD A,(0) ;ok ;3
  1749.         LD (0),A ;ok ;6
  1750.         POP HL
  1751.         LD (0),HL ;ok ;10
  1752.         POP AF
  1753.         LD (0),A ;ok ;14
  1754.         INC SP
  1755.         POP HL
  1756.         LD (0),HL ;ok ;19
  1757.         POP HL
  1758.         LD (0),HL ;ok ;23
  1759.         INC SP
  1760.         POP AF
  1761.         INC SP
  1762.         POP BC
  1763.         pop DE
  1764.         INC SP
  1765.         POP HL
  1766.         INC SP
  1767.         EXX
  1768.         POP BC
  1769.         pop DE
  1770.         INC SP
  1771.         POP HL
  1772.  
  1773.         LD SP,0;39
  1774.         PUSH HL
  1775.         DEC SP
  1776.         PUSH DE
  1777.         push BC
  1778.         DEC SP
  1779.         EXX
  1780.         PUSH HL
  1781.         DEC SP
  1782.         PUSH DE
  1783.         push BC
  1784.         DEC SP
  1785.         PUSH AF
  1786. scroLEN=$-scrolin
  1787. scroSIZ=scroLEN*47
  1788. ;3
  1789. UDE
  1790.         LD A,D
  1791.         DEC D
  1792.         AND 7
  1793.         RET NZ
  1794.         LD A,E
  1795.         SUB 32
  1796.         LD E,A
  1797.         RET C
  1798.         LD A,D
  1799.         ADD A,8
  1800.         LD D,A
  1801.         RET
  1802. ;3
  1803. UHL
  1804.         LD A,H
  1805.         DEC H
  1806.         AND 7
  1807.         RET NZ
  1808.         LD A,L
  1809.         SUB 32
  1810.         LD L,A
  1811.         RET C
  1812.         LD A,H
  1813.         ADD A,8
  1814.         LD H,A
  1815.         RET
  1816.  
  1817.         if 1==0
  1818. EXB0
  1819.         LD HL,COMFROM
  1820.         LD DE,lb000
  1821.         CALL OUT6
  1822. EXPG0   LD C,(HL)
  1823.         ld A,(DE)
  1824.         ld (HL),A
  1825.         ld A,C
  1826.         ld (DE),A
  1827.         INC DE
  1828.         inc HL
  1829.        LD A,D
  1830.        CP #BF
  1831.        jr NZ,EXPG0
  1832.         RET
  1833.         endif
  1834.  
  1835. COMPILS
  1836.         ;CALL EXB0
  1837.        LD A,24 ;KILL
  1838.         CALL cMPILE
  1839.        IF cmpilmnu
  1840.         LD A,(plyrON)
  1841.         OR A
  1842.         jr Z,COMPnPL
  1843.         LD HL,mod-plaer
  1844.         ADD HL,DE
  1845.         ex de,hl
  1846. COMPnPL
  1847.        ENDIF
  1848.         LD (SNGLEN),DE
  1849.         ;CALL EXB0
  1850.        IF cmpilmnu
  1851.         LD HL,COMPCOO
  1852.         LD DE,COMPUSE
  1853.         LD BC,mCOMPIL
  1854.         CALL WINDOW
  1855.         LD HL,tCOMPIL
  1856.         LD A,H
  1857.         ld (EDTXQIF),A
  1858.         LD DE,0
  1859.         CALL PRMENU
  1860.         CALL PRCOMPI
  1861. COMPLOP
  1862.        CALL HALTER
  1863.         CALL JPITEM
  1864.         CALL TSTFIRE
  1865.         jr NC,COMPLOP
  1866.         CALL CLOSWIN
  1867.         XOR A
  1868.         LD (EDTXQIF),A
  1869.         JP MKSCROL
  1870. COMSAVE
  1871.        ENDIF
  1872.         LD A,-1
  1873.         LD (comped),A
  1874.        IF 0==(ply+cmpilmnu)
  1875.        JP DISKS
  1876.        ELSE
  1877.         LD A,'C'
  1878.         ld (extS),A
  1879.         LD A,201
  1880.         ld (MHEXFNTpg),A
  1881.         CALL CLOSWIN
  1882.         LD A,205
  1883.         ld (MHEXFNTpg),A
  1884.         XOR A
  1885.         LD (EDTXQIF),A
  1886.         POP HL
  1887.         CALL OUT7
  1888.        IF 0==ply
  1889.        JP DISKS
  1890.        ELSE
  1891.         LD A,(SNGST+1)
  1892.         LD IX,TRELOC
  1893.         LD HL,plaer
  1894.         LD D,#C0
  1895.         LD ($-1),A
  1896.         LD E,A
  1897.         LD B,L
  1898. REL0    LD C,(IX)
  1899.         LD A,C
  1900.         OR A
  1901.        JP Z,DISKS
  1902.         INC IX
  1903.         ADD HL,BC
  1904.        INC A
  1905.        jr Z,REL0
  1906.         LD A,(HL)
  1907.         SUB D
  1908.         ADD A,E
  1909.         LD (HL),A
  1910.         JR REL0
  1911.        ENDIF
  1912.        ENDIF
  1913.        IF cmpilmnu
  1914. PLYRyn
  1915.         LD HL,plyrON
  1916.         LD A,(HL)
  1917.         XOR -1
  1918.         LD (HL),A
  1919.         LD BC,(SNGLEN)
  1920.         LD HL,mod-plaer
  1921.         CALL Z,NEGHL
  1922.         ADD HL,BC
  1923.         LD (SNGLEN),HL
  1924.         JP PRCOMPI
  1925. EcomADR
  1926.         CALL WAITNOK
  1927.         LD A,2
  1928.         LD DE,#1004
  1929.         LD HL,tC0
  1930.         CALL EDTXT
  1931.         LD A,(TXTBUF)
  1932.         CP '0'
  1933.         jr C,EcomAQ
  1934.         CP 'G'
  1935.         jr NC,EcomAQ
  1936.         CP 'A'
  1937.         jr C,$+6
  1938.          SUB #37
  1939.          JR EcomA1
  1940.         CP ':'
  1941.         jr NC,EcomAQ
  1942.         SUB "0
  1943. EcomA1  RRCA
  1944.        RRCA
  1945.        RRCA
  1946.        RRCA
  1947.        LD B,A
  1948.        LD A,(TXTBUF+1)
  1949.        CP '0'
  1950.        jr C,EcomAQ
  1951.        CP 'G'
  1952.        jr NC,EcomAQ
  1953.        CP 'A'
  1954.        jr C,$+6
  1955.         SUB #37
  1956.         JR EcomA2
  1957.        CP ':'
  1958.        jr NC,EcomAQ
  1959.        SUB "0
  1960. EcomA2  OR B
  1961.         LD (SNGST+1),A
  1962. EcomAQ  JP PRCOMPI
  1963. PRCOMPI
  1964. plyrON=$+1
  1965.         LD A,-ply
  1966.         OR A
  1967.         LD HL,TYES
  1968.         jr NZ,$+5
  1969.         LD HL,TNO
  1970.         LD DE,#1103
  1971.         CALL PRMENU
  1972.         LD HL,(SNGST)
  1973.         LD DE,#1004
  1974.         CALL PRHL
  1975.         LD DE,#1008
  1976.         CALL PRHL
  1977.         LD DE,#1009
  1978.         LD L,5
  1979.         CALL PRHL
  1980.         LD DE,#100A
  1981.         LD L,8
  1982.         CALL PRHL
  1983.         LD DE,#100B
  1984.         LD BC,mod-plaer-8
  1985.         ADD HL,BC
  1986.         CALL PRHL
  1987.         LD HL,(SNGLEN)
  1988.         LD DE,#100D
  1989.        ENDIF
  1990. PRHL
  1991.         LD A,H
  1992.         CALL PRHEX
  1993.         INC D
  1994.         LD A,L
  1995. PRHEX
  1996.         PUSH AF
  1997.         RRCA
  1998.         RRCA
  1999.         RRCA
  2000.         RRCA
  2001.         CALL PRBCD
  2002.         INC D
  2003.         POP AF
  2004. PRBCD
  2005.         AND #F
  2006.         ADD A,#90
  2007.         DAA
  2008.         ADC A,#40
  2009.         DAA
  2010.         ;or 0xf0 ;TODO
  2011.         ;daa
  2012.         ;add a,0xa0
  2013.         ;adc a,0x40
  2014. PRADD
  2015.         PUSH DE
  2016.         CALL PRADDPP
  2017.         CALL PR4X8
  2018.         POP DE
  2019.         RET
  2020. INCCHN
  2021.         LD A,(chn1)
  2022.         INC A
  2023.         CP 4
  2024.         jr NZ,$+4
  2025.         LD A,1
  2026. ICHNQ   LD (chn1),A
  2027.         LD DE,#2F0A
  2028.         JR PRBCD
  2029. DECCHN  LD A,(chn1)
  2030.         DEC A
  2031.         jr NZ,ICHNQ
  2032.         LD A,3
  2033.         JR ICHNQ
  2034. INCCHN2
  2035.         LD A,(chn2)
  2036.         INC A
  2037.         CP 4
  2038.         jr NZ,$+4
  2039.         LD A,1
  2040. ICHN2Q  LD (chn2),A
  2041.         LD DE,#390A
  2042.         JR PRBCD
  2043. DECCHN2 LD A,(chn2)
  2044.         DEC A
  2045.         jr NZ,ICHN2Q
  2046.         LD A,3
  2047.         JR ICHN2Q
  2048. D2HEX
  2049.         CP 10
  2050.         jr C,$+4
  2051.          ADD A,'A'-':'
  2052.         ADD A,'0' ;TODO daa
  2053.         LD (digit),A
  2054.         JR PRADD
  2055. drive
  2056.         LD C,A
  2057.         LD A,(#5D16)
  2058.         AND #FC
  2059.         OR C
  2060.         LD (#5D16),A
  2061.         LD A,C
  2062.         RET
  2063. BLOBER
  2064.         LD E,0
  2065.         LD D,H
  2066.         LD (HL),E
  2067.         INC H
  2068.         LD (HL),E
  2069.         INC H
  2070.         LD (HL),A
  2071.         INC H
  2072.         LD (HL),A
  2073.         INC H
  2074.         LD (HL),E
  2075.         INC H
  2076.         LD (HL),E
  2077.         LD H,D
  2078.         RET
  2079. BLOBER7 LD E,#70
  2080.         JR BLOBER+2
  2081. ;2
  2082. ANYKEY
  2083.         XOR A
  2084.          HALT
  2085.         IN A,(-2)
  2086.         RET
  2087. ;1
  2088. DECOM
  2089.         LD HL,TSEARCH
  2090.         LD DE,#601
  2091.         CALL PRMENU
  2092.         LD C,#A
  2093.         CALL DOS
  2094.         LD A,C
  2095.         LD C,8
  2096.         CALL DOS
  2097.         CALL OUT7
  2098.         LD HL,(#5CEB)
  2099.         LD (#5CF4),HL
  2100.         LD A,(#5CEA)
  2101. DECOM0  ex af,af'
  2102.        LD HL,modCd+256
  2103.        LD DE,modCd
  2104.       PUSH DE ;modCd
  2105.        LD BC,256
  2106.        LDIR
  2107.        LD HL,(#5CF4)
  2108.        ex de,hl ;HL=modCd+256
  2109.        LD BC,#105
  2110.        CALL DOS
  2111.       POP HL ;modCd
  2112. DECOM1  LD DE,TPROTR;+13
  2113.       ;LD C,L
  2114.       PUSH HL
  2115.        LD B,#D
  2116. DCOMPP0 INC DE
  2117.        inc HL;DEC DE,HL
  2118.        LD A,(DE)
  2119.        CP (HL)
  2120.        jr NZ,DCOMPPQ
  2121.        DJNZ DCOMPP0
  2122.       ;PUSH HL
  2123.        LD HL,TSEARCH
  2124.        LD DE,#601
  2125.        CALL PRMENU
  2126.        LD HL,modCd+512
  2127.        ex af,af'
  2128.         LD BC,#4005
  2129.         CP B
  2130.         jr NC,$+3
  2131.          LD B,A
  2132.         LD DE,(#5CF4)
  2133.         CALL DOS
  2134.        POP HL
  2135.         LD DE,mod
  2136.         LD B,64
  2137.         LDIR
  2138.         JP LDSNGQ
  2139. DCOMPPQ;LD L,C
  2140.        POP HL
  2141.         INC L
  2142.         jr NZ,DECOM1
  2143.         ex af,af'
  2144.        DEC A
  2145.        jr NZ,DECOM0
  2146.        JP DISKQ
  2147.  
  2148. CHN1PP
  2149. chn1=$+1
  2150.        LD A,1
  2151.        LD BC,3
  2152.        DEC A
  2153.        RET Z
  2154.        LD C,8
  2155.        DEC A
  2156.        RET Z
  2157.        LD C,13
  2158.        RET
  2159.       IF bemol
  2160. EPbem
  2161.        LD BC,(CURY)
  2162.        CALL GETnADR,XPP2
  2163.        LD A,C
  2164.       ADD A,A
  2165.       add A,A
  2166.       add A,C
  2167.       add A,-2
  2168.        ADD A,L
  2169.        LD L,A
  2170.       jr NC,$+3
  2171.       INC H
  2172.        LD A,(HL)
  2173.        SUB 12
  2174.        jr NC,$-2
  2175.        ADD A,11
  2176.        LD L,A
  2177.        ;DB ")))
  2178.        add hl,hl
  2179.        add hl,hl
  2180.        add hl,hl
  2181.        LD H,FNTDEC/256+2
  2182.        INC L
  2183.       BIT 3,(HL) ;diez
  2184.       RET Z
  2185.        DEC L
  2186.        LD D,H
  2187.        LD A,8
  2188.        CALL bemxorP
  2189.        LD A,-8
  2190.        CALL bemxorP
  2191.        INC HL
  2192.        LD DE,sprbem
  2193.        LD B,5
  2194.        CALL bemxor
  2195.        JP PRPATU
  2196. bemxorP ADD A,L
  2197.        LD E,A
  2198.        LD B,6
  2199. bemxor  PUSH HL
  2200.         LD A,(DE)
  2201.         XOR (HL)
  2202.         LD (HL),A
  2203.         INC HL
  2204.         inc DE
  2205.        DJNZ $-5
  2206.        POP HL
  2207.        RET
  2208. sprbem  DB 2,6,4,4,6
  2209.       ENDIF
  2210.  
  2211. INCPATL LD A,(PATLEN)
  2212.        INC A
  2213. IPATLQ
  2214.        AND 63
  2215.        LD (PATLEN),A
  2216.        ld C,A
  2217.        LD A,(EPAT)
  2218.        LD HL,TPATSZ
  2219.        ADD A,L
  2220.        LD L,A
  2221.        LD (HL),C
  2222.       CALL prpatl
  2223.        JP PRPATU;IPOSPATQ v3+698;PRPAT
  2224. DECPATL LD A,(PATLEN)
  2225.        DEC A
  2226.        JR IPATLQ
  2227.