06-16-2010, 12:50 AM
I was playing with putChars to tighten it and add attribs...
This comes back with "illegal character "." in line 52. There is indeed one in that line. It's in a comment. If you remove it (I already removed all the others) it freaks into "Too many errors. Giving up".
Line 52:
; gets screen address in HL, and bytes address in DE. [<<<< This . is apparently an error] Copies the 8 bytes to the screen
I have no idea why!
This comes back with "illegal character "." in line 52. There is indeed one in that line. It's in a comment. If you remove it (I already removed all the others) it freaks into "Too many errors. Giving up".
Line 52:
; gets screen address in HL, and bytes address in DE. [<<<< This . is apparently an error] Copies the 8 bytes to the screen
I have no idea why!
Code:
SUB Baspaint (x as uByte,y as uByte, width as uByte, height as uByte, attribute as ubyte)
dim i,j as ubyte
FOR i=x to x+width-1
for j=y to y+height-1
poke (22528+(CAST(uinteger,32)*j)+i),attribute
next j
next i
END SUB
SUB paint (x as uByte,y as uByte, width as uByte, height as uByte, attribute as ubyte)
print x,y,width,height,attribute
END SUB
SUB putChars(x as uByte,y as uByte, width as uByte, height as uByte, dataAddress as uInteger)
BLPutChar:
LD a,(IX+5)
;AND 31
ld l,a
ld a,(IX+7) ; Y value
ld d,a
AND 24
add a,64
ld h,a
ld a,d
AND 7
rrca
rrca
rrca
OR l
ld l,a
PUSH HL ; save our address
LD E,(IX+12) ; Marker - This will be poked for the data address by the subroutine
LD D,(IX+13)
LD B,(IX+9) ; Marker - this will be poked for the width
PUSH BC ; save our column count
BLPutCharColumnLoop:
LD B,(IX+11) ; Marker - this will be poked for the height by the subroutine
BLPutCharInColumnLoop:
; gets screen address in HL, and bytes address in DE. Copies the 8 bytes to the screen
ld a,(DE) ; First Row
LD (HL),a
INC DE
INC H
ld a,(DE)
LD (HL),a ; second Row
INC DE
INC H
ld a,(DE)
LD (HL),a ; Third Row
INC DE
INC H
ld a,(DE)
LD (HL),a ; Fourth Row
INC DE
INC H
ld a,(DE)
LD (HL),a ; Fifth Row
INC DE
INC H
ld a,(DE)
LD (HL),a ; Sixth Row
INC DE
INC H
ld a,(DE)
LD (HL),a ; Seventh Row
INC DE
INC H
ld a,(DE)
LD (HL),a ; Eigth Row
INC DE ; Move to next data item.
DEC B
JR Z,BLPutCharNextColumn
;The following code calculates the address of the next line down below current HL address.
PUSH DE ; save DE
ld a,l
and 224
cp 224
jp z,BLPutCharNextThird
BLPutCharSameThird:
ld de,-1760
;and a
add hl,de
POP DE ; get our data point back.
jp BLPutCharInColumnLoop
BLPutCharNextThird:
ld de,32
;and a
add hl,de
POP DE ; get our data point back.
JP BLPutCharInColumnLoop
BLPutCharNextColumn:
POP BC
POP HL
DEC B
JP Z BLPutCharsEnd
INC HL
PUSH HL
PUSH BC
JP BLPutCharColumnLoop
BLPutCharsEnd:
end asm
END SUB
goto start
datapoint:
asm
defb 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32
defb 33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64
defb 65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96
defb 97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128
end asm
start:
cls
putChars(10,10,3,3,@datapoint)
paint(10,10,3,3,79)