SCHONER ASM OS EQU 0F003H
ARG1 EQU 0B782H
FARB EQU 0B7D6H
DB 7FH,7FH,'SCHONER',1
;Schirm loeschen
LD HL,0
LD (0B79CH),HL
LD HL,2028H
LD (0B79EH),HL
LD A,38H
LD (0B7A3H),A
CALL OS
DEFB 23H,0CH,0
ANFANG ;Linie loeschen
LD HL,(POSIT)
LD A,2
CALL LINDRW
;Linie zeichnen
LD HL,LOCAT
LD A,(COLOR)
CALL LINDRW
;Linie merken
LD HL,LOCAT
LD DE,(POSIT)
LD BC,8
LDIR
;Neue Linie berechnen
LD IY,VEKTOR
LD B,4
LOOP
LD E,(IY)
LD D,(IY+1)
LD L,(IY+8)
LD H,(IY+9)
ADD HL,DE
BIT 7,H
JR Z,POSI
CALL NEGDE
EX DE,HL
CALL NEGDE
EX DE,HL
JR ENDIF
POSI
PUSH BC
BIT 0,B
LD BC,0FFH
JR NZ,POSIY
LD BC,13FH
POSIY
CALL CPHLBC
JR C,POSIE
CALL NEGDE
EX DE,HL
CALL NEGDE
EX DE,HL
ADD HL,BC
ADD HL,BC
INC HL
POSIE
POP BC
ENDIF
LD (IY),E
LD (IY+1),D
LD (IY+8),L
LD (IY+9),H
INC IY
INC IY
DJNZ LOOP
;Positionszeiger erhoehen
LD HL,(POSIT)
LD DE,8
ADD HL,DE
LD BC,PUFFEND
CALL CPHLBC
JR NZ,INCPOS
LD HL,PUFFER
LD A,(COLOR)
ADD 8
CP 7*8
JR NZ,INCCOL
LD A,8
INCCOL
LD (COLOR),A
INCPOS
LD (POSIT),HL
CALL OS
DB 0EH
RET C
JP ANFANG
LINDRW: ;Linie zeichnen
;HL: ^Paramterliste
;A: Farbcode
LD DE,ARG1
LD BC,8
LDIR
LD (FARB),A
CALL OS
DB 3EH
RET
NEGDE: ;Negiert DE
PUSH HL
LD HL,0
OR A
SBC HL,DE
EX DE,HL
POP HL
RET
CPHLBC ;CMP HL,BC
PUSH HL
OR A
SBC HL,BC
POP HL
RET
COLOR DB 8
VEKTOR DW 7,10,17,4
LOCAT DW 7,20,88,170
POSIT DW PUFFER
POSALT DW PUFFER
PUFFER DS 16*8,0
PUFFEND
m
PUFFEND:í
PUFFER:ë
POSALT:é
POSIT:á
LOCAT:Ù
VEKTOR:Ø
COLOR:Ò
CPHLBC:ÈR
POSALT DW PUFFER
PUFFER DS 16*8,0
PUFFEND
m
PUFFEND:í
PUFFER:ë
POSALT:é
POSIT:á
LOCAT:Ù
VEKTOR:Ø
COLOR:Ò
CPHLBC:È
Detected encoding: ANSI (CP1252) | 4
|
|