?login_element?

Subversion Repositories NedoOS

Rev

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

  1. genscalers
  2.        IF customscales
  3.         LD HL,tscales
  4.         LD B,64
  5.         LD DE,64
  6. DeCust PUSH BC
  7.         LD C,(HL)
  8.         LD (HL),E
  9.         INC HL
  10.         LD B,(HL)
  11.         LD (HL),D
  12.         INC HL
  13.         EXD
  14.         ADD HL,BC
  15.         EXD
  16.        POP BC
  17.         DJNZ DeCust
  18.        ENDIF ;customscales
  19.  
  20.         LD IY,tscaljps;tjp
  21.         LD HL,0xc000;prog
  22.         LD DE,tscales
  23.         LD B,64
  24. GENATM0 ;
  25.         LD (IY),0xC3
  26.         LD (IY+1),L
  27.         LD (IY+2),H
  28.         ;LD (IY+3),0
  29.        PUSH BC
  30.         EXD
  31.         LD C,(HL)
  32.         INC HL
  33.        PUSH HL
  34.         LD B,(HL) ;BC=scale
  35.         EXD
  36.         CALL GENATMPP
  37.        POP DE
  38.         INC DE
  39.         ld bc,4
  40.         add iy,bc
  41.        POP BC
  42.         DJNZ GENATM0
  43.         RET
  44.  
  45. ;перед этим генерим ld hl,walltop или scrtop
  46. tgenatmhead
  47.         jr NC,$+4
  48.         SET 5,H ;todo LD H,
  49.          ADD A,L ;todo skip if L<=-40
  50.         LD L,A
  51.          jr NC,$+3 ;todo skip if L<=-40
  52.          INC H   ;todo skip if L<=-40
  53. lgenatmhead=$-tgenatmhead
  54.  
  55. GENATMPP
  56. ;BC=scale
  57. ;HL=prog
  58.         LD A,C
  59.         LD (genC),A
  60.         LD A,B
  61.         LD (genB),A
  62.         EXD
  63.         call scale2ytop
  64. ;DE = Y
  65. ;LX = y
  66.        PUSH DE ;Y
  67.         LD A,D
  68.         OR A
  69.         jr NZ,GENTOP
  70.         LD A,E
  71.         CP Ytop
  72.         jr C,GENTOP
  73.         CALL YtoADDR
  74.         JR GENnTOP
  75. GENTOP  LD DE,scrtop
  76. GENnTOP
  77.         LD A,0x80
  78.         LD (genpix0),A ;первый раз
  79.        IF addhlbc
  80.         LD (HL),0x21 ;ld hl,NN
  81.         INC HL
  82.         LD (HL),E
  83.         INC HL
  84.         LD (HL),D
  85.         INC HL
  86.         PUSH BC
  87.         push DE
  88.         EXD
  89.         LD HL,tgenatmhead
  90.         LD BC,lgenatmhead
  91.         LDIR
  92.         EXD
  93.         POP DE
  94.         pop BC
  95.        ELSE
  96.         LD A,D
  97.         OR E
  98.         LD (HL),0xEB ;exd
  99.         jr Z,GENTOPH
  100.          LD (HL),0x21 ;ld hl,NN
  101.          INC HL
  102.          LD (HL),E
  103.          INC HL
  104.          LD (HL),D
  105.          INC HL
  106.          LD (HL),0x19 ;add hl,de
  107. GENTOPH INC HL
  108.        ENDIF
  109.        IF addhlbc == 0
  110.         LD A,D
  111.         LD (curH),A
  112.         LD (HL),0xD1 ;pop de
  113.         INC HL
  114.        ENDIF
  115.        POP DE ;Y
  116.         LD HX,0 ;V
  117. GENATMPP0
  118.        ;Y+=scale
  119.         LD A,LX
  120. genC=$+1
  121.         ADD A,0
  122.         LD LX,A ;y
  123.         LD A,0
  124. genB=$+1
  125.         ADC A,0 ;A=dY
  126.         jr Z,GENATMnPIX
  127.         LD B,A
  128. GENATMPIX0
  129.         CALL GENATMPIX
  130.         INC DE
  131.         LD A,D
  132.         OR A
  133.         jr NZ,$+7
  134.          LD A,E
  135.          CP Ybottom
  136.          jr NC,GENATMPPQ
  137.         DJNZ GENATMPIX0
  138. GENATMnPIX
  139.         INC HX
  140.         LD A,HX
  141.         CP 64
  142.         jr Z,GENATMPPQ
  143.         RRA
  144.         jr C,$+5
  145.          LD (HL),0xD1 ;pop de
  146.          INC HL
  147.         JR GENATMPP0
  148. GENATMPPQ
  149.        IF addhlbc == 0
  150.        LD A,0xD1 ;skip pop de's
  151.        DEC HL
  152.        CP (HL)
  153.        jr Z,$-2
  154.         LD A,(HL)
  155.         CP 0x72 ;ld (hl),d
  156.        ELSE
  157. genatmend=$+1
  158.         LD HL,0
  159.        ENDIF
  160.         LD (HL),0xDD
  161.        IF addhlbc == 0
  162.         jr NZ,$+5
  163.          INC HL
  164.          LD (HL),0xFD
  165.        ENDIF
  166.         INC HL
  167.         LD (HL),0xE9 ;jp (ix) ;(iy) for ld (hl),d
  168.         INC HL
  169.         RET
  170.  
  171. GENATMPIX
  172.         LD A,D
  173.         OR A
  174.         RET NZ
  175.         LD A,E
  176.         CP Ytop
  177.         RET C
  178.        PUSH DE ;Y
  179.         CALL YtoADDR
  180. genpix0=$+1
  181.         LD A,0x80
  182.         ADD A,A
  183.         LD (genpix0),A
  184.        IF addhlbc
  185.         jr C,$+5 ;первый раз
  186.          LD (HL),0x09 ;add hl,bc
  187.          INC HL
  188.        ELSE
  189.         jr C,GENPIXQ ;первый раз
  190. curH=$+1
  191.         LD A,0
  192.         INC A
  193.         CP D
  194.         LD A,D
  195.         LD (curH),A
  196.         jr NZ,GENPIXnH
  197.         ;LD (HL),#24 ;inc h
  198.          LD (HL),0x09 ;add hl,bc
  199.          INC HL
  200.         JR GENPIXQ
  201. GENPIXnH
  202.        LD A,E
  203.       ;OR A
  204.       ;LD (HL),#68 ;ld l,b
  205.       ;JZ GENPIXL
  206.       ;CP 40 ;только для каждого 8-го столба
  207.       ;LD (HL),#69 ;ld l,c
  208.       ;JZ GENPIXL
  209.        CP 0xB8
  210.        LD (HL),0x6F ;ld l,a
  211.        jr Z,GENPIXL
  212.          LD (HL),0x2E ;ld l,N
  213.          INC HL
  214.          LD (HL),E
  215. GENPIXL INC HL
  216. GENPIXQ
  217.        ENDIF ;~addhlbc
  218.         LD A,HX ;V
  219.         RRA
  220.         LD (HL),0x73 ;ld (hl),e
  221.         jr NC,$+3;4
  222.         dec (hl);LD (HL),0x72 ;ld (hl),d
  223.         INC HL
  224.        IF addhlbc
  225.        LD (genatmend),HL
  226.        ENDIF
  227.        POP DE ;Y
  228.         RET
  229.