Advertisement
Guest User

scale?

a guest
Apr 1st, 2013
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.     device zxspectrum128
  2.         ORG #7000
  3. ;#9000-#97ff-text buffer
  4. begin
  5.  out (#fe),a
  6.  ld hl,#5800,de,#5803,bc,767,(hl),#40+7*8:ldir
  7.  ld hl,#6000
  8.  ld de,#3c00
  9. copyfnt:
  10.  push hl
  11.  dup 8
  12.  ld a,(de),(hl),a
  13.  inc de,h
  14. edup
  15.  pop hl
  16.  inc l:jr nz,copyfnt
  17.  
  18. PLOTTBL EQU #6800
  19. FORMER  LD DE,#4000,BC,#8000,L,E
  20. FLP1    LD H,high PLOTTBL
  21.         LD (HL),D:INC H:LD (HL),E:INC H
  22.         LD (HL),C:INC H:LD (HL),B
  23.         RRC B
  24.         LD A,C:ADC A,0:LD C,A
  25. FBR1    INC D:LD A,D:AND 7
  26.         JR NZ,FNXT:LD A,E:ADD A,32
  27.         LD E,A:JR C,FNXT
  28.         LD A,D:SUB 8:LD D,A
  29. FNXT    INC L:JR NZ,FLP1
  30.         LD HL,PLOTTBL+#C0,BC,#3F
  31.         LD DE,HL:INC E
  32.         LD (HL),0:LDIR
  33.  
  34.  ei
  35.  
  36. txtc: ld de,64*256+(255-9*8)/2
  37. ;     ld a,(scale),c,a
  38. ;     ld a,e
  39. ;     sub c
  40. ;     ld e,a
  41. ;     ld (xpos+1),a
  42.  
  43. ;-----------ставим точку на DE------------------------
  44. PLOT    ;PUSH HL,BC
  45.         LD H,HIGH PLOTTBL,L,D,B,(HL):INC H
  46.         LD A,(HL),L,E:INC H:OR (HL)
  47.         INC H:LD C,A
  48.         ;ld A,(BC)
  49.         ld a,(hl)
  50.         ld (prescr+1),a
  51.        
  52.         ;ld (scrpos+1),bc
  53. ;        ld a,c,(xpos+1),a
  54.         ;OR (HL):LD (BC),A
  55.         ;POP BC,HL
  56.  
  57.  ld ix,text1
  58.  ld b,6
  59. walp:halt:djnz walp
  60.  call prlp1
  61.  
  62.  ld de,(scrpos+1)
  63.  call up_de
  64.  ld (scrpos+1),de
  65.  
  66.  ld hl,(txtc+1):dec l
  67.  ld (txtc+1),hl
  68.  ld a,(scale):inc a:ld (scale),a
  69.  cp 8*2-1:jr nz,txtc
  70.  ld a,1,(scale),a
  71.  ld hl,64*256+(255-9*8)/2
  72.  ld (txtc+1),hl
  73.  ld hl,#4800,(scrpos+1),hl
  74.  jp txtc
  75. m2: jr m2
  76.  
  77. prlp1
  78.  ;ld ix,text1
  79.  push ix
  80. bufpos: ld h,#90
  81. prescr:ld c,#80
  82. xpos: ld l,0+11
  83. printtext
  84.  ld e,(ix)
  85. fntpos: ld d,#60
  86.  ld a,(scale),b,a
  87.  ld a,(de)
  88. bw: and #80
  89.  jr z,lp02
  90. ;-----------draw 'scale' pixels
  91. lp01: ld a,(hl):or c:ld (hl),a
  92.  or a:rrc c:jr nc,nextb01
  93.  inc hl
  94. nextb01:djnz lp01
  95.  jr rotbit
  96. ;-----------skip 'scale' bits
  97. lp02: or a:rrc c:jr nc,nextb02
  98.  inc hl
  99. nextb02:djnz lp02
  100. rotbit:ld a,(bw+1)
  101.  or a:rrc a:jr nc,keepbit
  102.  inc ix
  103. keepbit:ld (bw+1),a
  104.  ld a,(ix):or a:jr nz,printtext
  105.  pop ix
  106.  ld a,(bufpos+1):inc a:ld (bufpos+1),a
  107.  ld a,(fntpos+1):inc a:ld (fntpos+1),a
  108.  and 7:jr nz,prlp1
  109.  
  110.  ;halt
  111.  
  112.  ;ld a,1:out(#fe),a
  113. ;--------------copy parts to screen
  114.  ld hl,#9000
  115. scrpos: ld de,#4800
  116.  ld b,8
  117. drlp2:push bc
  118.  ld a,(scale)
  119. drlp1:
  120.  push hl,de
  121.  ;ld bc,32:ldir
  122.  dup 32
  123.  ldi
  124. edup
  125.  pop de,hl
  126.  push af
  127.  call nbde
  128.  pop af
  129.  dec a:jr nz,drlp1
  130.  inc h
  131.  pop bc:djnz drlp2
  132.  ;ld a,2:out(#fe),a
  133.  
  134.  ld hl,#9000,de,#9001,(hl),0,bc,8*256:ldir;32*8, every memory line
  135.  ld a,#90,(bufpos+1),a
  136.  ld a,#60,(fntpos+1),a
  137.  ;ld a,#80,(bw+1),a
  138.  
  139.  ret
  140. ; ld a,(scale):inc a:cp 8:jr nz,stopscale
  141. ; ld a,1
  142. ;stopscale:
  143. ; ld (scale),a
  144. ; jp prlp1
  145. nbde    INC D:LD A,D:AND 7:RET NZ
  146.         LD A,E:ADD A,#20:LD E,A:RET C
  147.         LD A,D:SUB 8:LD D,A:RET
  148. up_de:
  149.      LD A,D
  150.      DEC D
  151.      AND 7
  152.      ret nz
  153.      LD A,E
  154.      SUB 32
  155.      LD E,A
  156.      ret c
  157.      LD A,D
  158.      ADD A,8
  159.      LD D,A
  160.  ret
  161.  
  162. scale:db 1
  163. text1: db"Goblinish",0
  164. end
  165.     display /d,end-begin
  166.     savesna "!text.sna",begin
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement