?login_element?

Subversion Repositories NedoOS

Rev

Rev 759 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

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