TITLE DOODLE SUBTTL Draw on a VB-1B .Z80 VID EQU 0CC00H STACK EQU 100H CONSTS EQU 0F006H CONIN EQU 0F009H REBOOT EQU 0 DOODLE: LD SP,STACK LD HL,VID D0: LD (HL),0BFH INC HL LD A,H CP HIGH VID+4 JR NZ,D0 JR D2 D1: LD (CURS),HL D2: LD HL,(CURS) CALL CHECK LD A,(DE) OR 80H D3: LD (OLD),A D4: LD A,(OLD) XOR C LD (DE),A LD B,10H CALL WAIT JR NZ,D5 LD A,(OLD) LD (DE),A LD B,20H CALL WAIT JR Z,D4 D5: LD A,(OLD) LD (DE),A CALL CONIN RES 5,A CP 3 ;CTRL-C JP Z,REBOOT CP "Q" JR Z,BLK CP "W" JR Z,WHT CP "S" JR Z,SAVE CP "G" JR Z,GET INC L CP "F" JR Z,D1 DEC L DEC L CP "B" JR Z,D1 INC L INC H CP "U" JR Z,D1 DEC H DEC H CP "D" JR Z,D1 INC H JR D5 BLK: CALL BLACK JR D2 WHT: CALL WHITE JR D2 SAVE: CALL NUM JR SG GET: CALL NUM EX DE,HL SG: CALL MOVE JR D2 NUM: CALL CONIN SUB "0" JP M,NUM CP 10 JP P,NUM LD H,A LD L,0 ADD HL,HL ADD HL,HL LD DE,STORE ADD HL,DE LD DE,VID RET MOVE: LD B,4 MV1: LD A,(DE) AND 0BFH LD (HL),A INC DE INC L JR NZ,MV1 INC H DJNZ MV1 RET WAIT: PUSH BC W1: CALL CONSTS OR A JR NZ,W2 DEC C JR NZ,W1 DJNZ W1 W2: POP BC RET WHITE: CALL CNVRT AND 0BFH OR 80H OR C XOR C LD (DE),A RET BLACK: CALL CNVRT AND 0BFH OR 80H OR C LD (DE),A RET CNVRT: PUSH BC RES 7,L LD A,H F1: SUB 48 JP P,F1 F2: ADD A,48 JP M,F2 LD H,A PUSH HL LD B,H LD C,L LD E,H LD D,0 LD HL,1 ADD HL,DE ADD HL,HL ADD HL,HL ADD HL,DE ADD HL,HL ADD HL,HL ADD HL,DE LD D,H LD A,L AND 0C0H LD E,A ADD HL,DE ADD HL,DE ADD HL,HL ADD HL,HL LD A,B SUB H LD B,A LD A,LOW (VID+960) SUB E LD E,A LD A,HIGH (VID+960) SBC A,D LD D,A LD A,C RRA OR E LD E,A LD A,C RRA LD A,B RLA LD C,A LD B,0 LD HL,DTAB ADD HL,BC LD A,(HL) POP HL POP BC LD C,A LD A,(DE) RET CHECK: CALL CNVRT AND C RET DTAB: DEFB 08H DEFB 01H DEFB 10H DEFB 02H DEFB 20H DEFB 04H END: CURS: DEFS 2 OLD: DEFS 1 STORE: ORG END END DOODLE