SCHON3 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 RECT
;Linie zeichnen
LD HL,LOCAT
LD A,(COLOR)
CALL RECT
;Linie merken
LD HL,LOCAT
LD DE,(POSIT)
LD BC,16
LDIR
;Neue Linie berechnen
LD IY,VEKTOR
LD B,8
LOOP
LD E,(IY)
LD D,(IY+1)
LD L,(IY+16)
LD H,(IY+17)
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+16),L
LD (IY+17),H
INC IY
INC IY
DJNZ LOOP
;Positionszeiger erhoehen
LD HL,(POSIT)
LD DE,16
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
RECT: ;Viereck zeichnen
;HL: ^Paramterliste
;A: Farbcode
LD (FARB),A
CALL RECT2
CALL RECT2
LD DE,-12
ADD HL,DE
CALL RECT2
LD DE,ARG1
LD BC,4
LDIR
LD BC,-16
ADD HL,BC
LD BC,4
LDIR
JR RECT3
RECT2 LD DE,ARG1
LD BC,8
LDIR
RECT3 PUSH HL
CALL OS
DB 3EH
POP HL
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,6,9,18,5
LOCAT DW 7,20,88,170,300,50,0,0
POSIT DW PUFFER
PUFFER DS 16*4,0
PUFFEND
]
PUFFEND:
PUFFER:
PO DW 7,10,17,4,6,9,18,5
LOCAT DW 7,20,88,170,300,50,0,0
POSIT DW PUFFER
PUFFER DS 16*4,0
PUFFEND
]
PUFFEND:
PUFFER:
PO
Detected encoding: ASCII (7 bit) | 2
|