Subversion Repositories NedoOS

Rev

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

  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.       ;ELSE
  109.       ; LD A,D
  110.       ; SUB 'scrtop ;значение A при входе
  111.       ; JZ GENTOPH
  112.       ;  LD (HL),#C6 ;add a,N
  113.       ;  INC HL
  114.       ;  LD (HL),D
  115.       ;  INC HL
  116. ;GENTOPH LD (HL),#67 ;ld h,a
  117.        ;INC HL
  118.        ENDIF
  119.        IF addhlbc == 0
  120.         LD A,D
  121.         LD (curH),A
  122.         LD (HL),0xD1 ;pop de
  123.         INC HL
  124.        ENDIF
  125.        POP DE ;Y
  126.         LD HX,0 ;V
  127. GENATMPP0
  128.        ;Y+=scale
  129.         LD A,LX
  130. genC=$+1
  131.         ADD A,0
  132.         LD LX,A ;y
  133.         LD A,0
  134. genB=$+1
  135.         ADC A,0 ;A=dY
  136.         jr Z,GENATMnPIX
  137.         LD B,A
  138. GENATMPIX0
  139.         CALL GENATMPIX
  140.         INC DE
  141.         LD A,D
  142.         OR A
  143.         jr NZ,$+7
  144.          LD A,E
  145.          CP Ybottom
  146.          jr NC,GENATMPPQ
  147.         DJNZ GENATMPIX0
  148. GENATMnPIX
  149.         INC HX
  150.         LD A,HX
  151.         CP 64
  152.         jr Z,GENATMPPQ
  153.         RRA
  154.         jr C,$+5
  155.          LD (HL),0xD1 ;pop de
  156.          INC HL
  157.         JR GENATMPP0
  158. GENATMPPQ
  159.        IF addhlbc == 0
  160.        LD A,0xD1 ;skip pop de's
  161.        DEC HL
  162.        CP (HL)
  163.        jr Z,$-2
  164.         LD A,(HL)
  165.         CP 0x72 ;ld (hl),d
  166.        ELSE
  167. genatmend=$+1
  168.         LD HL,0
  169.        ENDIF
  170.         LD (HL),0xDD
  171.        IF addhlbc == 0
  172.         jr NZ,$+5
  173.          INC HL
  174.          LD (HL),0xFD
  175.        ENDIF
  176.         INC HL
  177.         LD (HL),0xE9 ;jp (ix) ;(iy) for ld (hl),d
  178.         INC HL
  179.         RET
  180.  
  181.        ;LD (HL),#32 ;ld (),a
  182.        ;INC HL
  183.        ;LD (HL),E
  184.        ;INC HL
  185.        ;LD (HL),D
  186.        ;INC HL
  187.  
  188. GENATMPIX
  189.         LD A,D
  190.         OR A
  191.         RET NZ
  192.         LD A,E
  193.         CP Ytop
  194.         RET C
  195.        PUSH DE ;Y
  196.         CALL YtoADDR
  197.        IF addhlbc
  198. genpix0=$+1
  199.         LD A,#80
  200.         ADD A,A
  201.         LD (genpix0),A
  202.         jr C,$+5 ;первый раз
  203.          LD (HL),#09 ;add hl,bc
  204.          INC HL
  205.        ELSE
  206. genpix0=$+1
  207.         LD A,#80
  208.         ADD A,A
  209.         LD (genpix0),A
  210.         jr C,GENPIXQ ;первый раз
  211. curH=$+1
  212.         LD A,0
  213.         INC A
  214.         CP D
  215.         LD A,D
  216.         LD (curH),A
  217.         jr NZ,GENPIXnH
  218.         ;LD (HL),#24 ;inc h
  219.          LD (HL),#09 ;add hl,bc
  220.          INC HL
  221.         JR GENPIXQ
  222. GENPIXnH
  223.        LD A,E
  224.       ;OR A
  225.       ;LD (HL),#68 ;ld l,b
  226.       ;JZ GENPIXL
  227.       ;CP 40 ;только для каждого 8-го столба
  228.       ;LD (HL),#69 ;ld l,c
  229.       ;JZ GENPIXL
  230.        CP #B8
  231.        LD (HL),#6F ;ld l,a
  232.        jr Z,GENPIXL
  233.          LD (HL),#2E ;ld l,N
  234.          INC HL
  235.          LD (HL),E
  236. GENPIXL INC HL
  237. GENPIXQ
  238.        ENDIF ;~addhlbc
  239.         LD A,HX ;V
  240.         RRA
  241.         LD (HL),#73 ;ld (hl),e
  242.         jr NC,$+4
  243.         LD (HL),#72 ;ld (hl),d
  244.         INC HL
  245.        IF addhlbc
  246.        LD (genatmend),HL
  247.        ENDIF
  248.        POP DE ;Y
  249.         RET
  250.