Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- device zxspectrum128
- ORG #7000
- ;#9000-#97ff-text buffer
- begin
- out (#fe),a
- ld hl,#5800,de,#5803,bc,767,(hl),#40+7*8:ldir
- ld hl,#6000
- ld de,#3c00
- copyfnt:
- push hl
- dup 8
- ld a,(de),(hl),a
- inc de,h
- edup
- pop hl
- inc l:jr nz,copyfnt
- PLOTTBL EQU #6800
- FORMER LD DE,#4000,BC,#8000,L,E
- FLP1 LD H,high PLOTTBL
- LD (HL),D:INC H:LD (HL),E:INC H
- LD (HL),C:INC H:LD (HL),B
- RRC B
- LD A,C:ADC A,0:LD C,A
- FBR1 INC D:LD A,D:AND 7
- JR NZ,FNXT:LD A,E:ADD A,32
- LD E,A:JR C,FNXT
- LD A,D:SUB 8:LD D,A
- FNXT INC L:JR NZ,FLP1
- LD HL,PLOTTBL+#C0,BC,#3F
- LD DE,HL:INC E
- LD (HL),0:LDIR
- ei
- txtc: ld de,64*256+(255-9*8)/2
- ; ld a,(scale),c,a
- ; ld a,e
- ; sub c
- ; ld e,a
- ; ld (xpos+1),a
- ;-----------ставим точку на DE------------------------
- PLOT ;PUSH HL,BC
- LD H,HIGH PLOTTBL,L,D,B,(HL):INC H
- LD A,(HL),L,E:INC H:OR (HL)
- INC H:LD C,A
- ;ld A,(BC)
- ld a,(hl)
- ld (prescr+1),a
- ;ld (scrpos+1),bc
- ; ld a,c,(xpos+1),a
- ;OR (HL):LD (BC),A
- ;POP BC,HL
- ld ix,text1
- ld b,6
- walp:halt:djnz walp
- call prlp1
- ld de,(scrpos+1)
- call up_de
- ld (scrpos+1),de
- ld hl,(txtc+1):dec l
- ld (txtc+1),hl
- ld a,(scale):inc a:ld (scale),a
- cp 8*2-1:jr nz,txtc
- ld a,1,(scale),a
- ld hl,64*256+(255-9*8)/2
- ld (txtc+1),hl
- ld hl,#4800,(scrpos+1),hl
- jp txtc
- m2: jr m2
- prlp1
- ;ld ix,text1
- push ix
- bufpos: ld h,#90
- prescr:ld c,#80
- xpos: ld l,0+11
- printtext
- ld e,(ix)
- fntpos: ld d,#60
- ld a,(scale),b,a
- ld a,(de)
- bw: and #80
- jr z,lp02
- ;-----------draw 'scale' pixels
- lp01: ld a,(hl):or c:ld (hl),a
- or a:rrc c:jr nc,nextb01
- inc hl
- nextb01:djnz lp01
- jr rotbit
- ;-----------skip 'scale' bits
- lp02: or a:rrc c:jr nc,nextb02
- inc hl
- nextb02:djnz lp02
- rotbit:ld a,(bw+1)
- or a:rrc a:jr nc,keepbit
- inc ix
- keepbit:ld (bw+1),a
- ld a,(ix):or a:jr nz,printtext
- pop ix
- ld a,(bufpos+1):inc a:ld (bufpos+1),a
- ld a,(fntpos+1):inc a:ld (fntpos+1),a
- and 7:jr nz,prlp1
- ;halt
- ;ld a,1:out(#fe),a
- ;--------------copy parts to screen
- ld hl,#9000
- scrpos: ld de,#4800
- ld b,8
- drlp2:push bc
- ld a,(scale)
- drlp1:
- push hl,de
- ;ld bc,32:ldir
- dup 32
- ldi
- edup
- pop de,hl
- push af
- call nbde
- pop af
- dec a:jr nz,drlp1
- inc h
- pop bc:djnz drlp2
- ;ld a,2:out(#fe),a
- ld hl,#9000,de,#9001,(hl),0,bc,8*256:ldir;32*8, every memory line
- ld a,#90,(bufpos+1),a
- ld a,#60,(fntpos+1),a
- ;ld a,#80,(bw+1),a
- ret
- ; ld a,(scale):inc a:cp 8:jr nz,stopscale
- ; ld a,1
- ;stopscale:
- ; ld (scale),a
- ; jp prlp1
- nbde INC D:LD A,D:AND 7:RET NZ
- LD A,E:ADD A,#20:LD E,A:RET C
- LD A,D:SUB 8:LD D,A:RET
- up_de:
- LD A,D
- DEC D
- AND 7
- ret nz
- LD A,E
- SUB 32
- LD E,A
- ret c
- LD A,D
- ADD A,8
- LD D,A
- ret
- scale:db 1
- text1: db"Goblinish",0
- end
- display /d,end-begin
- savesna "!text.sna",begin
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement