Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Using PutcharLcd
#1
I was testing the Putchar Lcd´s routine and I think It´s very handly and work right for my games. Perhaps is not the fastest, but I´m happy with the facilities of modifying its code. Big Grin
Code:
'===========================
'= putchar lcd compiuter   =
'= version 1.100603 <-date =
'===========================
'#include <sinclair.bas>
'#include <memcopy.bas>
'#include <keys.bas>
'#include <print42.bas>
'#include <attr.bas>
'---
cls
border 5
'-------------------------------------
sub putcharLcd1x1(x as Uinteger,y as Uinteger,adr as Uinteger)
   dim scr as Uinteger
   dim a as Uinteger
   a=peek(@linebuffer+y)
   scr=(a<<5)+x+16384
   poke ubyte scr,peek(adr)
   poke ubyte scr+256,peek(adr+1)
   poke ubyte scr+512,peek(adr+2)
   poke ubyte scr+768,peek(adr+3)
   poke ubyte scr+1024,peek(adr+4)
   poke ubyte scr+1280,peek(adr+5)
   poke ubyte scr+1536,peek(adr+6)
   poke ubyte scr+1792,peek(adr+7)
   poke ubyte 22528+x+(y<<5),peek (adr+8)
End sub
'-------------------------------------------
sub putcharLcd1x2(x as Uinteger,y as Uinteger,adr as Uinteger)
   dim scr as Uinteger
   dim a as Uinteger
   a=peek(@linebuffer+y)
   scr=(a<<5)+x+16384
   poke ubyte scr,peek(adr)
   poke ubyte scr+256,peek(adr+1)
   poke ubyte scr+512,peek(adr+2)
   poke ubyte scr+768,peek(adr+3)
   poke ubyte scr+1024,peek(adr+4)
   poke ubyte scr+1280,peek(adr+5)
   poke ubyte scr+1536,peek(adr+6)
   poke ubyte scr+1792,peek(adr+7)
   poke ubyte 22528+x+(y<<5),peek (adr+8)
   x=x+1
   a=peek(@linebuffer+y)
   scr=(a<<5)+x+16384
   poke ubyte scr,peek(adr+9)
   poke ubyte scr+256,peek(adr+10)
   poke ubyte scr+512,peek(adr+11)
   poke ubyte scr+768,peek(adr+12)
   poke ubyte scr+1024,peek(adr+13)
   poke ubyte scr+1280,peek(adr+14)
   poke ubyte scr+1536,peek(adr+15)
   poke ubyte scr+1792,peek(adr+16)
   poke ubyte 22528+x+(y<<5),peek (adr+17)
End sub
'-------------------------------------------
sub putcharLcd2x1(x as Uinteger,y as Uinteger,adr as Uinteger)
   dim scr as Uinteger
   dim a as Uinteger
   a=peek(@linebuffer+y)
   scr=(a<<5)+x+16384
   poke ubyte scr,peek(adr)
   poke ubyte scr+256,peek(adr+1)
   poke ubyte scr+512,peek(adr+2)
   poke ubyte scr+768,peek(adr+3)
   poke ubyte scr+1024,peek(adr+4)
   poke ubyte scr+1280,peek(adr+5)
   poke ubyte scr+1536,peek(adr+6)
   poke ubyte scr+1792,peek(adr+7)
   poke ubyte 22528+x+(y<<5),peek (adr+8)
   y=y+1
   a=peek(@linebuffer+y)
   scr=(a<<5)+x+16384
   poke ubyte scr,peek(adr+9)
   poke ubyte scr+256,peek(adr+10)
   poke ubyte scr+512,peek(adr+11)
   poke ubyte scr+768,peek(adr+12)
   poke ubyte scr+1024,peek(adr+13)
   poke ubyte scr+1280,peek(adr+14)
   poke ubyte scr+1536,peek(adr+15)
   poke ubyte scr+1792,peek(adr+16)
   poke ubyte 22528+x+(y<<5),peek (adr+17)
End sub
'-------------------------------------------
sub putcharLcd2x2(x as Uinteger,y as Uinteger,adr as Uinteger)
   dim scr as Uinteger
   dim a as Uinteger
   a=peek(@linebuffer+y)
   scr=(a<<5)+x+16384
   poke ubyte scr,peek(adr)
   poke ubyte scr+256,peek(adr+1)
   poke ubyte scr+512,peek(adr+2)
   poke ubyte scr+768,peek(adr+3)
   poke ubyte scr+1024,peek(adr+4)
   poke ubyte scr+1280,peek(adr+5)
   poke ubyte scr+1536,peek(adr+6)
   poke ubyte scr+1792,peek(adr+7)
   poke ubyte 22528+x+(y<<5),peek (adr+8)
   x=x+1
   a=peek(@linebuffer+y)
   scr=(a<<5)+x+16384
   poke ubyte scr,peek(adr+9)
   poke ubyte scr+256,peek(adr+10)
   poke ubyte scr+512,peek(adr+11)
   poke ubyte scr+768,peek(adr+12)
   poke ubyte scr+1024,peek(adr+13)
   poke ubyte scr+1280,peek(adr+14)
   poke ubyte scr+1536,peek(adr+15)
   poke ubyte scr+1792,peek(adr+16)
   poke ubyte 22528+x+(y<<5),peek (adr+17)
   x=x-1
   y=y+1
   a=peek(@linebuffer+y)
   scr=(a<<5)+x+16384
   poke ubyte scr,peek(adr+18)
   poke ubyte scr+256,peek(adr+19)
   poke ubyte scr+512,peek(adr+20)
   poke ubyte scr+768,peek(adr+21)
   poke ubyte scr+1024,peek(adr+22)
   poke ubyte scr+1280,peek(adr+23)
   poke ubyte scr+1536,peek(adr+24)
   poke ubyte scr+1792,peek(adr+25)
   poke ubyte 22528+x+(y<<5),peek (adr+26)
   x=x+1
   a=peek(@linebuffer+y)
   scr=(a<<5)+x+16384
   poke ubyte scr,peek(adr+27)
   poke ubyte scr+256,peek(adr+28)
   poke ubyte scr+512,peek(adr+29)
   poke ubyte scr+768,peek(adr+30)
   poke ubyte scr+1024,peek(adr+31)
   poke ubyte scr+1280,peek(adr+32)
   poke ubyte scr+1536,peek(adr+33)
   poke ubyte scr+1792,peek(adr+34)
   poke ubyte 22528+x+(y<<5),peek (adr+35)
End sub
'---next will be probably putcharlcd1x3
'---
linebuffer:
asm
  defb 0,1,2,3,4,5,6,7,64,65,66,67,68,69,70,71,128,129,130,131,132,133,134,135
end asm
'--------------------------
start:
dim x,y as ubyte
dim adr as Uinteger

adr=@gfx1a
x=1
y=1
putcharLcd1x1(x,y,adr)

adr=@gfx1a
x=1
y=3
putcharLcd1x2(x,y,adr)

adr=@gfx1a
x=1
y=5
putcharLcd2x1(x,y,adr)

adr=@gfx1a
x=1
y=8
putcharLcd2x2(x,y,adr)
'---fin---
END
'----------------------------------------
gfx1a:
ASM
DEFB 0,8,8,8,8,8,8,0,00010001B
DEFB 0,60,4,4,60,32,60,0,00011001B
DEFB 0,60,4,4,60,4,60,0,00100001B
DEFB 0,36,36,36,60,4,4,0,00101001B
END ASM
'-----------------------------------------
Reply


Messages In This Thread

Forum Jump:


Users browsing this thread: 2 Guest(s)