Subversion Repositories NedoOS

Rev

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

  1.        IF gs
  2. INIGS
  3.         SC #32 ;stop module
  4.         WC
  5.         RET
  6.        ENDIF
  7. EDORN
  8.         XOR A
  9.         LD (volA),A
  10.         ld (volC),A
  11.         LD BC,mEDORN
  12.         CALL WINDUM
  13.         LD HL,tEDORN
  14.         ld DE,#800
  15.         CALL PRMENU
  16.        ;LD HL,tORNKEY,DE,#12
  17.        ;CALL PRMENU
  18.         LD HL,tORNo_s
  19.         ld DE,#711
  20.         CALL PRMENU
  21.         CALL OUT4
  22.         CALL HLORN
  23.         LD (ornadr),HL
  24.         LD DE,EDORbf
  25.         LD BC,64
  26.         LDIR
  27.         CALL PRORNos
  28.         LD A,(ORN)
  29.         ld HL,TORNSZ
  30.         ADD A,A
  31.         add A,L
  32.         LD L,A
  33.         ld A,(HL)
  34.         ld B,A
  35.         ld (EoLOOP),A
  36.         INC L
  37.         LD A,(HL)
  38.         SUB B
  39.         LD (EoLPlen),A
  40.        PUSH HL
  41.         CALL PRORN
  42.         XOR A
  43.         LD (EoLIN),A
  44.         ld (EoMflag),A
  45.         CALL GornMRK
  46. EDORN0
  47.        CALL RESHALT
  48.         CALL EORNCUR
  49.         CALL EoCHMRK
  50.         CALL EoPRMRK
  51.         CALL EDORNKY
  52.         LD A,(ORN)
  53.         ld (piaORN),A
  54. EoSMP=$+1
  55.         LD A,0
  56.         ld (piaSMP),A
  57.         ADD A,A
  58.         LD L,A
  59.         ld H,TSMPSZ/256
  60.         LD A,(HL)
  61.         ld (piSLOOP),A
  62.         INC L
  63.         LD A,(HL)
  64.         ld (piSEND),A
  65.         LD A,(EoLPlen)
  66.         ld B,A
  67.         LD A,(EoLOOP)
  68.         ld (piOLOOP),A
  69.         ADD A,B
  70.         LD (piOEND),A
  71.         CALL OUT4
  72.         LD HL,EDORbf
  73. ornadr=$+1
  74.         LD DE,0
  75.         ld BC,64
  76.         LDIR
  77.         CALL PIANO
  78.         CALL TSTFIRE
  79.         jr NC,EDORN0
  80.        CALL DOWNMER
  81.        POP HL
  82. ORNQU
  83.         LD A,(EoLOOP)
  84.         ld B,A
  85.         LD A,(EoLPlen)
  86. ORNQ    ADD A,B
  87.         LD (HL),A
  88.         DEC L
  89.         LD (HL),B
  90.        CALL CLOSWIN
  91.        LD A,(OCT)
  92.        JP PROCT
  93. HEXDIG
  94.         ADD A,'0'
  95.         CP ':'
  96.         RET C
  97.         ADD A,'A'-':' ;TODO daa? + 3 other places
  98.         RET
  99. PRMEMOS
  100. memol=$+1
  101.         LD DE,#60E
  102.         CALL PRMEMO
  103.         LD HL,Tmemo
  104. memo=$+1
  105.         LD B,0
  106.         DJNZ $+4
  107.         LD D,6
  108.         DJNZ $+4
  109.         LD D,11
  110.         DJNZ $+4
  111.         LD D,#E+2
  112.         DJNZ $+4
  113.         LD D,#18+8
  114.         DJNZ $+4
  115.         LD D,#22+14
  116.         LD (memol),DE
  117.         JP PRMENU
  118. EPsseP
  119.         LD A,(CURX)
  120.         LD E,1
  121.         LD BC,#200
  122.         CP 4
  123.         RET C
  124.         INC E
  125.         LD BC,#102
  126.         CP 6
  127.         RET C
  128.         LD BC,#503
  129.         INC E
  130.         CP 11+4
  131.         RET C
  132.         LD C,8
  133.         INC E
  134.         CP 16+8
  135.         RET C
  136.         LD C,13
  137.         INC E
  138.         RET
  139. EPsse
  140.         CALL EPsseP
  141.         LD A,E,(memo),A
  142.         PUSH BC
  143.         CALL PRMEMOS
  144.         LD A,(EPAT)
  145.         ld B,A
  146.         ld C,0
  147.         CALL GETnADR
  148.         LD DE,BUF
  149.         LD BC,#480
  150.         LDIR
  151.         CALL OUT6
  152.         LD HL,BUF
  153.         POP BC
  154.         LD A,B
  155.         ld B,0
  156.         ADD HL,BC
  157.         LD C,A
  158.         LD DE,MEMOBUF
  159.         LD A,64
  160. EPsse0  PUSH BC
  161.         PUSH HL
  162.         LDIR
  163.         POP HL
  164.         LD C,18
  165.         ADD HL,BC
  166.         POP BC
  167.         DEC A
  168.         jr NZ,EPsse0
  169.         RET
  170. EPssr
  171.         CALL EPsseP
  172.         LD A,(memo)
  173.         CP E
  174.         jr Z,EPssrE
  175.         CP 3
  176.         RET C
  177.         LD A,E
  178.         CP 3
  179.         RET C
  180. EPssrE
  181.         PUSH BC
  182.         LD A,(EPAT)
  183.         LD B,A
  184.         ld C,0
  185.         CALL GETnADR
  186.         LD (EPssrDE),HL
  187.         LD DE,BUF
  188.         LD BC,#480
  189.         LDIR
  190.         LD A,(curpg32khigh) ;ok ;(pg) ;pat
  191.         ex af,af'
  192.        CALL OUT6
  193.        LD HL,BUF
  194.        POP BC
  195.        LD A,B
  196.        ld B,0
  197.        ADD HL,BC
  198.        LD C,A
  199.        LD DE,MEMOBUF
  200.        ex de,hl
  201.        LD A,64
  202. EPssr0  PUSH BC
  203.        PUSH DE
  204.        LDIR
  205.        POP DE
  206.        ex de,hl
  207.        LD C,18
  208.        ADD HL,BC
  209.        ex de,hl
  210.        POP BC
  211.        DEC A
  212.        jr NZ,EPssr0
  213.        ex af,af'
  214.         SETPG32KHIGH;CALL OUTME
  215.         LD HL,BUF
  216. EPssrDE=$+1
  217.         LD DE,0
  218.         LD BC,#480
  219.         LDIR
  220.         JP PRPATU
  221. EXCHANG
  222.         CALL FROMSZ
  223.         PUSH AF
  224.         LD A,(pat1)
  225.         LD B,A
  226.         CALL GETnADR
  227.         PUSH HL
  228.         POP IX
  229.         CALL CHN1PP
  230.         ADD HL,BC
  231.         LD A,(chn2)
  232.         LD C,3
  233.         DEC A
  234.         jr Z,EXCHX2
  235.         LD C,8
  236.         DEC A
  237.         jr Z,$+4
  238.          LD C,13
  239. EXCHX2  ADD IX,BC
  240.         POP AF
  241. EXCH0   ex af,af'
  242.        PUSH HL
  243.        LD DE,BUF
  244.        LD BC,5
  245.        LDIR
  246.        POP DE
  247.        PUSH DE
  248.        push IX
  249.        POP HL
  250.        LD C,5
  251.        LDIR
  252.        LD HL,BUF
  253.        PUSH IX
  254.        POP DE
  255.        LD C,5
  256.        LDIR
  257.        POP HL
  258.        LD C,18
  259.        ADD HL,BC
  260.        ADD IX,BC
  261.        ex af,af'
  262.         DEC A
  263.         jr NZ,EXCH0
  264.         JP PRPATO
  265. CATBAR
  266.         LD HL,#48B5
  267.         XOR A
  268.         LD (CATBf),A
  269.         LD B,A
  270.         ld C,A
  271.         LD E,#81
  272.         LD A,(catH)
  273.         OR A
  274.         jr NZ,CATBNZ
  275.         INC A
  276.         LD D,A
  277.         JR CATBARP
  278. CATBNZ  ADD A,A
  279.         DEC A
  280.         LD D,A
  281.         LD A,(cattop)
  282.         OR A
  283.         CALL NZ,CATBARP
  284.         LD E,#BD
  285.         LD A,(catH)
  286.         CP 9
  287.         jr C,CATBARP
  288.         LD A,8
  289.         CALL CATBARP
  290.         LD A,(catH)
  291. cattop=$+1
  292.        SUB 0
  293.        SUB 8
  294.         LD E,#81
  295.         RET Z
  296. CATBARP ex af,af'
  297. CATBf=$+1
  298. CATBAR0 LD A,0
  299.        XOR -1
  300.        LD (CATBf),A
  301.        jr Z,$+6
  302.         LD (HL),E
  303.         CALL DHL
  304.        SCF
  305.        LD A,C
  306.        ADC A,D
  307.        LD C,A
  308.        jr NC,CATBAR0
  309.        ex af,af'
  310.         DEC A
  311.         jr NZ,CATBARP
  312.         RET
  313. USEBAR
  314.         LD A,(catH)
  315.        CP 9
  316.         RET C
  317.         ex af,af'
  318.        CALL FIRE
  319.        RET Z
  320.        LD A,(ARX)
  321.        SUB #A8
  322.        CP 8
  323.        RET NC
  324.        LD A,(ARXY)
  325.        SUB #68
  326.        CP #40
  327.        RET NC
  328.        LD L,A
  329.        XOR A
  330.        LD (USEBf),A
  331.        LD E,A
  332.        ld C,A
  333.        ld H,A
  334.        LD A,(catH)
  335.        ADD A,A
  336.        DEC A
  337.        LD D,A
  338. USEBAR0 LD A,E
  339.        CP L
  340.        jr NC,USEBok
  341. USEBf=$+1
  342. USEBAR1 LD A,0
  343.        XOR -1
  344.        LD (USEBf),A
  345.        jr Z,$+3
  346.         INC E
  347.        SCF
  348.        LD A,C
  349.        ADC A,D
  350.        LD C,A
  351.        jr NC,USEBAR1
  352.        INC H
  353.        JR USEBAR0
  354. USEBok  LD B,0
  355.        ex af,af'
  356.         LD C,A
  357.         OR A
  358.         RET Z
  359.         SUB 9
  360.         jr C,USEBARQ
  361.         LD B,H
  362.         ld A,H
  363.         ADD A,7
  364.         CP C
  365.         jr C,$+6
  366.         LD A,C
  367.         SUB 8
  368.         LD B,A
  369. USEBARQ LD A,B
  370.         ld (cattop),A
  371.         JP PRCAT
  372. AUDATER
  373.         LD C,#7F
  374.         LD DE,AUTO2
  375.         LD A,(DE)
  376.         CP C
  377.         jr Z,AUDnS
  378.         AND #80
  379.         LD B,A
  380.         LD A,(HL)
  381.         AND C
  382.         OR B
  383.         LD (HL),A
  384.         INC HL
  385.         inc HL
  386.         inc HL
  387.         LD A,(DE)
  388.         AND #7F
  389.         RRCA
  390.         RRCA
  391.         RRCA
  392.         RRCA
  393.         LD B,A
  394.         LD A,(HL)
  395.         AND #F
  396.         OR B
  397.         LD (HL),A
  398.         JR $+5
  399. AUDnS   INC HL
  400.         inc HL
  401.         inc HL
  402.         INC DE
  403.         LD A,(DE)
  404.         CP C
  405.         jr Z,AUDnT
  406.         LD B,A
  407.         LD A,(HL)
  408.         AND #F0
  409.         OR B
  410.         LD (HL),A
  411. AUDnT   INC DE
  412.         inc HL
  413.         LD A,(DE)
  414.         CP C
  415.         jr Z,AUDnO
  416.         RRCA
  417.         RRCA
  418.         RRCA
  419.         RRCA
  420.         LD B,A
  421.         LD A,(HL)
  422.         AND #F
  423.         OR B
  424.         LD (HL),A
  425. AUDnO   INC DE
  426.         LD A,(DE)
  427.         CP C
  428.         RET Z
  429.         LD B,A
  430.         LD A,(HL)
  431.         AND #F0
  432.         OR B
  433.         LD (HL),A
  434.         RET
  435. AENVER
  436.         CP E
  437.         jr Z,AEnres
  438.         LD HL,ead
  439.         RES 7,(HL)
  440.         INC L
  441.         RES 7,(HL)
  442. AEnres
  443. AENVFRQ=$+1
  444.         LD HL,0
  445. AENVnot=$+1
  446.        LD DE,0
  447.         INC HL
  448.         inc HL
  449.         inc HL
  450.         LD A,(HL)
  451.        AND 9
  452.        SUB 8
  453.         RET NZ
  454.        OR E
  455.        RET Z
  456. div=$+1
  457.         LD B,0
  458.         LD A,23
  459.         DJNZ $+4
  460.         LD A,28  ;3:4
  461.         DJNZ $+4
  462.         LD A,35  ;1:2
  463.         DJNZ $+4
  464.         LD A,47  ;1:4
  465.         DJNZ $+4
  466.         LD A,4   ;3:1
  467.         DJNZ $+4
  468.         LD A,7   ;5:2
  469.         DJNZ $+4
  470.         LD A,11  ;2:1
  471.         DJNZ $+4
  472.         LD A,16  ;3:2
  473.         ADD A,E
  474.         LD B,0
  475.         INC B
  476.         SUB 12
  477.         jr NC,$-3
  478.         LD E,A
  479. ;00,01->+0
  480. ;10,11->+1
  481.         LD HL,FrTab+24-512
  482.         ADD HL,DE
  483.         add HL,DE
  484.         LD A,(HL)
  485.         INC L
  486.         LD E,(HL)
  487.         SRL E
  488.         RRA
  489.         DJNZ $-3
  490.         ADC A,D
  491.         LD D,A
  492. AENVadr=$+2
  493.         LD (0),DE
  494.         RET
  495. EPdelln
  496.         CALL XPPSCF
  497.         RET NC
  498.         LD HL,(CURY)
  499.         ld H,L
  500.         INC L
  501.         LD A,201
  502.         ld (COPQJP),A
  503.         CALL EPdellnP
  504.         LD A,195
  505.         ld (COPQJP),A
  506.         CALL PRPATU
  507.         JR TSTNROL
  508. TSTnSSL
  509.         LD A,(ead)
  510.         RLA
  511.         jr C,AEskip
  512.         LD A,(HL)
  513.         AND #80
  514.         OR D
  515.         LD (HL),A
  516. AEskip
  517.        LD A,D
  518. TSTSSLQ
  519.        LD (AENVnot),A
  520.         INC E
  521.         jr Z,TSTNQ
  522. auto=$+1
  523.         LD A,-1
  524.         OR A
  525.         CALL Z,AUDATER
  526.         LD A,(ead)
  527.         RLA
  528.         SBC A,A
  529.         CPL
  530. aenv=$+1
  531.         LD E,-1
  532.         AND E
  533.         CALL Z,AENVER
  534. TSTNQ   CALL PRCU7
  535.        ;LD A,(EPAT),B,A
  536.        ;LD A,(CURY),E,#13
  537.        ;CALL STROKA
  538.        CALL PRPATUU
  539.         LD A,(iycurkey);(23560)
  540.         CP kL
  541.         jr Z,$+4
  542.          CP kssL
  543.         CALL NZ,PLNOTE
  544. TSTNROL LD A,(roll)
  545.         OR A
  546.         LD L,A ;how many lines down
  547.         JP NZ,ROLLPATFON
  548.         LD HL,CURX
  549.        LD A,(HL)
  550.        CP 3
  551.        RET Z
  552.        CP 5
  553.        RET NC
  554.        ;LD A,2;(curite)
  555.        ;CP (HL)
  556.        ;RET C
  557.         INC (HL)
  558.         RET
  559. TSTNnot
  560.         LD (AENVadr),HL
  561.         XOR A
  562.         LD B,A
  563.         ADD HL,BC
  564.         LD (AENVFRQ),HL
  565.         LD E,-1
  566.         OR D
  567.         jr Z,TSTnNOT
  568.         CP 97
  569.         jr NC,TSTnNOT
  570.         INC E
  571.        CP 25
  572.        LD A,(HL)
  573.        RES 7,A
  574.        jr Z,TSTSSLQ
  575.         CALL NotOct
  576. TSTnNOT
  577.        ;LD A,D
  578.         SUB 99
  579.         jr Z,TSTk
  580.         INC A
  581.         JP NZ,TSTnSSL
  582.         LD (HL),A
  583.         INC HL
  584.         LD (HL),A
  585.         INC HL
  586.         LD (HL),A
  587. TSTk    INC HL
  588.         LD (HL),A
  589.         INC HL
  590.         LD (HL),A
  591.         ;LD (IY-50),kssL
  592.         ld a,kssL
  593.         ld (iycurkey),a
  594.         JP TSTSSLQ
  595. EPdellnP
  596.         LD A,64
  597.         SUB H
  598.         LD DE,(EPAT)
  599.         ld D,A
  600.         ld A,E
  601.         DEC BC
  602.         LD B,C
  603.         RET Z
  604.         JP COPYU
  605. EPins
  606.         CALL XPPSCF
  607.         RET NC
  608.         LD HL,(CURY)
  609.         ld H,L
  610.         INC H
  611.         CALL EPdellnP
  612.        LD A,(chnall)
  613.        OR A
  614.        jr Z,insNALL
  615.        LD BC,(CURY)
  616.        CALL GETnADR
  617.        ex de,hl
  618.        LD HL,BUF+#480 ;тут нули
  619.        LD BC,18
  620.        LDIR
  621. insNALL HALT
  622.         ;LD (IY-50),kssL
  623.         ld a,kssL
  624.         ld (iycurkey),a
  625. TSTNOTE
  626.         LD BC,(CURY)
  627.         CALL GETnADR
  628.         CALL NOTEKEY
  629.         BIT 7,D
  630.         CALL Z,XPPSCF
  631.         DEC BC
  632.         jr Z,TSTNnot
  633.        LD A,D
  634.        CP 98
  635.        jr Z,$-5
  636.         CALL RECHEX
  637.         INC D
  638.         jr NZ,TSTnDIG
  639.         LD C,D
  640.         ld B,D
  641.         ld D,A
  642.         LD A,(CURX)
  643.         OR A
  644.         CALL TSTnPP+2
  645.         CALL TSTnP
  646.         LD C,6
  647.         CALL TSTnPP
  648.         LD C,4
  649.         CALL TSTnPP+1
  650.         LD C,11
  651.         CALL TSTnPP
  652.         LD C,9
  653.         CALL TSTnPP+1
  654.         LD C,16
  655.         CALL TSTnPP
  656.         LD C,14
  657.         CALL TSTnPP+1
  658. TSTnDIG
  659.        LD A,D
  660.        CP 9
  661.        jr Z,EVENODD
  662.         CALL RECopq
  663.         INC D
  664.         RET NZ
  665.         LD D,A
  666.         OR A
  667.         CALL XPP
  668.         RET NZ
  669.         INC C
  670.         inc C
  671.         LD B,0
  672.         ADD HL,BC
  673.        LD A,(HL)
  674.        LD (HL),D
  675.        RLD
  676.         SCF
  677.         JR TSTs0
  678. EVENODD
  679.         LD HL,COPSCF
  680.         LD A,(HL)
  681.         XOR 128
  682.         LD (HL),A
  683.         LD HL,#485A
  684.         LD C,2
  685.         CALL INVSYMS
  686.         POP AF
  687.         RET
  688. ;2(EDSONG,EPEXT)
  689. MELINV
  690.         LD HL,#40EA
  691.         LD C,6
  692. INVSYMS
  693.         PUSH HL
  694.         LD B,8
  695. invsym0 LD A,(HL)
  696.         CPL
  697.         LD (HL),A
  698.         INC H
  699.         DJNZ invsym0
  700.         POP HL
  701.         INC L
  702.         DEC C
  703.         JR NZ,INVSYMS
  704.         RET
  705. TSTL
  706.         POP AF
  707.         ADD HL,BC
  708.        LD A,(HL)
  709.        LD (HL),D
  710.        RLD
  711.        OR A
  712.         CALL XPP
  713.         jr Z,TSTs0-1
  714.        CP -7
  715.        jr NZ,tstnq
  716.        LD A,(CURX)
  717.        OR A
  718.        jr Z,tstnq
  719.         LD A,D
  720.         OR A
  721.         jr Z,tstnq
  722.        PUSH AF
  723.        LD A,(ORN)
  724.        LD (ORN2),A
  725.        XOR A
  726.        CALL ONCORN2
  727.        POP AF
  728.         LD (ORN),A
  729.         XOR A
  730.         CALL ONCORN
  731. tstnq   JP TSTNQ
  732.         OR A
  733. TSTs0   DEC HL
  734.         dec HL
  735.         dec HL
  736.         RL (HL)
  737.         RRC (HL)
  738.         LD A,(HL)
  739.         RRA
  740.         RRA
  741.         RRA
  742.         AND 16
  743.         OR D
  744.         jr Z,tstnq
  745.        PUSH AF
  746.        LD A,(smp)
  747.        LD (SMP2),A
  748.        XOR A
  749.        CALL ONCSMP2
  750.        POP AF
  751.         LD (smp),A
  752.         XOR A
  753.         CALL ONCSMP
  754.         JP tstnq
  755. TSTnPP
  756.         DEC A
  757.         dec A
  758.         jr Z,TSTL
  759.         DEC A
  760.         jr Z,TSTR
  761. TSTnP   INC BC
  762.         DEC A
  763.         jr Z,TSTL
  764.         DEC A
  765.         RET NZ
  766. TSTR    POP AF
  767.         ADD HL,BC
  768.         LD A,(HL)
  769.         AND #F0
  770.         OR D
  771.         LD (HL),A
  772.         JP TSTNQ
  773. RECopq
  774.         LD DE,0x0000+'O'
  775.         LD A,(iycurkey);(23560)
  776.          cp 'a'
  777.          jr c,RECopq_noletter
  778.          cp 'z'+1
  779.          jr nc,RECopq_noletter
  780.          sub 0x20
  781. RECopq_noletter
  782.         CP ';'
  783.         jr Z,RECopY
  784.         CP E
  785.         RET Z
  786.         INC E
  787.         CP #22
  788.         jr Z,RECopY
  789.         CP E
  790.         RET Z
  791.         CP 'G'
  792.         RET C
  793.         CP 'W'
  794.         RET NC
  795.         LD E,A
  796.         XOR 'Q'
  797.         CALL Z,cs_8026 ;???
  798.         RET C
  799. RECopY  LD A,E
  800.         SUB 'G'
  801.         DEC D
  802.         RET
  803. RECHEX
  804.         LD D,0
  805.         LD A,(iycurkey);(23560)
  806.          cp 'a'
  807.          jr c,RECHEX_noletter
  808.          cp 'z'+1
  809.          jr nc,RECHEX_noletter
  810.          sub 0x20
  811. RECHEX_noletter
  812.         CP '0'
  813.         RET C
  814.         CP 'G'
  815.         RET NC
  816.         CP ':'
  817.         jr NC,$+6
  818.         SUB '0'
  819.         DEC D
  820.         RET
  821.         CP 'A'
  822.         RET C
  823.         SUB #37
  824.         DEC D
  825.         RET
  826. D0TO_
  827.         LD A,(HL)
  828.         CP '0'
  829.         jr C,d0TO0
  830.         CP ':'
  831.         jr NC,$+5
  832.          SUB '0'
  833.          RET
  834.         CP 'A'
  835.         jr C,d0TO0
  836.         CP 'G'
  837.         jr NC,$+5
  838.          SUB #37
  839.          RET
  840. d0TO0   LD (HL),'-'
  841.         LD A,#7F
  842.         RET
  843. ENVFL
  844.         LD HL,ead
  845.         ld A,(HL)
  846.         XOR 128
  847.         LD (HL),A
  848.         INC L
  849.         LD (HL),A
  850.         RET
  851. TSTOCT
  852.         LD A,(iycurkey);(23560)
  853.         CP kE
  854.         jr Z,ENVFL
  855.         SUB '1'
  856.         CP 9
  857.         RET NC
  858.        ;CALL NEWOCT
  859.        ;JP SHOLK
  860. ;NEWOCT
  861.         AND 7
  862.         INC A
  863.         LD (OCT),A
  864. ;1
  865. PROCT   LD DE,#D08
  866.         JP PRBCD
  867. POSEDIT
  868.         LD BC,mPOS
  869.         CALL WINDUM
  870.         LD HL,tPOS
  871.         LD DE,0
  872.         CALL PRMENU
  873.         XOR A
  874.         LD (EpMflag),A
  875.         LD (EpY),A
  876.         LD A,(POS)
  877.         CALL EDPOSR
  878. POSED0
  879.        CALL RESHALT
  880.         LD A,#28
  881.         CALL EpPRCUR
  882.         CALL EDPOSKY
  883.         LD A,5
  884.         CALL EpPRCUR
  885.         CALL EpCHMRK
  886.         CALL EpPRMRK
  887.         CALL TSTFIRE
  888.         jr NC,POSED0
  889.         LD A,(EsTOP)
  890.         ld B,A
  891.         LD A,(EpY)
  892.         ADD A,B
  893.         LD (POS),A
  894.         LD L,A
  895.         ld H,TPOSS/256
  896.         LD A,(HL)
  897.         ld (EPAT),A
  898.         LD L,A
  899.         INC H
  900.         LD A,(HL)
  901.         ld (PATLEN),A
  902.         CALL CLOSWIN
  903.         CALL POSFON
  904.         JP PRPAT
  905. EpPRMRK
  906.         LD HL,#58C3
  907.         LD BC,(LOOP)
  908.         LD DE,32
  909.         LD A,(EsTOP)
  910.         ex af,af'
  911.        LD A,16
  912. EpPRMR0 ex af,af'
  913.         CP C
  914.         jr NC,EpPRMR1+1
  915. EpPRMRQ LD (HL),#28
  916.         INC A
  917.         ex af,af'
  918.        ADD HL,DE
  919.        DEC A
  920.        jr NZ,EpPRMR0
  921.        RET
  922. EpPRMR1 ex af,af'
  923.         CP B
  924.         jr NC,EpPRMRQ
  925.         LD (HL),#55
  926.         INC A
  927.         ex af,af'
  928.        ADD HL,DE
  929.        DEC A
  930.        jr NZ,EpPRMR1
  931.        RET
  932. EpCHMRK
  933.        LD A,(EpMflag)
  934.        OR A
  935.        CALL NZ,EpCHEND
  936.        LD A,(NOPKA)
  937.        OR A
  938.        RET Z
  939.        XOR A
  940. EpMflag=$+1
  941.        CP 0
  942.        jr NZ,EpCHMRQ
  943.        CALL EpARPOS
  944.        RET C
  945.        LD (LOOP),A
  946.        CPL
  947. EpCHMRQ LD (EpMflag),A
  948.        RET
  949. EpCHEND CALL EpARPOS
  950.        RET C
  951.        LD HL,LOOP
  952.        CP (HL)
  953.        jr NC,$+3
  954.        LD A,(HL)
  955.        INC A
  956.        inc HL
  957.        LD (HL),A
  958.        RET
  959. ;1
  960. EsCHMRK
  961.        LD A,(EsMflag)
  962.        OR A
  963.        CALL NZ,esCHEND
  964.        LD A,(NOPKA)
  965.        OR A
  966.        RET Z
  967.        XOR A
  968. EsMflag=$+1
  969.        CP 0
  970.        jr NZ,esCHMRQ
  971.        CALL EsARPOS
  972.        RET C
  973.        LD (EsLOOP),A
  974.        CPL
  975. esCHMRQ LD (EsMflag),A
  976.        RET
  977. esCHEND
  978.        CALL EsARPOS
  979.        RET C
  980.       LD HL,EsLOOP
  981.       SUB (HL)
  982.        RET C
  983.        INC A
  984.        LD (EsLEN),A
  985.        RET
  986. ;1
  987. EoCHMRK
  988.        LD A,(EoMflag)
  989.        OR A
  990.        CALL NZ,eoCHEND
  991.        LD A,(NOPKA)
  992.        OR A
  993.        RET Z
  994.        XOR A
  995. EoMflag=$+1
  996.        CP 0
  997.        jr NZ,eoCHMRQ
  998.        CALL EoARLOP
  999.        RET C
  1000.        LD (EoLOOP),A
  1001.        CPL
  1002. eoCHMRQ LD (EoMflag),A
  1003.        RET
  1004. eoCHEND CALL EoARLOP
  1005.        RET C
  1006.        LD HL,EoLOOP
  1007.        SUB (HL)
  1008.        RET C
  1009.        INC A
  1010.        LD (EoLPlen),A
  1011.        RET
  1012. EpARPOS
  1013.        LD BC,#610
  1014.        LD L,3
  1015.        JR psARPOS
  1016. EsARPOS
  1017.        LD BC,+((SMPY+1)<<8)+SMPH
  1018.        LD L,1+SMPX
  1019. psARPOS LD A,(ARXY)
  1020.        RRA
  1021.        RRA
  1022.        RRA
  1023.        AND 31
  1024.        SUB B
  1025.        CP C
  1026.        CCF
  1027.        RET C
  1028.        LD C,A
  1029.        LD A,(ARX)
  1030.        RRA
  1031.        RRA
  1032.        RRA
  1033.        AND 31
  1034.        CP L
  1035.        jr NZ,SCFRET
  1036.        LD A,(EsTOP)
  1037.        ADD A,C
  1038.        RET
  1039. EoARLOP
  1040.        LD A,1
  1041. EoARPOS
  1042.        LD E,A
  1043.        LD HL,(ARXY)
  1044.        LD A,L
  1045.        RRA
  1046.        RRA
  1047.        RRA
  1048.        AND 31
  1049.        SUB 3
  1050.        RET C
  1051.        CP 16
  1052.        CCF
  1053.        RET C
  1054.        LD D,A
  1055.        LD A,H
  1056.        RRA
  1057.        RRA
  1058.        RRA
  1059.        AND 31
  1060.        LD BC,#400
  1061. EoARp0  CP E
  1062.        jr Z,EoARpQ
  1063.        SUB 4
  1064.        INC C
  1065.        DJNZ EoARp0
  1066. SCFRET  SCF
  1067.        RET
  1068. EoARpQ  LD A,C
  1069.        ADD A,A
  1070.        add A,A
  1071.        add A,A
  1072.        add A,A
  1073.        add A,D
  1074.        RET
  1075. decCOR
  1076.        LD A,(DE)
  1077.        CP L
  1078.        RET C
  1079.        DEC A
  1080.        LD (DE),A
  1081.        RET
  1082. incCOR
  1083.        LD A,(DE)
  1084.        CP L
  1085.        RET C
  1086.        RET Z
  1087.        INC A
  1088.        RET Z
  1089.        LD (DE),A
  1090.        RET
  1091. EDPOSB
  1092.        CALL EpGadr
  1093.        LD (LOOP),A
  1094.        RET
  1095. EDPOSE
  1096.        CALL EpGadr
  1097.        LD (LENG),A
  1098.        RET
  1099. EpPRCUR
  1100.        ex af,af'
  1101.         LD A,(EpY)
  1102.         ADD A,A
  1103.         add A,A
  1104.         add A,A
  1105.         add A,A
  1106.         LD L,A
  1107.         ld H,0
  1108.         ADD HL,HL
  1109.         LD DE,#58C6
  1110.         ADD HL,DE
  1111.         ex af,af'
  1112.        LD (HL),A
  1113.        INC L
  1114.        LD (HL),A
  1115.        INC L
  1116.        LD (HL),A
  1117.        RET
  1118. EpGadr
  1119.        LD A,H
  1120.        ADD A,L
  1121.        LD L,A
  1122.        LD H,TPOSS/256
  1123.        RET
  1124. EDPOSDQ
  1125.        LD (EpY),A
  1126.        JP SHOLK
  1127. EDPOSKY
  1128.        CALL BIT5
  1129.        RET Z
  1130.        LD HL,(EsTOP)
  1131. EpY=$+1
  1132.        LD H,0
  1133.        CALL RECHEX
  1134.        INC D
  1135.        jr Z,EDpDIG
  1136.        LD A,(iycurkey);(23560)
  1137.        CP kKpos;'K'
  1138.        jr Z,EDPOSB
  1139.        CP kLpos;'L'
  1140.        jr Z,EDPOSE
  1141.        cp key_left;SUB 8
  1142.        jr NZ,EDPOSNL
  1143.        LD A,L
  1144.        SUB 15
  1145.        jr NC,$+3
  1146.         XOR A
  1147.        JR EDPOSTO
  1148. EDPOSNL cp key_right ;DEC A
  1149.        jr NZ,EDPOSNR
  1150.        LD A,L
  1151.        ADD A,15
  1152. EDPOSR  CP -16
  1153.        jr C,$+4
  1154.         LD A,-16
  1155.        JR EDPOSTO
  1156. EDPOSNR cp key_down ;DEC A
  1157.        jr NZ,EDPOSND
  1158.        LD A,H
  1159.        INC A
  1160.        AND 15
  1161.        jr NZ,EDPOSDQ
  1162.        LD A,L
  1163.        INC A
  1164.        CP -15
  1165.        RET Z
  1166.        JR EDPOSTO
  1167. EDPOSND cp key_up ;DEC A
  1168.        jr NZ,EDPOSNU
  1169.        LD A,H
  1170.        DEC A
  1171.        JP P,EDPOSDQ
  1172.        LD A,L
  1173.        SUB 1
  1174.        RET C
  1175. EDPOSTO LD (EsTOP),A
  1176.        JR PRPOS
  1177. EDPOSNU CP kDelLn;-11
  1178.        jr NZ,EDpNdelln
  1179.        CALL EpGadr
  1180.        LD D,H
  1181.        ld E,L
  1182.        INC L
  1183.        RET Z
  1184.        PUSH HL
  1185.        LD A,(HL)
  1186.        ld (DE),A
  1187.        INC E
  1188.        inc L
  1189.        jr NZ,$-4
  1190.        POP HL
  1191.        LD DE,LOOP
  1192.        CALL decCOR
  1193.        LD DE,LENG
  1194.        CALL decCOR
  1195.        JR PRPOS
  1196. EDpDIG
  1197.        LD D,A
  1198.        CALL EpGadr
  1199.        LD A,(HL)
  1200.        LD B,4
  1201.        ADD A,A
  1202.        jr C,EpDIGo
  1203.        DJNZ $-3
  1204.        ADD A,D
  1205.        CP PATS
  1206.        jr C,$+3
  1207. EpDIGo  LD A,D
  1208.        LD (HL),A
  1209. PRPOS
  1210.        LD HL,(EsTOP)
  1211.        ld H,TPOSS/256
  1212.        LD A,16
  1213.        ld DE,#41C3
  1214. PRPOS0  PUSH AF
  1215.        push DE
  1216.        LD A,L
  1217.        PUSH HL
  1218.        CALL PRF8
  1219.        POP HL
  1220.        INC E
  1221.        inc E
  1222.        inc E
  1223.        LD A,(HL)
  1224.        INC L
  1225.        PUSH HL
  1226.        CALL PRF8
  1227.        POP HL
  1228.        pop DE
  1229.        LD A,D
  1230.        ADD A,6
  1231.        LD D,A
  1232.        CALL DDE
  1233.        INC D
  1234.        POP AF
  1235.        DEC A
  1236.        jr NZ,PRPOS0
  1237.        JP SHOLK
  1238. EDpNdelln
  1239.        cp key_ins ;CP 201-11
  1240.        RET NZ
  1241.        CALL EpGadr
  1242.        XOR -1
  1243.        RET Z
  1244.        PUSH HL
  1245.        LD C,A
  1246.        ld B,0
  1247.        LD DE,bf240
  1248.        PUSH HL
  1249.        push DE
  1250.        LDIR
  1251.        LD C,A
  1252.        POP HL
  1253.        pop DE
  1254.        INC E
  1255.        LDIR
  1256.        POP HL
  1257.        LD DE,LOOP
  1258.        CALL incCOR
  1259.        LD DE,LENG
  1260.        CALL incCOR
  1261.        JR PRPOS
  1262. EoGadr
  1263. EoLIN=$+1
  1264.        LD A,0
  1265. ornADR=$+1
  1266.        LD HL,EDORbf
  1267.        ADD A,L
  1268.        LD L,A
  1269.        LD A,(HL)
  1270.        RET
  1271. EDOR_p
  1272.        POP AF
  1273.        pop HL
  1274.        CALL ORNQU
  1275.        CALL DECORN ;+print
  1276.        JP EDORN
  1277. EDOR_n
  1278.        POP AF
  1279.        pop HL
  1280.        CALL ORNQU
  1281.        CALL INCORN ;+print
  1282.        JP EDORN
  1283. EDORNKY
  1284.        CALL BIT5
  1285.        RET Z
  1286.        LD B,1
  1287.       CP key_pgup;4
  1288.       jr Z,EDOR_p
  1289.       CP key_pgdown;5
  1290.       jr Z,EDOR_n
  1291.        CP ssI;172;i
  1292.        jr Z,EDORSMP
  1293.        CP kE;'E'
  1294.        jr Z,EDORNUM
  1295.        LD B,-1
  1296.        CP ssU;197;u
  1297.        jr Z,EDORSMP
  1298.        CP kW;'W'
  1299.        jr Z,EDORNUM
  1300.        LD B,12
  1301.        CP kT;'T'
  1302.        jr Z,EDORNUM
  1303.        LD B,-12
  1304.        CP kR;'R'
  1305.        jr Z,EDORNUM
  1306.        CP '0'
  1307.        jr Z,EDOR0
  1308.        CP kIns
  1309.       jr Z,EDoINS
  1310.        CP kDelLn
  1311.       JP Z,EDoDELLN
  1312.        CP kKpos;'K'
  1313.       JP Z,EDoBEG
  1314.        CP kLpos;'L'
  1315.       JP Z,EDoEND
  1316.        CP '+'
  1317.        jr Z,EDoPLU
  1318.       SUB '0';1
  1319.       CP 9;8
  1320.        RET NC
  1321.       LD (OCT),A
  1322. EDORSq  CALL PRORNos
  1323.        JP SHOLK
  1324. EDoPLU  CALL EoGadr
  1325.        JR EDORNEG
  1326. EDORSMP
  1327.        LD HL,EoSMP
  1328.        ld A,(HL)
  1329.        ADD A,B
  1330.        AND 31
  1331.        LD (HL),A
  1332.        JR EDORSq
  1333. EDORNUM
  1334.        CALL EoGadr
  1335.        ADD A,B
  1336.        LD B,0
  1337.        JP P,$+6
  1338.        INC B
  1339.        NEG
  1340.       AND 127
  1341.       CP 96
  1342.       jr C,$+4
  1343.       LD A,96
  1344.        DJNZ $+4
  1345. EDORNEG
  1346.        NEG
  1347.        LD (HL),A
  1348.        CALL ORNline
  1349.        JP SHOLK
  1350. EDOR0
  1351.        CALL EoGadr
  1352.        XOR A
  1353.        JR EDORNEG
  1354. EDoINS
  1355.        CALL EoGadr
  1356.        LD A,63
  1357.        SUB L
  1358.        RET Z
  1359.        LD L,62
  1360.        ld E,63
  1361.        ld D,H
  1362.        ld B,0
  1363.        ld C,A
  1364.        LDDR
  1365.       INC L
  1366.        LD DE,EoLOOP
  1367.        CALL incCOR
  1368.       jr Z,$+4
  1369.       jr NC,EDoz
  1370.        ex de,hl
  1371.        INC HL
  1372.       DEC A
  1373.        ADD A,(HL)
  1374.        CP E
  1375.        jr C,EDoz
  1376.        CP 63
  1377.        jr NC,$+3
  1378. EDoINSQ INC (HL)
  1379.        JR EDoz
  1380. EDoDELLN
  1381.        CALL EoGadr
  1382.        LD D,H
  1383.        ld E,L
  1384.        INC L
  1385.        LD A,64
  1386.        SUB L
  1387.        RET Z
  1388.        LD B,0
  1389.        ld C,A
  1390.        ld A,L
  1391.        LDIR
  1392.        LD L,A
  1393.        LD DE,EoLOOP
  1394.        CALL decCOR
  1395.       jr NC,EDoz
  1396.        ex de,hl
  1397.        INC HL
  1398.        ADD A,(HL)
  1399.        CP E
  1400.        jr C,EDoz
  1401.        DEC (HL)
  1402.        jr Z,EDoINSQ
  1403. EDoz
  1404.        CALL PRORN
  1405.        JP SHOLK
  1406. EDoBEG
  1407.        LD A,(EoLIN)
  1408.       LD HL,EoLOOP
  1409. EDoBEGQ LD C,(HL)
  1410.       LD (HL),A
  1411.       INC HL
  1412.       SUB C
  1413.       NEG
  1414.       ADD A,(HL)
  1415.       LD (HL),A
  1416.        RET
  1417. EDoEND
  1418.        LD HL,EoLOOP
  1419.        LD A,(EoLIN)
  1420.        SUB (HL)
  1421.        INC HL
  1422.        LD (HL),A
  1423.        RET
  1424. EDsBEG
  1425.        LD A,(EsLIN)
  1426.       LD HL,EsLOOP
  1427.       JR EDoBEGQ
  1428. EDsEND
  1429.        LD HL,EsLOOP
  1430.        LD A,(EsLIN)
  1431.        SUB (HL)
  1432.        INC HL
  1433.        LD (HL),A
  1434.        RET
  1435. PRORN
  1436.        LD HL,EDORbf
  1437.        LD E,1
  1438.        ld C,16
  1439. PRORN0  PUSH HL
  1440.        LD D,1
  1441.        ld B,4
  1442. PRORN1  PUSH BC
  1443.        LD A,L
  1444.        CALL toOO
  1445.        INC D
  1446.        inc D
  1447.        PUSH HL
  1448.        LD A,(HL)
  1449.        ld L,A
  1450.        OR A
  1451.        LD B,'+'
  1452.        CALL M,NEGHL-2
  1453.        LD A,B
  1454.        CALL PRADD
  1455.        INC D
  1456.        LD A,L
  1457.        CALL toOO
  1458.        INC D
  1459.        inc D
  1460.        inc D
  1461.        POP HL
  1462.        LD BC,16
  1463.        ADD HL,BC
  1464.        POP BC
  1465.        DJNZ PRORN1
  1466.        INC E
  1467.        POP HL
  1468.        INC L
  1469.        DEC C
  1470.        jr NZ,PRORN0
  1471.        RET
  1472. EORNCUR
  1473.        CALL BIT5
  1474.        RET Z
  1475.        cp key_left ;SUB 8
  1476.        LD B,-16
  1477.        jr Z,EORNC
  1478.        cp key_right ;DEC A
  1479.        LD B,16
  1480.        jr Z,EORNC
  1481.        cp key_down ;DEC A
  1482.        LD B,1
  1483.        jr Z,EORNC
  1484.        cp key_up ;DEC A
  1485.        LD B,-1
  1486.        RET NZ
  1487. EORNC   LD A,(EoLIN)
  1488.        ADD A,B
  1489.        AND 63
  1490. EORNCQ  ex af,af'
  1491.         LD E,7
  1492.         CALL GornMRK+2
  1493.         ex af,af'
  1494.        LD (EoLIN),A
  1495.        LD HL,SHOLK
  1496.        PUSH HL
  1497. GornMRK LD E,56
  1498.        ld A,(EoLIN)
  1499.        LD BC,16
  1500.        LD H,B
  1501.         INC B
  1502.         SUB C
  1503.        jr NC,$-2
  1504.        ADD A,C
  1505.        add A,3
  1506.        ADD A,A
  1507.        add A,A
  1508.        add A,A
  1509.        LD L,A
  1510.        ADD HL,HL
  1511.        add HL,HL
  1512.        LD A,H
  1513.        SUB -88
  1514.        LD H,A
  1515.        ld A,B
  1516.        ADD A,A
  1517.        add A,A
  1518.        SUB 2
  1519.        OR L
  1520.        LD L,A
  1521.        ld (HL),E
  1522.        INC L
  1523.        LD (HL),E
  1524.        RET
  1525. ORNline
  1526.        LD A,(EoLIN)
  1527.        ld BC,16
  1528.         INC B
  1529.         SUB C
  1530.        jr NC,$-2
  1531.        ADC A,C
  1532.        LD E,A
  1533.        ld A,B
  1534.        ADD A,A
  1535.        add A,A
  1536.        add A,A
  1537.        SUB 4
  1538.        LD D,A
  1539.        LD HL,(ornADR)
  1540.        LD A,(EoLIN)
  1541.        ADD A,L
  1542.        LD L,A
  1543.        ld A,(HL)
  1544.        ld L,A
  1545.        OR A
  1546.        LD B,'+'
  1547.        CALL M,NEGHL-2
  1548.        LD A,B
  1549.        CALL PRADD
  1550.        INC D
  1551.        LD A,L
  1552.        JP toOO
  1553. EoPRMRK
  1554.        LD A,(NOPKA)
  1555.        OR A
  1556.        LD A,3
  1557.        CCF
  1558.        CALL NZ,EoARPOS
  1559.        CALL NC,EORNCQ
  1560. EoLOOP=$+1
  1561. EoLPlen=$+2
  1562.        LD BC,0
  1563.        ld DE,32
  1564.        XOR A
  1565.        LD HL,#5861
  1566. PRoLP0  CP C
  1567.        jr Z,PRoLPQ
  1568.        LD (HL),5
  1569.        CALL PRoLPP
  1570.        jr NZ,PRoLP0
  1571.        RET
  1572. PRoLPQ  LD (HL),#5D
  1573.        CALL PRoLPP
  1574.        RET Z
  1575.        DJNZ PRoLPQ
  1576.        JR PRoLP0
  1577. PRoLPP  INC A
  1578.        PUSH AF
  1579.        AND 15
  1580.        jr NZ,PRoLPE
  1581.        LD A,L
  1582.        AND 31
  1583.        LD H,88
  1584.        ADD A,#44
  1585.        LD L,A
  1586. PRoLPE  ADD HL,DE
  1587.        POP AF
  1588.        AND 63
  1589.        RET
  1590. EsPRMRK
  1591.        LD HL,SMPATR+1;#58E5
  1592. EsLOOP=$+1
  1593. EsLEN=$+2
  1594.        LD BC,#100
  1595.        ld A,C
  1596.        ADD A,B
  1597.        LD B,A
  1598.        ld DE,32
  1599.        LD A,(EsTOP)
  1600.        ex af,af'
  1601.         LD A,SMPH
  1602. EsPRMR0 ex af,af'
  1603.        CP C
  1604.        jr NC,EsPRMR1+1
  1605. EsPRMRQ LD (HL),5
  1606.        INC A
  1607.        ex af,af'
  1608.         ADD HL,DE
  1609.         DEC A
  1610.         jr NZ,EsPRMR0
  1611.         RET
  1612. EsPRMR1 ex af,af'
  1613.        CP B
  1614.        jr NC,EsPRMRQ
  1615.        LD (HL),#5D
  1616.        INC A
  1617.        ex af,af'
  1618.         ADD HL,DE
  1619.         DEC A
  1620.         jr NZ,EsPRMR1
  1621.         RET
  1622. EDSMORN
  1623.         LD HL,EsORN
  1624.         ld A,(HL)
  1625.         ADD A,C
  1626.         AND #F
  1627.         LD (HL),A
  1628.         JR EDSMOq
  1629. EDSM_p
  1630.         POP AF
  1631.         pop HL
  1632.         CALL SMPQU
  1633.         CALL DECSMP
  1634.         JP EDSMP
  1635. EDSM_n
  1636.         POP AF
  1637.         pop HL
  1638.         CALL SMPQU
  1639.         CALL INCSMP
  1640.         JP EDSMP
  1641. EDSMPKY
  1642.         CALL FIRE
  1643.         JP NZ,EDSMPFI
  1644.         XOR A
  1645.         LD (EDSMFIh),A
  1646.         CALL BIT5
  1647.         RET Z
  1648.        CP key_pgup ;4
  1649.        jr Z,EDSM_p
  1650.        CP key_pgdown ;5
  1651.        jr Z,EDSM_n
  1652.         LD BC,32
  1653.         CP kR;'R'
  1654.         jr Z,EDSMNUM
  1655.         LD C,1
  1656.         CP ssI;172;i
  1657.         jr Z,EDSMORN
  1658.         CP kW;'W'
  1659.         jr Z,EDSMNUM
  1660.         DEC BC
  1661.         dec BC
  1662.         CP ssU;197;u
  1663.         jr Z,EDSMORN
  1664.         CP kE;'E'
  1665.         jr Z,EDSMNUM
  1666.         LD C,-32
  1667.         CP kT;'T'
  1668.         jr Z,EDSMNUM
  1669.         CP '0'
  1670.         jr Z,EDSM0
  1671.         CP '+'
  1672.         jr Z,EDsPLU
  1673.        SUB '0';1
  1674.        CP 9;8
  1675.         RET NC
  1676.        LD (OCT),A
  1677. EDSMOq  CALL PROCORN
  1678.         JP SHOLK
  1679. EsX=$+1
  1680. EDsPLU  LD A,0
  1681.         INC A
  1682.         RET Z
  1683.         CALL EsGadr
  1684.         PUSH HL
  1685.         POP IX
  1686.         LD L,(IX)
  1687.         ld H,(IX+1)
  1688.         CALL NEGHL
  1689.         JR EDSMNQ
  1690. EDSM0
  1691.         CALL EsGadr
  1692.         LD A,(EsX)
  1693.         INC A
  1694.         jr NZ,EDsNOI0
  1695.         INC L
  1696.         inc L
  1697.         LD A,(HL)
  1698.         AND #E0
  1699.         LD (HL),A
  1700.         JR EDsNOIQ
  1701. EDsNOI0 XOR A
  1702.         LD (HL),A
  1703.         INC L
  1704.         LD (HL),A
  1705.         JR EDSMKQ
  1706. EDSMNUM
  1707.         LD A,(EsX)
  1708.         INC A
  1709.         jr Z,EDSMNOI
  1710.         CALL EsGadr
  1711.         PUSH HL
  1712.         POP IX
  1713.         LD L,(IX)
  1714.         ld H,(IX+1)
  1715.         ADD HL,BC
  1716.         LD A,H
  1717.         OR A
  1718.         LD B,#F
  1719.         JP P,EDSMNOK
  1720.         CALL NEGHL
  1721.         LD A,H
  1722.         AND B
  1723.         LD H,A
  1724.         CALL NEGHL
  1725.         JR $+4
  1726. EDSMNOK  AND B
  1727.          LD H,A
  1728. EDSMNQ  LD (IX),L
  1729.         ld (IX+1),H
  1730. EDSMKQ  CALL EsPRNUM
  1731.         JP SHOLK
  1732. EDSMNOI
  1733.         CALL EsGadr
  1734.         INC L
  1735.         inc L
  1736.         LD A,(HL)
  1737.         SUB C
  1738.         XOR (HL)
  1739.         AND 31
  1740.         XOR (HL)
  1741.         LD (HL),A
  1742. EDsNOIQ CALL EsPRNOI
  1743.         JP SHOLK
  1744. EsGadr
  1745.         LD H,EDORbf/256
  1746.         ld A,(EsTOP)
  1747.         ld D,A
  1748. EsLIN=$+1
  1749.         LD A,0
  1750.         PUSH AF
  1751.         SUB D
  1752.         LD E,A
  1753.         POP AF
  1754.         ADD A,A
  1755.         add A,A
  1756.         LD L,A
  1757.         RET
  1758. ;3
  1759. PRSMLIN
  1760.         PUSH AF
  1761.         push AF
  1762.         LD D,1
  1763.         CALL toOO
  1764.         LD D,8
  1765.         POP AF
  1766.         ADD A,A
  1767.         add A,A
  1768.         LD HX,EDORbf/256
  1769.         ld LX,A
  1770.         LD A,(IX+1)
  1771.         OR A
  1772.         LD L,(IX)
  1773.         ld H,(IX+1)
  1774.         LD B,'+'
  1775.         CALL M,NEGHL-2
  1776.         LD A,'+'+'-'
  1777.         SUB B
  1778.         CALL PRADD
  1779.         INC D
  1780.         CALL toOOOO
  1781.         INC D
  1782.         inc D
  1783.         LD A,(IX+2)
  1784.         PUSH AF
  1785.         AND 31
  1786.         CALL toOO
  1787.         INC D
  1788.         inc D
  1789.         POP AF
  1790.         CALL PRTNE
  1791.         LD A,(IX+3)
  1792.         CALL PRVTN
  1793.         POP AF
  1794.         JP PRSMVOL
  1795. EsPRNUM
  1796.         CALL EsGadr
  1797.         LD D,8
  1798.         ld A,(HL)
  1799.         INC L
  1800.         LD H,(HL)
  1801.         ld L,A
  1802.         ld A,H
  1803.        RLA
  1804.         LD B,'-'
  1805.        jr NC,$+7
  1806.         LD B,'+'
  1807.         CALL NEGHL
  1808.         LD A,B
  1809.         CALL PRADD
  1810.         INC D
  1811.         JP toOOOO
  1812. EsPRNOI
  1813.         CALL EsGadr
  1814.         ADD A,2
  1815.         LD L,A
  1816.         ld D,#E
  1817.         ld A,(HL)
  1818.         AND 31
  1819.         JP toOO
  1820. TNEVTN
  1821.         LD H,EDORbf/256
  1822. TNEVTNl=$+1
  1823.         LD L,0
  1824. TNEVTNy=$+1
  1825.         LD DE,#1100
  1826.         LD A,(HL)
  1827.         INC HL
  1828.         LD B,(HL)
  1829.         PUSH BC
  1830.         CALL PRTNE
  1831.         POP AF
  1832.         JR PRVTN
  1833. PRTNE
  1834.         LD L,A
  1835.         ld H,'-'
  1836.         AND #80
  1837.         LD A,'T'
  1838.         jr Z,$+3
  1839.          LD A,H
  1840.         CALL PRADD
  1841.         INC D
  1842.         LD A,L
  1843.         AND 64
  1844.         LD A,'N'
  1845.         jr Z,$+3
  1846.          LD A,H
  1847.         CALL PRADD
  1848.         INC D
  1849.         LD A,L
  1850.         AND 32
  1851.         LD A,'E'
  1852.         jr Z,$+3
  1853.          LD A,H
  1854.         JP PRADD
  1855. PRVTN
  1856.         LD D,4
  1857.         ld C,A
  1858.         RLA
  1859.         LD A,'0'
  1860.         jr NC,PRVTN0
  1861.         BIT 6,C
  1862.         LD A,'-'
  1863.         jr Z,$+4
  1864.          LD A,'+'
  1865. PRVTN0  CALL PRADD
  1866.         LD A,32
  1867.         CALL PRVTNPP
  1868.         LD A,16
  1869. PRVTNPP AND C
  1870.         LD A,'0'
  1871.         jr Z,$+4
  1872.          LD A,'+'
  1873.         INC D
  1874.         JP PRADD
  1875. EsFITN
  1876.         LD B,32
  1877.         CP +(SMPX<<3)+#1C
  1878.         jr C,$+7
  1879. EsFIfN   LD B,16
  1880.          CP 64
  1881.          RET NC
  1882.         INC HL
  1883.         LD A,(HL)
  1884.         XOR B
  1885.         JR EsFIVTQ
  1886. EsFIx
  1887.         SBC A,A
  1888.         ex af,af'
  1889.        CALL GsMRK7
  1890.        LD A,(EsFIlin)
  1891.        ld (EsLIN),A
  1892.        ex af,af'
  1893.         LD (EsX),A
  1894.         CALL GsMRK56
  1895.         JP SHOLK
  1896. EsNfix
  1897.         CALL EDSMFIp
  1898.         XOR A
  1899.         JR EsFIfN
  1900. EsTfix
  1901.         CALL EDSMFIp
  1902.         XOR A
  1903.         JR EsFITN
  1904. EsAfix
  1905.         CALL EDSMFIp
  1906.         JR EsFIV
  1907. EsTi
  1908.         CALL EDSMFIp
  1909.         XOR A
  1910.         JR Es_T
  1911. EsNi
  1912.         CALL EDSMFIp
  1913.         XOR A
  1914.         JR Es_N
  1915. EsEi
  1916.         CALL EDSMFIp
  1917.         JR Es_E
  1918. EsFIVTN
  1919.         CP (SMPX<<3)+#38
  1920.         CCF
  1921.         jr C,EsFIx ;смещ.шума
  1922.         CP (SMPX<<3)+#28
  1923.         jr NC,EsFIx ;цикл
  1924.         CP (SMPX<<3)+#14
  1925.         RET C ;слева от VTN
  1926.         CP (SMPX<<3)+#18
  1927.         jr NC,EsFITN
  1928. EsFIV   INC HL
  1929.         LD A,(HL)
  1930.         ld C,A
  1931.         LD B,#80
  1932.         AND B
  1933.         jr NZ,$+6
  1934.          LD A,C
  1935.          OR B
  1936.          JR EsFIVTQ
  1937.         LD A,C
  1938.         XOR 64
  1939.         LD C,A
  1940.         AND 64
  1941.         LD A,C
  1942.         jr NZ,$+4
  1943.          AND 63
  1944. EsFIVTQ LD (HL),A
  1945.         JR EsFIQ
  1946. EDSMPFI
  1947.         LD HL,(ARXY)
  1948.         ld A,L
  1949.         SUB (SMPY+1)<<3;#38
  1950.         CP SMPH<<3
  1951.         RET NC
  1952.         RES 0,H
  1953.         res 1,H
  1954.         RRA
  1955.         RRA
  1956.         RRA
  1957.         AND #1F
  1958.         LD B,A
  1959.         CP 0
  1960.         LD ($-1),A
  1961.         LD A,H
  1962.         jr NZ,EDSMFIn
  1963. EDSMFIh=$+1
  1964.         CP 0
  1965. EDSMFIn LD ($-1),A
  1966.         RET Z
  1967.        CALL EDSMFIP
  1968.         CP (SMPX<<3)+#48
  1969.         jr C,EsFIVTN
  1970.         CP (SMPX<<3)+#54
  1971.         jr NC,EsFIVOL
  1972. Es_T    LD B,#80
  1973.         CP (SMPX<<3)+#4C
  1974.         jr C,EsFINUM
  1975. Es_N    LD B,64
  1976.         CP (SMPX<<3)+#50
  1977.         jr C,$+4
  1978. Es_E     LD B,32
  1979. EsFINUM LD A,(HL)
  1980.         XOR B
  1981.         LD (HL),A
  1982. EsFIQ   CALL TNEVTN
  1983.         JP SHOLK
  1984. EDSMFIp
  1985.         LD A,(EsLIN)
  1986.         ld HL,EsTOP
  1987.         SUB (HL)
  1988.         LD B,A
  1989. EDSMFIP LD A,(EsTOP)
  1990.         ADD A,B
  1991.         LD (EsFIlin),A
  1992.         ADD A,A
  1993.         add A,A
  1994.         add A,2
  1995.         LD L,A
  1996.         ld (TNEVTNl),A
  1997.         LD A,B
  1998. EDSpQ   LD (TNEVTNy),A
  1999.         LD A,H
  2000.         ld H,EDORbf/256
  2001.         RET
  2002. EsVOLi
  2003.         CALL EDSMFIp
  2004.         INC HL
  2005.         LD A,(HL)
  2006.         INC A
  2007.         JR EsVOLQ
  2008. EsVOLd
  2009.         CALL EDSMFIp
  2010.         INC HL
  2011.         LD A,(HL)
  2012.         DEC A
  2013.         JR EsVOLQ
  2014. EsFIVOL
  2015.         SUB (SMPX<<3)+#54
  2016.         CP #40
  2017.         RET NC
  2018.         RRA
  2019.         RRA
  2020.         INC HL
  2021. EsVOLQ  AND #F
  2022.         LD E,A
  2023.         ld A,(HL)
  2024.         AND #F0
  2025.         OR E
  2026.         LD (HL),A
  2027.         LD A,(TNEVTNy)
  2028.         ld E,A
  2029. EsFIlin=$+1
  2030.         LD A,0
  2031.         CALL PRSMVOL
  2032.         JP SHOLK
  2033. EDsSCUP
  2034.         LD DE,+((SMPATR&#300)<<3)+(SMPATR&0xff)+#4001+SMPX
  2035.         LD HL,+(((SMPATR+32)&#300)<<3)+((SMPATR+32)&0xff)+#4001+SMPX
  2036.         LD A,+(SMPH<<3)-8
  2037. EDsSCU0
  2038.         CALL EDsLDI
  2039.         CALL DHL
  2040.         call DDE
  2041.         ex af,af'
  2042.        jr NZ,EDsSCU0
  2043.        RET
  2044. EDsSCDN
  2045.        LD DE,+((SMPBOT&#300)<<3)+(SMPBOT&0xff)+#4001+SMPX
  2046.        LD HL,+(((SMPBOT-32)&#300)<<3)+((SMPBOT-32)&0xff)+#4001+SMPX
  2047.        LD A,+(SMPH<<3)-8
  2048. EDsSCD0
  2049.        CALL EDsLDI
  2050.        CALL UHL
  2051.        call UDE
  2052.        ex af,af'
  2053.         jr NZ,EDsSCD0
  2054.         RET
  2055. EDsLDI
  2056.         DEC A
  2057.         ex af,af'
  2058.        LD BC,19
  2059.        PUSH HL
  2060.        push DE
  2061.        LDIR
  2062.        POP DE
  2063.        pop HL
  2064.        RET
  2065. EDsUP
  2066.        cp key_up ;DEC A
  2067.        RET NZ
  2068.        CALL GsMRK7
  2069.        LD A,(EsLIN)
  2070.        DEC A
  2071.        JP M,EDsCQ
  2072.        LD B,A
  2073.        ld A,(EsTOP)
  2074.        ld C,A
  2075.        DEC A
  2076.        CP B
  2077.        jr NZ,EDsUQ
  2078.        PUSH BC
  2079.        CALL EDsSCDN
  2080.        POP BC
  2081.        LD A,C
  2082.        DEC A
  2083.        LD (EsTOP),A
  2084.        PUSH BC
  2085.        LD E,0
  2086.        CALL PRSMLIN
  2087.        POP BC
  2088. EDsUQ   LD A,B
  2089.        ld (EsLIN),A
  2090.        JR EDsCQ
  2091. EDsLR
  2092.        CALL GsMRK7
  2093.        LD HL,EsX
  2094.        ld A,(HL)
  2095.        CPL
  2096.        LD (HL),A
  2097. EDsCQ   CALL GsMRK56
  2098.        JP SHOLK
  2099. EDSMCUR
  2100.        CALL BIT5
  2101.        RET Z
  2102.        CP kA;'A'
  2103.       JP Z,EsAfix
  2104.        CP '9'
  2105.       JP Z,EsTfix
  2106.        CP kF;'F'
  2107.       JP Z,EsNfix
  2108.        CP ')'
  2109.       JP Z,EsVOLi
  2110.        CP '('
  2111.       JP Z,EsVOLd
  2112.        CP kIns
  2113.       jr Z,EDsINS
  2114.        CP kDelLn
  2115.       JP Z,EDsDELLN
  2116.        CP kKpos;'K'
  2117.       JP Z,EDsBEG
  2118.        CP kLpos;'L'
  2119.       JP Z,EDsEND
  2120.        CP kY;'Y'
  2121.       JP Z,EsTi
  2122.        CP kU;'U'
  2123.       JP Z,EsNi
  2124.        CP kI;'I'
  2125.       JP Z,EsEi
  2126.      ; SUB 4
  2127.      ; JZ EDsTRU
  2128.      ; DEC A
  2129.      ; JP Z,EDsINV
  2130.        cp key_left ;SUB 3+5
  2131.        jr Z,EDsLR
  2132.        cp key_right ;DEC A
  2133.        jr Z,EDsLR
  2134.        cp key_down ;DEC A
  2135.        JP NZ,EDsUP
  2136.        CALL GsMRK7
  2137.        LD A,(EsLIN)
  2138.        INC A
  2139.        AND 63
  2140.        jr Z,EDsCQ
  2141.        LD BC,(EsTOP)
  2142.        ld B,A
  2143.        SUB C
  2144.        CP SMPH
  2145.        jr NZ,EDsDQ
  2146.        PUSH BC
  2147.        CALL EDsSCUP
  2148.        POP BC
  2149.        LD A,C
  2150.        INC A
  2151.        LD (EsTOP),A
  2152.        PUSH BC
  2153.        LD E,SMPH-1
  2154.        ADD A,E
  2155.        CALL PRSMLIN
  2156.        POP BC
  2157. EDsDQ   LD A,B
  2158.        ld (EsLIN),A
  2159.        JP EDsCQ
  2160.       IF 0
  2161. EDsTRU
  2162.        CALL GsMRK7
  2163.        LD HL,EsLIN
  2164.        ld A,(HL)
  2165.        SUB SMPH
  2166.        LD (HL),A
  2167.        LD DE,EsTOP
  2168.        ld A,(DE)
  2169.        SUB SMPH
  2170.        jr NC,$+4
  2171.         XOR A
  2172.         LD (HL),A
  2173.        JR EDsInE
  2174.       ENDIF
  2175. EDsINS
  2176.        CALL EsGadr
  2177.        LD A,-4
  2178.        SUB L
  2179.        RET Z
  2180.        LD L,-5
  2181.        ld D,H
  2182.        ld E,-1
  2183.        ld B,0
  2184.        ld C,A
  2185.        LDDR
  2186.       INC L
  2187.       SRL L,L
  2188.        LD DE,EsLOOP
  2189.        CALL incCOR
  2190.       jr Z,$+4
  2191.       jr NC,EDsINVQ
  2192.        ex de,hl
  2193.        INC HL
  2194.       DEC A
  2195.        ADD A,(HL)
  2196.        CP E
  2197.        jr C,EDsINVQ
  2198.        CP 63
  2199.        jr NC,$+3
  2200.         INC (HL)
  2201.        JR EDsINVQ
  2202. EDsDELLN
  2203.        CALL EsGadr
  2204.        LD D,H
  2205.        ld A,L
  2206.        ADD A,4
  2207.        LD E,A
  2208.        ex de,hl
  2209.        XOR A
  2210.        LD B,A
  2211.        SUB L
  2212.        RET Z
  2213.        LD C,A
  2214.       LD A,L
  2215.        LDIR
  2216.       LD L,A
  2217.       SRL L
  2218.       srl L
  2219.        LD DE,EsLOOP
  2220.        CALL decCOR
  2221.       jr NC,EDsINVQ
  2222.        ex de,hl
  2223.        INC HL
  2224.        ADD A,(HL)
  2225.        CP E
  2226.        jr C,$+3
  2227.         DEC (HL)
  2228.       IF 0
  2229.        JR EDsINVQ
  2230. EDsINV
  2231.        CALL GsMRK7
  2232.        LD HL,EsLIN
  2233.        ld A,(HL)
  2234.        ADD A,SMPH
  2235.        LD (HL),A
  2236.        ld DE,EsTOP
  2237.        ld A,(DE)
  2238.        ADD A,SMPH
  2239.        CP 65-SMPH
  2240.        jr C,EDsInE
  2241.        LD (HL),63
  2242.        LD A,64-SMPH
  2243. EDsInE  LD (DE),A
  2244.       ENDIF
  2245. EDsINVQ CALL SHOLK
  2246.        CALL PRSMP
  2247. GsMRK56
  2248.        LD E,56
  2249.        JR GsmpMRK
  2250. GsMRK7
  2251.        LD E,7
  2252. GsmpMRK
  2253.        LD A,(EsLIN)
  2254. EsTOP=$+1
  2255.        SUB 0
  2256.        ADD A,A
  2257.        add A,A
  2258.        add A,A
  2259.        LD L,A
  2260.        ld H,0
  2261.        ld BC,SMPATR;#58E4
  2262.        ADD HL,HL
  2263.        add HL,HL
  2264.        add HL,BC
  2265.        LD A,(EsX)
  2266.        OR A
  2267.        LD A,5
  2268.        jr Z,$+4
  2269.         LD A,7
  2270.        ADD A,L
  2271.        LD L,A
  2272.        LD (HL),E
  2273.        INC L
  2274.        LD (HL),E
  2275.        RET
  2276. PRORNos
  2277.       LD A,(OCT)
  2278.       ADD A,'0'
  2279.        LD DE,#E11
  2280.        CALL PRADD
  2281.        LD A,(EoSMP)
  2282.        CALL HEXDIG
  2283.        LD D,#18
  2284.        JP PRADD
  2285. PROCORN
  2286.       LD A,(OCT)
  2287.       ADD A,'0'
  2288.        LD DE,#1000+SMPH
  2289.        CALL PRADD
  2290.        LD A,(EsORN)
  2291.        CALL HEXDIG
  2292.        LD D,#1C
  2293.        JP PRADD
  2294. PRSMP
  2295.        LD E,0
  2296.        LD A,(EsTOP)
  2297.        ADD A,SMPH
  2298.        LD (PRSMPe),A
  2299.        SUB SMPH
  2300. PRSMP0  PUSH AF
  2301.        push DE
  2302.        CALL PRSMLIN
  2303.        POP DE
  2304.        pop AF
  2305.        INC E,A
  2306. PRSMPe=$+1
  2307.        CP 0
  2308.        jr NZ,PRSMP0
  2309.        RET
  2310. PRSMVOL
  2311.        PUSH DE,AF
  2312.        CALL PRADDPP
  2313.        LD D,11+SMPX
  2314.        CALL DE2SCR
  2315.        INC H
  2316.        ex de,hl
  2317.        LD H,EDORbf/256
  2318.        POP AF
  2319.        ADD A,A
  2320.        add A,A
  2321.        add A,3
  2322.        LD L,A
  2323.        ld A,(HL)
  2324.        AND #F
  2325.        LD (PRSMVa),A
  2326.        ex de,hl
  2327.        PUSH AF
  2328.        push HL
  2329.        LD A,#22
  2330.        ld B,7
  2331.        CALL BLOBER
  2332.        INC L
  2333.        DJNZ $-4
  2334.        LD A,#20
  2335.        CALL BLOBER
  2336.        POP HL
  2337.        pop AF
  2338.        LD E,A
  2339.        RRA
  2340.        PUSH AF
  2341.        AND 7
  2342.        jr Z,PRVOL7
  2343.        LD B,A
  2344.        ld A,#77
  2345. PRVOL0  LD D,H
  2346.       DUP 5
  2347.        LD (HL),A
  2348.        INC H
  2349.       EDUP
  2350.        LD (HL),A
  2351.        ld H,D
  2352.        INC L
  2353.        DJNZ PRVOL0
  2354. PRVOL7  LD A,E
  2355.        CP #F
  2356.        LD E,#72
  2357.        jr NZ,$+4
  2358.        LD E,#70
  2359.        POP AF
  2360.        LD A,E
  2361.        CALL C,BLOBER7
  2362. PRSMVa=$+1
  2363.        LD A,0
  2364.        POP DE
  2365.        LD D,#25
  2366.        JP D2HEX
  2367.