Subversion Repositories ngs

Rev

Blame | Last modification | View Log | Download | RSS feed | ?url?

  1.  
  2. ;LAST UPDATE: 08.12.2009 savelij
  3.  
  4. KEYS    EI
  5.         HALT
  6.         DI
  7.         BIT 5,(IY+1)
  8.         JR Z,KEYS
  9.         LD A,(IY-0X32)
  10.         RES 5,(IY+1)
  11.         RET
  12.  
  13. VCURS   PUSH AF
  14.         LD A,(CURSOR)
  15.         LD B,A
  16.         ADD A,A
  17.         ADD A,B
  18.         ADD A,A
  19.         LD B,A
  20.         LD A,(BUFFE+2)
  21.         ADD A,B
  22.         PUSH AF
  23.         LD DE,BUFTSC
  24.         LD HL,(BUFFE+1)
  25.         LD H,0
  26.         ADD HL,HL
  27.         ADD HL,DE
  28.         LD E,(HL)
  29.         INC HL
  30.         LD D,(HL)
  31.         RRCA
  32.         RRCA
  33.         RRCA
  34.         AND 0X1F
  35.         ADD A,E
  36.         LD L,A
  37.         LD H,D
  38.         POP AF
  39.         AND 7
  40.         LD B,A
  41.         LD A,0X80
  42.         JR Z,$+5
  43.         RRCA
  44.         DJNZ $-1
  45.         LD B,8
  46.         LD C,A
  47.         LD A,C
  48.         XOR (HL)
  49.         LD (HL),A
  50.         INC H
  51.         DJNZ $-4
  52.         POP AF
  53.         RET
  54.  
  55. ZADER   LD A,15
  56.         DEC A
  57.         LD (ZADER+1),A
  58.         RET NZ
  59.         LD A,15
  60.         LD (ZADER+1),A
  61.         JP VCURS
  62.  
  63. INPUTT  LD (BUFFE+1),HL
  64.         LD (LENGHT),A
  65.         LD L,A
  66.         INC A
  67.         LD (PRIBUF+1),A
  68.         PUSH HL
  69.         XOR A
  70.         LD HL,BUFFER
  71.         LD E,L
  72.         LD D,H
  73.         INC DE
  74.         LD BC,39
  75.         LD (HL),A
  76.         LDIR
  77.         SET 3,(IY+48)
  78.         POP HL
  79.         LD (CURSOR),A
  80.         LD H,A
  81.         LD DE,BUFFER
  82.         ADD HL,DE
  83.         LD (BUFEND),HL
  84.         LD A,(LENGHT)
  85.         LD B,A
  86.         LD HL,BUFFER
  87. CLEAR   LD (HL),0X20
  88.         INC HL
  89.         DJNZ CLEAR
  90. ACCEPT  LD HL,BUFFE
  91.         CALL PRIBUF
  92. GETKEY  CALL VCURS
  93.         CALL KEYS
  94.         CALL VCURS
  95.         CP 7
  96.         RET Z
  97. ;       CP 6
  98. ;       JR C,GETKEY
  99.         CP 0X0D
  100.         JP Z,ENTER
  101.         CP 8
  102.         JR Z,CRLEFT
  103.         CP 9
  104.         JR Z,CRRIGT
  105.         CP 0X0C
  106.         JR Z,DELETE
  107. ;       CP 0X0F
  108. ;       JP Z,INSOVR
  109.         CP 0X06
  110.         JP Z,CAPSLK
  111.         CP 0X21
  112.         JR C,GETKEY
  113.         CP 0X80
  114.         JR NC,GETKEY
  115.         LD E,A
  116.         LD A,(CURSOR)
  117.         LD B,A
  118.         LD A,(LENGHT)
  119.         SUB B
  120.         JR Z,GETKEY
  121.         LD C,A
  122.         LD A,B
  123.         INC A
  124.         LD (CURSOR),A
  125.         LD A,E
  126.         LD HL,(BUFEND)
  127.         LD D,H
  128.         LD E,L
  129.         BIT 6,(IY+48)
  130.         JR NZ,$+3
  131.         DEC HL
  132.         LD B,0
  133.         LDDR
  134.         LD (DE),A
  135.         JR ACCEPT
  136.  
  137. CRLEFT  LD A,(CURSOR)
  138.         AND A
  139.         JR Z,GETKEY
  140.         DEC A
  141.         LD (CURSOR),A
  142.         JP ACCEPT
  143.  
  144. CRRIGT  LD A,(LENGHT)
  145.         LD C,A
  146.         LD A,(CURSOR)
  147.         CP C
  148.         JP Z,GETKEY
  149.         INC A
  150.         LD (CURSOR),A
  151.         JP ACCEPT
  152. DELETE  LD A,(CURSOR)
  153.         AND A
  154.         JP Z,GETKEY
  155.         LD E,A
  156.         LD A,(LENGHT)
  157.         SUB E
  158.         INC A
  159.         LD C,A
  160.         LD A,E
  161.         DEC A
  162.         LD (CURSOR),A
  163.         LD HL,BUFFER
  164.         LD D,0
  165.         ADD HL,DE
  166.         LD D,H
  167.         LD E,L
  168.         DEC DE
  169.         LD B,0
  170.         LDIR
  171.         LD A,0X20
  172.         LD (DE),A
  173.         JP ACCEPT
  174.  
  175. INSOVR  LD A,0X40
  176.         XOR (IY+48)
  177.         LD (IY+48),A
  178.         JP ACCEPT
  179.  
  180. CAPSLK  LD A,8
  181.         XOR (IY+48)
  182.         LD (IY+48),A
  183.         JP ACCEPT
  184.  
  185. ENTER   LD DE,BUFFER
  186.         LD HL,BUFEND-1
  187. CLEAN   LD A,(HL)
  188.         CP 0X21
  189.         JR NC,ENDEDIT
  190.         LD (HL),0
  191.         DEC HL
  192.         JR CLEAN
  193.  
  194. ENDEDIT XOR A
  195.         LD HL,BUFFER
  196.         RET
  197.  
  198. BUFFE   DB 0X16,0,0
  199. BUFFER  DS 40
  200. BUFEND  DW 0
  201. CURSOR  DB 0
  202. LETTER  DB 0
  203. LENGHT  DB 0
  204.  
  205. MOVI    LD DE,BUFFER
  206.         EX DE,HL
  207.         LD B,0
  208.         LDIR
  209.         EX DE,HL
  210.         RET
  211.  
  212. PRIBUF  LD B,0
  213.         LD A,(HL)
  214.         INC HL
  215.         PUSH BC
  216.         CALL PRINT
  217.         POP BC
  218.         DJNZ PRIBUF+2
  219.         RET
  220.  
  221. ADRTSC  LD B,0X18
  222.         LD DE,0X4000
  223.         LD HL,BUFTSC
  224.         LD C,8
  225.         LD (HL),E
  226.         INC HL
  227.         LD (HL),D
  228.         INC HL
  229.         INC D
  230.         DEC C
  231.         JR NZ,$-6
  232.         LD A,0X20
  233.         ADD A,E
  234.         LD E,A
  235.         JR C,$+6
  236.         LD A,D
  237.         SUB 8
  238.         LD D,A
  239.         DJNZ $-20
  240.         RET
  241.  
  242. WTABL   LD L,(IX+6)
  243.         LD H,(IX+7)
  244.         ADD A,A
  245.         LD D,0
  246.         LD E,A
  247.         ADD HL,DE
  248.         LD E,(HL)
  249.         INC HL
  250.         LD D,(HL)
  251.         EX DE,HL
  252.         LD A,L
  253.         OR H
  254.         RET Z
  255.         JP (HL)
  256.  
  257. CLS     LD HL,0X4000
  258.         LD E,L
  259.         LD D,H
  260.         LD (HL),L
  261.         INC E
  262.         LD BC,0X1800
  263.         LDIR
  264. CLSCLR  LD (0X5C8D),A
  265.         LD (0X5C48),A
  266.         LD HL,0X5800
  267.         LD D,H
  268.         LD E,L
  269.         LD (HL),A
  270.         LD BC,0X02FF
  271.         INC E
  272.         LDIR
  273.         RRCA
  274.         RRCA
  275.         RRCA
  276.         AND 7
  277.         OUT (0XFE),A
  278.         RET
  279.  
  280. INWERT  LD A,(IX)
  281.         INC IX
  282.         ADD A,C
  283.         LD L,A
  284.         LD H,(IX)
  285.         INC IX
  286.         LD D,H
  287.         LD E,L
  288.         INC E
  289.         LD (HL),0XFF
  290.         PUSH BC
  291.         CALL LDIST
  292.         POP BC
  293.         DJNZ INWERT
  294.         RET
  295.  
  296. ;X-L,Y-H,H-B,V-C
  297. WINOUT  PUSH HL
  298.         PUSH BC
  299.         PUSH IX
  300.         PUSH AF
  301.         LD A,0X22
  302.         SUB B
  303.         ADD A,A
  304.         LD (LDIST+1),A
  305.                         PUSH BC
  306.         LD A,C
  307.         RLCA
  308.         RLCA
  309.         RLCA
  310.         DEC A
  311.         DEC A
  312.         LD B,A
  313.         LD IX,BUFTSC
  314.         EX DE,HL
  315.         LD L,D
  316.         LD H,0
  317.         ADD HL,HL
  318.         ADD HL,HL
  319.         ADD HL,HL
  320.         ADD HL,HL
  321.         EX DE,HL
  322.         ADD IX,DE
  323.                         PUSH IX
  324.         LD C,L
  325. POWT1   INC IX
  326.         INC IX
  327.         LD E,(IX)
  328.         LD D,(IX+1)
  329.         LD A,C
  330.         ADD A,E
  331.         LD E,A
  332.         EX DE,HL
  333.         LD (HL),0X80
  334. RAMK0   EQU $-1
  335.         INC HL
  336.         LD (HL),0
  337.         LD D,H
  338.         LD E,L
  339.         INC E
  340.                         PUSH BC
  341.         CALL LDIST
  342.                         POP BC
  343.         LD (HL),1
  344. RAMK1   EQU $-1
  345.         DJNZ POWT1
  346.         LD E,(IX)
  347.         LD D,(IX+1)
  348.         INC D
  349.         LD A,C
  350.         ADD A,E
  351.         LD E,A
  352.         EX DE,HL
  353.         LD (HL),0XFF
  354. RAMK2   EQU $-1
  355.         LD D,H
  356.         LD E,L
  357.         INC E
  358.                         PUSH BC
  359.         CALL LDIST
  360.         LDI
  361.                         POP BC
  362.                         POP IX
  363.         LD E,(IX)
  364.         LD D,(IX+1)
  365.         LD A,C
  366.         ADD A,E
  367.         LD E,A
  368.         EX DE,HL
  369.         LD (HL),0XFF
  370. RAMK3   EQU $-1
  371.         LD D,H
  372.         LD E,L
  373.         INC E
  374.                         PUSH BC
  375.         CALL LDIST
  376.         LDI
  377.                         POP BC
  378.         LD A,(IX)
  379.         ADD A,C
  380.         LD E,A
  381.         LD A,(IX+1)
  382.         RRA
  383.         RRA
  384.         RRA
  385.         AND 0X0F
  386.         OR 0X50
  387.         LD D,A
  388.         EX DE,HL
  389.                         POP DE
  390.         LD B,E
  391.                         POP AF
  392. POWT2   PUSH HL
  393.         LD D,H
  394.         LD E,L
  395.         INC E
  396.         LD (HL),A
  397.                         PUSH BC
  398.         CALL LDIST
  399.         LDI
  400.                         POP BC
  401.                         POP HL
  402.         LD DE,0X20
  403.         ADD HL,DE
  404.         DJNZ POWT2
  405.         POP IX
  406.         POP BC
  407.         POP HL
  408.         RET
  409.  
  410. WINW    BIT 6,(IX+8)
  411.         LD HL,0X8001
  412.         LD B,0XFF
  413.         JR Z,WINW1
  414.         LD HL,0
  415.         LD B,L
  416. WINW1   LD A,H
  417.         LD (RAMK0),A
  418.         LD A,L
  419.         LD (RAMK1),A
  420.         LD A,B
  421.         LD (RAMK3),A
  422.         LD (RAMK2),A
  423.         LD L,(IX+0)
  424.         LD H,(IX+1)
  425.         LD C,(IX+2)
  426.         LD B,(IX+3)
  427.         LD A,(IX+4)
  428.         CALL WINOUT
  429.         BIT 5,(IX+8)
  430.         JR Z,W_NIZ
  431.         LD HL,LDIST+1
  432.         DEC (HL)
  433.         DEC (HL)
  434.         PUSH IX
  435.         LD C,(IX)
  436.         LD B,8
  437.         LD L,(IX+1)
  438.         LD H,0
  439.         LD IX,BUFTSC
  440.         ADD HL,HL
  441.         ADD HL,HL
  442.         ADD HL,HL
  443.         ADD HL,HL
  444.         EX DE,HL
  445.         ADD IX,DE
  446.         CALL INWERT
  447.         POP IX
  448. W_NIZ   BIT 7,(IX+8)
  449.         JR Z,RASCH
  450.         PUSH IX
  451.         LD C,(IX)
  452.         LD B,8
  453.         LD A,(IX+1)
  454.         ADD A,(IX+2)
  455.         DEC A
  456.         LD L,A
  457.         LD H,0
  458.         ADD HL,HL
  459.         ADD HL,HL
  460.         ADD HL,HL
  461.         ADD HL,HL
  462.         LD IX,BUFTSC
  463.         EX DE,HL
  464.         ADD IX,DE
  465.         CALL INWERT
  466.         POP IX
  467. RASCH   LD A,(IX)
  468.         ADD A,A
  469.         ADD A,A
  470.         ADD A,A
  471.         INC A
  472.         LD D,A
  473.         LD (XNEW+1),A
  474.         LD (EX2+1),A
  475.         LD A,(IX+1)
  476.         ADD A,A
  477.         ADD A,A
  478.         ADD A,A
  479.         LD E,A
  480.         LD (ADRSTR+1),DE
  481.         LD A,(IX+3)
  482.         ADD A,A
  483.         ADD A,A
  484.         ADD A,A
  485.         LD (EX1+1),A
  486.         BIT 4,(IX+8)
  487.         RET NZ
  488.         LD L,(IX+13)
  489.         LD H,(IX+14)
  490.         JP NEXT
  491.  
  492. SCRUP   PUSH BC
  493.         PUSH IX
  494.         LD L,(IX+1)
  495.         INC L
  496.         CALL USTAN
  497.         LD A,(IX+0X10)
  498.         ADD A,C
  499.         LD L,A
  500.         LD H,(IX+0X11)
  501.         LD A,(IX)
  502.         ADD A,C
  503.         LD E,A
  504.         LD D,(IX+1)
  505.         CALL SHIFT
  506.         LD DE,0X10
  507.         ADD IX,DE
  508.         DJNZ $-24
  509.         POP IX
  510.         POP BC
  511.         RET
  512.  
  513. SCRDN   PUSH BC
  514.         PUSH IX
  515.         LD A,(IX+2)
  516.         ADD A,(IX+1)
  517.         SUB 3
  518.         LD L,A
  519.         CALL USTAN
  520.         LD A,(IX)
  521.         ADD A,C
  522.         LD L,A
  523.         LD H,(IX+1)
  524.         LD A,(IX+0X10)
  525.         ADD A,C
  526.         LD E,A
  527.         LD D,(IX+0X11)
  528.         CALL SHIFT
  529.         LD DE,0XFFF0
  530.         ADD IX,DE
  531.         DJNZ $-24
  532.         POP IX
  533.         POP BC
  534.         RET
  535.  
  536. SHIFT   PUSH BC
  537.         REPT 8
  538.         PUSH HL
  539.         PUSH DE
  540.         CALL LDIST
  541.         POP DE
  542.         POP HL
  543.         INC H
  544.         INC D
  545.         ENDM
  546.         POP BC
  547.         RET
  548.  
  549. LDIST   JR $
  550.         REPT 32
  551.         LDI
  552.         ENDM
  553.         RET
  554.  
  555. USTAN   LD A,0X20
  556.         SUB (IX+3)
  557.         ADD A,A
  558.         LD (LDIST+1),A
  559.         LD C,(IX)               ;СМЕЩЕНИЕ ПО X
  560.         LD B,(IX+2)             ;ВЫСОТА В ЗНАКОМЕСТАХ
  561.         DEC B
  562.         DEC B
  563.         DEC B
  564.         LD H,0
  565.         ADD HL,HL
  566.         ADD HL,HL
  567.         ADD HL,HL
  568.         LD IX,BUFTSC
  569.         EX DE,HL
  570.         ADD IX,DE
  571.         ADD IX,DE
  572.         RET
  573.  
  574. ADRDIS  LD (ASD+1),A
  575.         LD A,L
  576.         AND 0X18
  577.         OR 0X40
  578.         EX AF,AF'
  579.         LD A,L
  580.         AND 7
  581.         RRCA
  582.         RRCA
  583.         RRCA
  584.         ADD A,H
  585.         LD L,A
  586.         EX AF,AF'
  587.         LD H,A
  588.         LD E,L
  589. ADRATR  LD A,H
  590.         RRCA
  591.         RRCA
  592.         RRCA
  593.         AND 3
  594.         OR 0X58
  595.         LD D,A
  596. ASD     LD A,0
  597.         RET
  598.  
  599. INCHL   INC H
  600.         LD A,H
  601.         AND 7
  602.         RET NZ
  603.         LD A,L
  604.         ADD A,0X20
  605.         LD L,A
  606.         RET C
  607. UMEHL1  LD A,H
  608.         SUB 8
  609.         LD H,A
  610.         RET
  611.  
  612. DECHL   DEC H
  613.         LD A,H
  614.         AND 7
  615.         CP 7
  616.         RET NZ
  617.         LD A,L
  618.         SUB 0X20
  619.         LD L,A
  620.         RET C
  621. UVEHL1  LD A,H
  622.         ADD A,8
  623.         LD H,A
  624.         RET
  625.  
  626. UVEHL   LD A,0X20
  627.         ADD A,L
  628.         LD L,A
  629.         RET NC
  630.         JR UVEHL1
  631.  
  632. UMEHL   LD A,L
  633.         SUB 0X20
  634.         LD L,A
  635.         RET NC
  636.         JR UMEHL1
  637.  
  638. NEXT    LD A,(HL)
  639.         INC HL
  640.         AND A
  641.         RET Z
  642.         CALL PRINT
  643.         JR NEXT
  644.  
  645. PRINT   CP 0X20
  646.         JR NC,PRINTA
  647.         CP 3
  648.         JR NZ,COD9
  649. CENTR   LD B,0          ;ЦЕНТРОВКА СТРОКИ В ОКНЕ
  650.         PUSH HL
  651. CEN2    LD A,(HL)
  652.         CP 0X20
  653.         JR C,EX1
  654.         LD A,6
  655.         ADD A,B
  656.         LD B,A
  657.         INC HL
  658.         JR CEN2
  659.  
  660. EX1     LD A,0
  661.         SUB B
  662.         SRL A
  663.         DEC A
  664. EX2     ADD A,0
  665.         LD (ADRSTR+2),A
  666.         POP HL
  667.         RET
  668.  
  669. COD9    CP 9
  670.         JR NZ,COD13
  671.         LD A,(HL)               ;ТАБУЛЯЦИЯ НА N ПОЗИЦИЙ
  672.         INC HL
  673.         LD B,A
  674.         ADD A,A
  675.         ADD A,B
  676.         ADD A,A
  677.         LD B,A
  678.         LD A,(ADRSTR+2)
  679.         ADD A,B
  680.         LD (ADRSTR+2),A
  681.         RET
  682.  
  683. COD13   CP 0X0D
  684.         JR NZ,COD14
  685. XNEW    LD A,0                  ;ПЕРЕВОД СТРОКИ
  686.         LD (ADRSTR+2),A
  687.         LD A,(ADRSTR+1)
  688.         ADD A,8
  689.         LD (ADRSTR+1),A
  690.         RET
  691.  
  692. COD14   CP 0X14
  693.         JR NZ,COD16
  694.         LD A,(HL)               ;ВКЛ/ВЫКЛ ИНВЕРСИИ ПЕЧАТИ
  695.         INC HL
  696.         AND A
  697.         JR Z,$+4
  698.         LD A,0XFC
  699.         LD (NO_INW+1),A
  700.         RET
  701.  
  702. COD16   CP 0X16
  703.         RET NZ
  704.         LD E,(HL)               ;ПЕЧАТЬ В УКАЗАННОЙ ПОЗИЦИИ
  705.         INC HL
  706.         LD D,(HL)
  707.         INC HL
  708.         LD (ADRSTR+1),DE
  709.         RET
  710.  
  711. ;ПЕЧАТЬ СИМВОЛА В "A"
  712. PRINTA  PUSH HL
  713.         PUSH DE
  714.         LD DE,CHARS
  715.         LD L,A
  716.         XOR A
  717.         LD H,A
  718.         ADD HL,HL
  719.         ADD HL,HL
  720.         ADD HL,HL
  721.         ADD HL,DE
  722.         EXX
  723. ADRSTR  LD HL,0                 ;H=X L=Y
  724.         LD D,A
  725.         LD A,H
  726.         AND 0XF8
  727.         LD B,A
  728.         LD A,H
  729.         AND 7
  730.         LD C,A
  731.         LD A,6
  732.         ADD A,H
  733.         LD H,A
  734.         LD (ADRSTR+1),HL
  735.         LD E,L
  736.         LD A,B
  737.         LD HL,BUFTSC
  738.         LD B,D
  739.         ADD HL,DE
  740.         ADD HL,DE
  741.         RRCA
  742.         RRCA
  743.         RRCA
  744.         ADD A,(HL)
  745.         INC HL
  746.         LD E,A
  747.         LD D,(HL)
  748.         LD A,21
  749.         SUB C
  750.         SUB C
  751.         SUB C
  752.         LD (SKOLKO+1),A
  753.         LD HL,BUFMSK
  754.         ADD HL,BC
  755.         ADD HL,BC
  756.         LD A,(HL)
  757.         INC HL
  758.         LD H,(HL)
  759.         LD L,A
  760.         EX DE,HL
  761.         LD A,8
  762. SLEDU   EX AF,AF'
  763.         EXX
  764.         LD A,(HL)
  765.         INC HL
  766.         EXX
  767. NO_INW  XOR 0
  768.         LD C,A
  769.         XOR A
  770. SKOLKO  JR $+21
  771.         REPT 7
  772.         SRL C   ;8
  773.         RRA     ;4
  774.         ENDM
  775.         LD B,A
  776.         LD A,(HL)
  777.         AND E
  778.         OR C
  779.         LD (HL),A
  780.         INC L
  781.         LD A,(HL)
  782.         AND D
  783.         OR B
  784.         LD (HL),A
  785.         DEC L
  786.         INC H
  787.         EX AF,AF'
  788.         DEC A
  789.         JP NZ,SLEDU
  790.         EXX
  791.         POP DE
  792.         POP HL
  793.         RET
  794.  
  795. BUFMSK  DB 0X03,0XFF
  796.         DB 0X81,0XFF
  797.         DB 0XC0,0XFF
  798.         DB 0XE0,0X7F
  799.         DB 0XF0,0X3F
  800.         DB 0XF8,0X1F
  801.         DB 0XFC,0X0F
  802.         DB 0XFE,0X07
  803.  
  804. ;KOI2ALT DB 0XCF,0XD0,0XD1,0XB5,0XB6,0XB7,0XB8
  805. ;DB 0XD2,0XD3,0XD4,0XD5,0XBD,0XBE,0XC6
  806. ;DB 0XC7,0XD6,0XC9,0XBB,0XBC,0XC8,0XCD
  807. ;DB 0XBA,0XCB,0XB9,0XCA,0XCC,0XCE,0XB0
  808. ;DB 0XB1,0XB2,0XD7,0XD8,0XDA,0XBF,0XD9
  809. ;DB 0XDA,0XC4,0XB3,0XC2,0XB4,0XC1,0XC3
  810. ;DB 0XC5,0XDB,0XDC,0XDD,0XDE,0XDF
  811. ;DB 0X80,0X81,0X82,0X83,0X84,0X85,0X86
  812. ;DB 0X87,0X88,0X89,0X8A,0X8B,0X8C,0X8D
  813. ;DB 0X8E,0X8F,0X90,0X91,0X92,0X93,0X94
  814. ;DB 0X95,0X96,0X97,0X98,0X99,0X9A,0X9B
  815. ;DB 0X9C,0X9D,0X9E,0X9F,0XA0,0XA1,0XA2
  816. ;DB 0XA3,0XA4,0XA5,0XA6,0XA7,0XA8,0XA9
  817. ;DB 0XAA,0XAB,0XAC,0XAD,0XAE,0XAF,0XE0
  818. ;DB 0XE1,0XE2,0XE3,0XE4,0XE5,0XE6,0XE7
  819. ;DB 0XE8,0XE9,0XEA,0XEB,0XEC,0XED,0XEE
  820. ;DB 0XEF,0XF0,0XF1,0XF2,0XF3,0XF4,0XF5
  821. ;DB 0XF6,0XF7,0XF8,0XF9,0XFA,0XFB,0XFC
  822. ;DB 0XFD,0XFE,0XFF
  823. ;ALT2KOI DB 0XB0,0XB1,0XB2,0XB3,0XB4,0XB5,0XB6
  824. ;DB 0XB7,0XB8,0XB9,0XBA,0XBB,0XBC,0XBD
  825. ;DB 0XBE,0XBF,0XC0,0XC1,0XC2,0XC3,0XC4
  826. ;DB 0XC5,0XC6,0XC7,0XC8,0XC9,0XCA,0XCB
  827. ;DB 0XCC,0XCD,0XCE,0XCF,0XD0,0XD1,0XD2
  828. ;DB 0XD3,0XD4,0XD5,0XD6,0XD7,0XD8,0XD9
  829. ;DB 0XDA,0XDB,0XDC,0XDD,0XDE,0XDF,0X9B
  830. ;DB 0X9C,0X9D,0XA5,0XA7,0X83,0X84,0X85
  831. ;DB 0X86,0X97,0X95,0X91,0X92,0X8B,0X8C
  832. ;DB 0XA1,0XA3,0XA8,0XA6,0XA9,0XA4,0XAA
  833. ;DB 0X8D,0X8E,0X93,0X90,0X98,0X96,0X99
  834. ;DB 0X94,0X9A,0X80,0X81,0X82,0X87,0X88
  835. ;DB 0X89,0X8A,0X8F,0X9E,0X9F,0XA2,0XA0
  836. ;DB 0XAB,0XAC,0XAD,0XAE,0XAF
  837. ;DB 0XE0,0XE1,0XE2,0XE3,0XE4,0XE5,0XE6
  838. ;DB 0XE7,0XE8,0XE9,0XEA,0XEB,0XEC,0XED
  839. ;DB 0XEE,0XEF,0XF0,0XF1,0XF2,0XF3,0XF4
  840. ;DB 0XF5,0XF6,0XF7,0XF8,0XF9,0XFA,0XFB
  841. ;DB 0XFC,0XFD,0XFE,0XFF
  842.  
  843. HEX2TXT LD HL,TXT_HEX
  844.         PUSH HL
  845.         LD A,B
  846.         CALL HEX_CON
  847.         LD A,C
  848.         CALL HEX_CON
  849.         LD A,D
  850.         CALL HEX_CON
  851.         LD A,E
  852.         CALL HEX_CON
  853.         LD (HL),0
  854.         POP HL
  855.         RET
  856.  
  857. HEX_CON LD B,A
  858.         RRCA
  859.         RRCA
  860.         RRCA
  861.         RRCA
  862.         CALL ML_BYT
  863.         LD A,B
  864. ML_BYT  AND 0X0F
  865.         ADD A,0X30
  866.         CP 0X3A
  867.         JR C,$+4
  868.         ADD A,7
  869.         LD (HL),A
  870.         INC HL
  871.         RET
  872.  
  873. HEX4DEC EXX
  874.         LD HL,TXT_DEC
  875.         PUSH HL
  876.         PUSH HL
  877.         LD B,9
  878.         EXX
  879.         LD HL,CHISLA4
  880.         REPT 9
  881.         CALL BCDEMHL
  882.         ENDM
  883. H2D1    LD A,0X30
  884.         ADD A,E
  885.         EXX
  886.         LD (HL),A
  887.         INC HL
  888.         LD (HL),0
  889.         LD A,B
  890.         EXX
  891.         POP HL
  892.         LD B,A
  893.         LD A,(HL)
  894.         CP 0X30
  895.         JR NZ,$+7
  896.         LD (HL),0X20
  897.         INC HL
  898.         DJNZ $-8
  899.         POP HL
  900.         RET
  901.  
  902. HEX2DEC EXX
  903.         LD HL,TXT_DEC
  904.         PUSH HL
  905.         PUSH HL
  906.         LD B,4
  907.         EXX
  908.         LD HL,CHISLA2
  909.         LD BC,0
  910.         JR H2D1-(4*3)
  911.  
  912. HEX1DEC EXX
  913.         LD HL,TXT_DEC
  914.         PUSH HL
  915.         PUSH HL
  916.         LD B,2
  917.         EXX
  918.         LD HL,CHISLA1
  919.         LD BC,0
  920.         LD D,0
  921.         JR H2D1-(2*3)
  922.  
  923. CHISLA4 DB 0X00,0XCA,0X9A,0X3B;1000000000
  924.         DB 0X00,0XE1,0XF5,0X05;100000000
  925.         DB 0X80,0X96,0X98,0X00;10000000
  926.         DB 0X40,0X42,0X0F,0X00;1000000
  927.         DB 0XA0,0X86,0X01,0X00;100000
  928. CHISLA2 DB 0X10,0X27,0X00,0X00;10000
  929.         DB 0XE8,0X03,0X00,0X00;1000
  930. CHISLA1 DB 0X64,0X00,0X00,0X00;100
  931.         DB 0X0A,0X00,0X00,0X00;10
  932.  
  933. ;BCDE-(ADR)=BCDE
  934. BCDEMHL XOR A
  935.         EX AF,AF'
  936.         LD A,E
  937.         SUB (HL)
  938.         INC HL
  939.         LD E,A
  940.         LD A,D
  941.         SBC A,(HL)
  942.         INC HL
  943.         LD D,A
  944.         LD A,C
  945.         SBC A,(HL)
  946.         INC HL
  947.         LD C,A
  948.         LD A,B
  949.         SBC A,(HL)
  950.         LD B,A
  951.         DEC HL
  952.         DEC HL
  953.         DEC HL
  954.         EX AF,AF'
  955.         INC A
  956.         EX AF,AF'
  957.         LD A,B
  958.         CP 0XC4
  959.         JR C,BCDEMHL+2
  960.         LD A,(HL)
  961.         ADD A,E
  962.         LD E,A
  963.         INC HL
  964.         LD A,(HL)
  965.         ADC A,D
  966.         LD D,A
  967.         INC HL
  968.         LD A,(HL)
  969.         ADC A,C
  970.         LD C,A
  971.         INC HL
  972.         LD A,(HL)
  973.         ADC A,B
  974.         LD B,A
  975.         DEC HL
  976.         DEC HL
  977.         DEC HL
  978.         EX AF,AF'
  979.         DEC A
  980.         ADD A,0X30
  981.         INC HL
  982.         INC HL
  983.         INC HL
  984.         INC HL
  985.         EXX
  986.         LD (HL),A
  987.         INC HL
  988.         EXX
  989.         RET
  990.  
  991. CP_KEYS POP HL
  992.         LD B,A
  993. CPKEYS1 LD A,(HL)
  994.         INC HL
  995.         AND A
  996.         JR NZ,$+3
  997.         JP (HL)
  998.        
  999.         LD E,(HL)
  1000.         INC HL
  1001.         LD D,(HL)
  1002.         INC HL
  1003.         CP B
  1004.         JR NZ,CPKEYS1
  1005.         PUSH DE
  1006. CPKEYS2 LD A,(HL)
  1007.         INC HL
  1008.         AND A
  1009.         JR NZ,$+4
  1010.         EX (SP),HL
  1011.         JP (HL)
  1012.  
  1013.         INC HL
  1014.         INC HL
  1015.         JR CPKEYS2
  1016.  
  1017. PAG_128 PUSH BC
  1018.         LD BC,0X7FFD
  1019.         OR 0X10
  1020.         OUT (C),A
  1021. ;       LD (PAGE128),A
  1022.         POP BC
  1023.         RET
  1024.