home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Almathera Ten Pack 4: Demo 1
/
almathera_demo1.bin
/
sourcecode
/
dexion
/
textwriter.s
< prev
next >
Wrap
Text File
|
1995-03-17
|
9KB
|
507 lines
scr=$7a000
struc=$7d000
rastport=struc+100
setupsystem:
bsr getgfx
bsr cleanitdown
move.w #8000-1 ,d0
move.l #scr ,a0
slet: move.b #0 ,(a0)+
dbra d0 ,slet
move.l #scr ,a0
move.l a0 ,struc+8
move.l #struc ,a0
moveq #1 ,d0
move.l #320 ,d1
move.l #200 ,d2
move.l gfxbase ,a6
jsr -390(a6)
move.l #rastport ,a1
jsr -198(a6)
move.l #struc,rastport+4
move.l #copper0,newcop
bsr changecop
;--DEMO
move=-240
draw=-246
setapen=-342
move.l #rastport,a1
;/////// my demo!!! ///////
demo:
move.l #end,d3
move.l #text,d2
sub.l #1,d3
move.l d2,textpos
oloop:
btst #6,$bfe001
bne cnton
rts
cnton:
move.l #6,d2
move.l #charset,a2
move.l textpos,a4
clr.l d0
move.b (a4),d0
;--SPECIAL FUNCTIONS--
cmp.b #'z',d0
beq changesspeed
cmp.b #'r',d0
beq scrollonoff
cmp.b #'h',d0
beq horizscroll
cmp.b #'a',d0
beq changexsize
cmp.b #'b',d0
beq changeysize
cmp.b #'n',d0
beq newline
cmp.b #' ',d0
beq space
cmp.b #'l',d0
beq scroll
cmp.b #'x',d0
beq changex
cmp.b #'y',d0
beq changey
cmp.b #'s',d0
beq changespeed
cmp.b #'p',d0
beq pause
cmpi #0,speed
beq nopause
clr.l d1
move speed,d1
mulu #5,d1
syncloop:
cmpi.b #255,$dff006
bne syncloop
dbra d1,syncloop
;jsr updatecop
nopause:
sub #33,d0
mulu #28,d0
add d0,a2
add.l #1,textpos
iloop:
clr.l d0
clr.l d1
move.b (a2)+,d0
muls xsz,d0
divs #3,d0
add.w x,d0
cmp.w #256,d0
blt b1
subi.l #2,textpos
jmp newline
b1:
move.b (a2)+,d1
muls ysz,d1
divs #3,d1
add.w y,d1
jsr move(a6)
move.b (a2)+,d0
muls xsz,d0
divs #3,d0
add.w x,d0
cmpi.w #256,d0
blt b2
subi.l #2,textpos
jmp newline
b2:
move.b (a2)+,d1
muls ysz,d1
divs #3,d1
add y,d1
jsr draw(a6)
dbra d2,iloop
canc:
cmpi #'SS',scrollf
bne cnyt
jsr onehoriz
;rts
jmp cancel
cnyt:
clr.l d0
move.w xsz,d0
add #4,x
add d0,x
cancel:
cmp.l textpos,d3
bge oloop
rts
cls:
move.l #7999,d0
move.l #scr,a0
cls1:
move.b #0,(a0)+
dbra d0,cls1
rts
;/////// my demo's over. //
copper0:dc.w $0100,$1200
dc.w $008e,$2c81
dc.w $0090,$f4c1
dc.w $0092,$38
dc.w $0094,$d0
dc.w $0108,$0000
dc.w $010a,$0000
dc.w $00e0,$0007
dc.w $00e2,$a000
dc.w $0180,$a00
dc.w $0182,$f00
one: dc.w $2c01,$ff00
dc.w $0180,$aaa
dc.w $0182,$fff
two: dc.w $5f01,$ff00
dc.w $180,$00a
dc.w $182,$00f
three: dc.w $6001,$ff00
dc.w $180,$aaa
dc.w $182,$fff
four: dc.w $6101,$ff00
dc.w $180,$a00
dc.w $182,$f00
dc.w $ffff,$fffe
;*** gfx ***
gfxbase: dc.l 0
gfxname: dc.b 'graphics.library',0,0
getgfx:
move.l 4 ,a6
move.l #gfxname,a1
jsr -408(a6)
move.l d0 ,gfxbase
rts
;*** change copper list ***
newcop: dc.l 0
;***
changecop:
move.l gfxbase ,a0
move.l newcop ,50(a0)
rts
;*********
forbid =-132
oldcopper: dc.l 0
cleanitdown:
move.l 4,a6
jsr -132(a6)
rts
charset:
dc.b 1,0,1,2,1,3,1,3,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0;!
dc.b 1,0,1,1,2,0,2,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0;"
dc.b 1,0,1,3,2,0,2,3,0,1,3,1,0,2,3,2,1,0,1,0,1,0,1,0,1,0,1,0;#
dc.b 0,0,3,0,0,0,0,2,1,0,1,3,0,2,3,2,3,2,3,3,0,3,3,3,2,0,2,3;$
dc.b 0,3,3,0,0,0,0,0,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;%
dc.b 0,0,0,3,0,0,2,3,2,0,2,3,3,0,3,1,0,0,0,0,0,0,0,0,0,0,0,0;&
dc.b 1,0,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0;'
dc.b 1,0,0,1,0,1,0,2,0,2,1,3,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0;(
dc.b 2,0,3,1,3,1,3,2,3,2,2,3,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0;)
dc.b 1,0,3,0,0,2,1,0,1,0,1,3,0,2,3,2,0,2,0,3,1,0,1,0,1,0,1,0;AF
dc.b 0,0,2,0,0,0,0,1,1,0,1,1,0,1,2,1,1,1,1,2,2,1,2,2,0,2,2,2;SS
dc.b 1,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2;,
dc.b 0,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2;-
dc.b 1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3;.
dc.b 0,3,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0;/
dc.b 0,0,3,0,3,0,3,3,0,3,3,3,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0;0
dc.b 1,0,1,3,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0;1
dc.b 0,0,3,0,3,0,3,2,0,2,3,2,0,2,0,3,0,3,3,3,0,0,0,0,0,0,0,0;2
dc.b 0,0,3,0,3,0,3,3,0,3,3,3,1,2,3,2,0,0,0,0,0,0,0,0,0,0,0,0;3
dc.b 0,0,0,2,0,2,3,2,3,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;4
dc.b 0,0,3,0,0,0,0,2,0,2,3,2,3,2,3,3,0,3,3,3,0,0,0,0,0,0,0,0;5
dc.b 0,0,3,0,0,0,0,3,0,2,3,2,3,2,3,3,0,3,3,3,0,0,0,0,0,0,0,0;6
dc.b 0,0,3,0,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;7
dc.b 0,0,3,0,3,0,3,3,0,0,0,3,0,2,3,2,0,3,3,3,0,0,0,0,0,0,0,0;8
dc.b 0,0,3,0,0,0,0,2,0,2,3,2,3,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0;9
dc.b 1,0,1,0,1,3,1,3,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0;:
dc.b 0,1,1,3,1,3,3,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1;Amiga
dc.b 3,0,0,2,0,2,3,3,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0;>
dc.b 0,1,3,1,0,2,3,2,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1;=
dc.b 0,0,3,2,0,3,3,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;>
dc.b 0,0,3,0,3,0,3,1,0,1,3,1,0,1,0,2,0,2,3,2,1,3,2,3,0,0,0,0;?
dc.b 0,0,3,3,1,0,3,2,0,1,2,3,0,3,3,0,0,2,2,0,1,3,3,1,0,0,0,0;XX
dc.b 0,0,3,0,0,0,0,3,3,0,3,3,0,2,3,2,0,0,0,0,0,0,0,0,0,0,0,0;A
dc.b 0,0,0,3,0,0,3,0,3,0,3,1,3,1,2,1,2,1,3,2,3,2,3,3,0,3,3,3;B
dc.b 0,0,3,0,0,0,0,3,0,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;C
dc.b 0,0,2,0,2,0,3,1,3,1,3,2,3,2,2,3,0,3,2,3,0,0,0,3,0,0,0,0;D
dc.b 0,0,3,0,0,0,0,3,0,2,2,2,0,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0;E
dc.b 0,0,3,0,0,0,0,3,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;F
dc.b 0,0,3,0,0,0,0,3,0,3,3,3,3,2,1,2,3,2,3,3,0,0,0,0,0,0,0,0;G
dc.b 0,0,0,3,0,2,3,2,3,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;H
dc.b 1,0,1,3,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0;I
dc.b 3,0,3,3,3,3,0,3,0,3,0,2,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0;J
dc.b 0,0,0,3,0,2,3,0,0,2,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;K
dc.b 0,0,0,3,0,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;L
dc.b 0,0,0,3,0,0,1,1,1,1,3,0,3,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0;M
dc.b 0,0,0,3,0,0,3,3,3,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;N
dc.b 0,0,3,0,3,0,3,3,3,3,0,3,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0;O
dc.b 0,0,3,0,3,0,3,2,0,0,0,3,0,2,3,2,0,0,0,0,0,0,0,0,0,0,0,0;P
dc.b 0,0,3,0,3,0,3,3,0,0,0,3,0,3,3,3,2,2,3,3,0,0,0,0,0,0,0,0;Q
dc.b 0,0,3,0,0,0,0,3,0,2,3,2,3,0,3,2,0,2,3,3,0,0,0,0,0,0,0,0;R
dc.b 0,0,3,0,0,0,0,2,0,2,3,2,3,2,3,3,0,3,3,3,0,0,0,0,0,0,0,0;S
dc.b 0,0,3,0,1,0,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;T
dc.b 0,0,0,3,0,3,3,3,3,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;U
dc.b 0,0,1,3,1,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;V
dc.b 0,0,0,3,0,3,1,2,1,2,3,3,3,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0;W
dc.b 0,0,3,3,3,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;X
dc.b 0,0,1,2,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;Y
dc.b 0,0,3,0,0,3,3,0,0,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;Z
dc.b 0,0,3,0,0,0,0,3,0,2,3,2,1,0,1,3,1,3,3,3,0,0,0,0,0,0,0,0;Æ
dc.b 0,0,3,0,0,0,0,3,0,3,3,0,3,0,3,3,0,3,3,3,0,0,0,0,0,0,0,0;Ø
dc.b 0,1,3,1,2,0,1,0,0,2,3,2,3,1,3,3,0,1,0,3,1,0,1,0,1,0,1,0;Å
xsz: dc.w 5
ysz: dc.w 9
x: dc.w 0
y: dc.w 0
textpos: dc.l 0
speed: dc.w 0
scrollf: dc.w 'AF'
scs: dc.w 6
even
changexsize:
clr.l d0
addi #1,a4
move.b (a4),d0
move.w d0,xsz
addi.l #2,textpos
jmp cancel
changeysize:
clr.l d0
addi #1,a4
move.b (a4),d0
move.w d0,ysz
addi.l #2,textpos
jmp cancel
newline:
clr.l d4
move.w ysz,d4
add #4,d4
addi.w d4,y
move.w #0,x
addi.l #1,textpos
jmp cancel
space:
addi.l #1,textpos
jmp canc
scroll:
move.w #0,x
add.l #1,textpos
clr.l d6
move.w ysz,d6
add #3,d6
move.l #1989,d0
oloopsc:
move.l #scr,a4
move.l a4,a5
add.l #40,a5
move.l d0,d5
iloopsc:
move.l (a5),(a4)
addi.l #4,a5
addi.l #4,a4
dbra d5,iloopsc
lkj:
cmpi.b #255,$dff006
bne lkj
dbra d6,oloopsc
jmp cancel
scrollonoff:
addi.l #1,textpos
cmpi #'SS',scrollf
bne notss
move #'AF',scrollf
jmp cancel
notss:
move #'SS',scrollf
jmp cancel
changex:
addi.l #1,textpos
move.l textpos,a5
clr.l d0
move.b (a5),d0
move.w d0,x
addi.l #1,textpos
jmp cancel
changey:
addi.l #1,textpos
move.l textpos,a5
clr.l d0
move.b (a5),d0
move.w d0,y
addi.l #1,textpos
jmp cancel
changespeed:
addi.l #1,textpos
clr.l d0
move.l textpos,a5
move.b (a5),d0
move.w d0,speed
addi.l #1,textpos
jmp cancel
pause:
addi.l #1,textpos
move.l textpos,a0
clr.l d0
move.b (a0),d0
mulu #5,d0
pauseloop:
cmpi.b #255,$dff006
bne pauseloop
dbra d0,pauseloop
addi.l #1,textpos
jmp cancel
horizscroll:
addi.l #1,textpos
clr.l d0
clr.l d1
move y,d0
mulu #40,d0
addi.l #scr,d0
move.l #15,d2
hsoloop:
cmpi.b #255,$dff006
bne hsoloop
move.l d0,a0
move ysz,d1
mulu #40,d1
hsiloop:
lsl.b #1,(a0)+
dbra d1,hsiloop
dbra d2,hsoloop
jmp cancel
onehoriz:
clr.l d0
clr.l d1
clr.l d6
move scs,d6
move y,d0
mulu #40,d0
addi.l #scr,d0
move xsz,d1
addi #3,d1
clr.l d2
move ysz,d2
mulu #40,d2
add.l d2,d0
addi.l #40,d0
clr d2
hs1loloop:
btst d6,$dff006
bne hs1loloop
oh:
btst d6,$dff006
beq oh
move.l d0,a0
move ysz,d2
move.l d2,d5
mulu #20,d2
addi #20,d2
move.l a0,a5
sureloop:
bclr #7,(a5)
subi.l #40,a5
dbra d5,sureloop
hs1liloop:
roxl.w #1,(a0)
;btst #7,(a0)
;beq hs1c
;bset #0,-1(a0)
;hs1c:
subi.l #2,a0
dbra d2,hs1liloop
dbra d1,hs1loloop
rts
changesspeed:
addi.l #1,textpos
clr.l d0
move.l textpos,a0
move.b (a0),d0
move.w d0,scs
addi.l #1,textpos
jmp cancel
updatecop:
;clr.l d0
clr.l d1
clr.l d3
move y,d3
move ysz,d1
addi #$2c,d3
divu #3,d1
move.b d3,one
addi d1,d3
move.b d3,two
addi d1,d3
move.b d3,three
addi d1,d3
move.b d3,four
jsr newcop
rts
text:
dc.b "s",0
dc.b "z",6,"b",32,"a",16,"nnn r"
dc.b "SWEINSTEIN IS PROUD TO PRESENT THE COOL"
dc.b " DEMO OF HIS. IT CAN DO A LOT. "
DC.B "rn rJUST LOOK AT THIS! HORIZONTAL ANDrn"
dc.b " VERTICALl SOFTlSCROLLING!"
end: