Subversion Repositories ngs

Rev

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

  1.  
  2. ; LAST UPDATE: 26.10.2025 savelij
  3.  
  4. PRINT_MSG       LD A,(HL)
  5.                 INC HL
  6.                 AND A
  7.                 RET Z
  8.                 CALL PRINT_A
  9.                 JR PRINT_MSG
  10.  
  11. PRINT_A         CP ' '
  12.                 JP NC,PRINT_A_
  13.                 CP 0x0D
  14.                 JR NZ,.L0
  15. ; перевод строки
  16. .SET_NEW_LINE
  17.                 EXX
  18.                 LD HL,VVARS.PPOS_X
  19.                 LD (HL),0
  20.                 INC HL
  21.                 INC (HL)
  22.                 EXX
  23.                 RET
  24.  
  25. .L0             CP 0x16
  26.                 JR NZ,.L1
  27. ; установка позиции печати
  28. ; 0x16 X (0..41) Y (0..23)
  29.                 LD A,(HL)
  30.                 INC HL
  31.                 LD (VVARS.PPOS_X),A
  32.                 LD A,(HL)
  33.                 INC HL
  34.                 LD (VVARS.PPOS_Y),A
  35.                 RET
  36.  
  37. .L1             CP 0x17
  38.                 JR NZ,.L6
  39.                 LD A,(HL)
  40.                 INC HL
  41.                 LD (VVARS.COLORSYM),A
  42.                 RET
  43.  
  44. .L6
  45.  
  46. ; рисование символа 6x8
  47. PRINT_A_        PUSH HL
  48.                 EXX
  49.                 LD L,A
  50.                 LD H,0
  51.                 ADD HL,HL
  52.                 ADD HL,HL
  53.                 ADD HL,HL
  54.                 LD DE,FONT
  55.                 ADD HL,DE
  56.                 PUSH HL
  57.                 LD HL,VVARS.PPOS_X
  58.                 LD E,(HL)                               ; X
  59.                 INC (HL)                                ; следующий X
  60.                 LD A,(HL)
  61.                 CP 42
  62.                 JR C,.L4
  63.                 LD (HL),0
  64. .L4             INC HL
  65.                 LD A,(HL)                               ; Y
  66.                 JR C,.L5
  67.                 INC (HL)
  68. .L5             ADD A,A
  69.                 ADD A,A
  70.                 ADD A,A                                 ; Y координата в таблице адресов экрана
  71.                 LD B,A
  72.                 LD A,E
  73.                 ADD A,A                                 ; *2
  74.                 ADD A,A                                 ; *4
  75.                 ADD A,E                                 ; *5
  76.                 ADD A,E                                 ; *6
  77.                 LD D,A
  78.                 EX AF,AF'
  79.                 LD A,D
  80.                 SRL A
  81.                 SRL A
  82.                 SRL A
  83.                 LD C,A                                  ; X смещение
  84.                 LD H,HIGH (VVARS.BUFTSC)
  85.                 LD L,B
  86.                 LD A,(HL)
  87.                 ADD A,C
  88.                 LD E,A
  89.                 INC H
  90.                 LD D,(HL)
  91.                 POP HL
  92.                 EX AF,AF'
  93.                 AND 7
  94.                 JP NZ,.L0
  95. ; POS = 0       0000 0011 1111 1111
  96.         REPT 8
  97.                 LD A,(DE)
  98.                 AND %00000011
  99.                 OR (HL)
  100.                 LD (DE),A
  101.                 INC D
  102.                 INC HL
  103.         ENDM
  104.                 JP .RET
  105.  
  106. ; POS = 2       1100 0000 1111 1111
  107. .L0             SUB 2
  108.                 JP NZ,.L1
  109.         REPT 8
  110.                 LD A,(HL)
  111.                 RRA
  112.                 RRA
  113.                 LD C,A
  114.                 LD A,(DE)
  115.                 AND %11000000
  116.                 OR C
  117.                 LD (DE),A
  118.                 INC D
  119.                 INC HL
  120.         ENDM
  121.                 JP .RET
  122.  
  123. ; POS = 4       1111 0000 0011 1111
  124. .L1             SUB 2
  125.                 JP NZ,.L2
  126.         REPT 8
  127.                 LD C,0
  128.                 LD A,(HL)
  129.                 RRA
  130.                 RRA
  131.                 RRA
  132.                 RR C
  133.                 RRA
  134.                 RR C
  135.                 LD B,A
  136.                 LD A,(DE)
  137.                 AND %11110000
  138.                 OR B
  139.                 LD (DE),A
  140.                 INC E
  141.                 LD A,(DE)
  142.                 AND %00111111
  143.                 OR C
  144.                 LD (DE),A
  145.                 DEC E
  146.                 INC D
  147.                 INC HL
  148.         ENDM
  149.                 JP .RET
  150.  
  151. ; POS = 6       1111 1100 0000 1111
  152. .L2
  153.         REPT 8
  154.                 LD B,0
  155.                 LD A,(HL)
  156.                 ADD A,A
  157.                 RL B
  158.                 ADD A,A
  159.                 RL B
  160.                 LD C,A
  161.                 LD A,(DE)
  162.                 AND %11111100
  163.                 OR B
  164.                 LD (DE),A
  165.                 INC E
  166.                 LD A,(DE)
  167.                 AND %00001111
  168.                 OR C
  169.                 LD (DE),A
  170.                 DEC E
  171.                 INC D
  172.                 INC HL
  173.         ENDM
  174. .RET
  175.                 LD HL,(VVARS.COLORSYM)
  176.                 INC L
  177.                 JR Z,.L3
  178.                 DEC L
  179.                 EX DE,HL
  180.                 LD A,H
  181.                 DEC A
  182.                 RRCA
  183.                 RRCA
  184.                 RRCA
  185.                 AND 3
  186.                 OR 0x58
  187.                 LD H,A
  188.                 LD (HL),E
  189. .L3             EXX
  190.                 POP HL
  191.                 RET
  192.  
  193. PRIHEX          PUSH AF
  194.                 RRA
  195.                 RRA
  196.                 RRA
  197.                 RRA
  198.                 CALL .PHC
  199.                 POP AF
  200. .PHC            AND 0x0F
  201.                 CP 0x0A
  202.                 JR C,.L1
  203.                 ADD A,7
  204. .L1             ADD A,'0'
  205.                 JP PRINT_A_
  206.  
  207. CLEAR_SCREEN    LD HL,0x4000
  208.                 LD DE,0x4001
  209.                 LD BC,0x1800
  210.                 LD (HL),0
  211.                 LDIR
  212.                 LD BC,0x300
  213.                 LD (HL),0x07
  214.                 LDIR
  215.                 RET
  216.  
  217. ; генерация адресов экрана
  218. FADRTSC         LD B,0x18
  219.                 LD DE,0x4000
  220.                 LD HL,VVARS.BUFTSC
  221. .L1             LD C,8
  222. .L2             LD (HL),E
  223.                 INC H
  224.                 LD (HL),D
  225.                 DEC H
  226.                 INC L
  227.                 INC D
  228.                 DEC C
  229.                 JR NZ,.L2
  230.                 LD A,0x20
  231.                 ADD A,E
  232.                 LD E,A
  233.                 JR C,.L3
  234.                 LD A,D
  235.                 SUB 8
  236.                 LD D,A
  237. .L3             DJNZ .L1
  238.                 RET
  239.