;z80 ;zx-spectrum ;assembler MNCOLOR EQU 7 BARCOL EQU 1 WDT EQU 30 ORG #6000 FONT INCB "FONT" EFONT ORG #6000:JP ST ORG EFONT ST DI LD IY,#5C3A RES 4,(IY+1) SET 3,(IY+48) LD (IY-48),1 LD (IY-49),15 CALL DPC LD IX,VAR LD HL,SEGI*256 LD A,H:LD I,A:IM 2 INC A ST0 LD (HL),A : INC L : DJNZ ST0 INC H:LD (HL),A LD L,H LD (HL),#C3 LD HL,INT LD (UINT),HL LD HL,BEGBTX+2 LD (ALINE),HL CALL PSCR WK EI:HALT ; XOR A:IN A,(#FE):CPL:AND #1F ; JR Z,WK XOR A:OUT (#FE),A LD HL,#5800:LD DE,#5801 LD BC,#02FF:LD (HL),L LDIR LD HL,#4000:LD DE,#4001 LD BC,#1800:LD (HL),L LDIR CALL PRSCR EI:HALT CALL DRBOX LD HL,#5820:LD DE,#5821 LD BC,#02BF:LD (HL),MNCOLOR LDIR INP LD HL,#5C08 LD (HL),0 LD IY,#5C3A CALL #0038:DI LD A,(HL) LD HL,TBKEY LD C,(HL):INC HL INP1 LD D,H:LD E,L LD B,3 INP2 CP (HL):JR Z,INP3 INC HL DJNZ INP2 INC HL:INC HL DEC C:JR NZ,INP1 EI:HALT JR INP INP3 CALL INP4 JR INP INP4 EX DE,HL INC HL:INC HL:INC HL LD E,(HL):INC HL LD D,(HL) EX DE,HL JP (HL) TBKEY DB 6 DB "Q","S",#0B:DW SCRLUP DB "A","X",#0A:DW SCRLDW DB "O",#04,#08:DW PGUP DB "P",#05,#09:DW PGDW DB "B","B","B":DW BEG DB "E","E","E":DW QUIT QUIT LD HL,0 PUSH HL JP #3D2F BEG LD HL,BEGBTX+2 LD (ALINE),HL CALL PSCR JR PGDW2 SCRLUP CALL SETKEY LD B,1 JR PGUP1 PGUP LD B,22 PGUP1 PUSH BC LD HL,(ALINE) CALL DPCLND POP BC JR Z,PGUP3 PUSH BC LD (ALINE),HL LD A,22 CALL PRBUFA LD HL,BEGBSCR DEC (HL) CALL P,PGUP2 LD (HL),21 PGUP2 LD HL,(ESCR) CALL SCANDN LD (ESCR),HL POP BC DJNZ PGUP1 PGUP3 JR PGDW2 SCRLDW CALL SETKEY LD B,1 JR PGDW1 PGDW LD B,22 PGDW1 PUSH BC LD HL,(ESCR) CALL DPCLNU POP BC JR Z,PGDW2 PUSH BC LD (ESCR),HL LD A,1 CALL PRBUFU LD HL,BEGBSCR INC (HL) LD A,(HL):CP 22 JR C,$+4 LD (HL),0 LD HL,(ALINE) CALL SCANUP LD (ALINE),HL POP BC DJNZ PGDW1 PGDW2 EI:HALT JP PRSCR SETKEY LD A,1 LD (#5C02),A LD (#5C06),A RET INT RET DPCLNU LD A,(HL):INC A:RET Z LD DE,BUFLN LD A,#0D JR DPCLN2 DPCLN1 LDI DPCLN2 CP (HL):JP NZ,DPCLN1 INC HL DPCLN3 LD (DE),A INC E JR NZ,DPCLN3 INC E RET DPCLND DEC HL:DEC HL LD A,(HL):INC A:RET Z LD DE,BUFLN1+40 PUSH DE LD A,#0D:LD C,41 JR DPCLD2 DPCLD1 LDD DPCLD2 CP (HL):JR NZ,DPCLD1 INC HL INC DE EX (SP),HL INC HL LD A,C:OR A JR Z,DPCLD4 LD B,C:LD C,#20 DPCLD3 LD (HL),C:INC L:DJNZ DPCLD3 DPCLD4 POP HL XOR A:INC A RET SCANUP LD A,(HL):CP #FF:RET Z PUSH BC LD B,#FF:LD A,#0D CPIR POP BC XOR A:INC A RET ; (HL)=#0D SCANDN DEC HL DEC HL LD A,(HL) CP #0D:JR Z,SCND2 CP #FF:JR Z,SCND1 SCND0 PUSH BC LD B,#FF:LD A,#0D CPDR POP BC XOR A SCND1 INC HL SCND2 INC A INC HL RET PSCR XOR A:LD (IX+0),A LD HL,(ALINE) PSCR1 INC A EX AF,AF:CALL DPCLNU:EX AF,AF PUSH HL PUSH AF CALL PRBUFU POP AF POP HL CP 22 JR NZ,PSCR1 LD (ESCR),HL RET PRBUFU LD DE,BUFLN PRBUFA LD (USP),SP DEC A ADD A,(IX+0) CP 22 JR C,PRBUF1 SUB 22 PRBUF1 ADD A,A LD HL,TBABUF ADD A,L LD L,A LD SP,HL POP HL LD (ABUFLIN),HL LD BC,22 ADD HL,BC LD A,H EX AF,AF LD A,L EXX LD E,A EX AF,AF LD D,A EXX LD BC,-11 ADD HL,BC EX DE,HL LD SP,HL LD LY,5 PRBUF2 JP #FDF1 PRSCR PRSCR0 LD (USP),SP LD A,(IX+0) LD B,A ADD A,A LD L,A LD H,0 LD DE,TBABUF ADD HL,DE LD SP,HL POP HL LD SP,HL LD A,22 SUB B LD B,A OR A JP #DE00 PRLINE LD (USP),SP DEC A ADD A,A LD L,A LD H,0 LD DE,TBAPR ADD HL,DE LD SP,HL POP HL LD SP,(ABUFLIN) LD B,1 SCF JP (HL) PRSCR1 EX (SP),HL JR C,PRSE LD SP,BUFSCR JP (HL) PRSE LD SP,(USP) LD IX,VAR RET DRBOX LD A,BARCOL LD HL,#5801 CALL DRBOX1 LD HL,#5AE1 CALL DRBOX1 LD A,#FF LD HL,#4601 CALL DRBOX1 LD HL,#51E1 DRBOX1 LD B,#1E LD (HL),A : INC L DJNZ $-2 RET DPC LD HL,FONT LD DE,#C000 PUSH DE PUSH HL LD B,E LD C,6 DPC1 LD A,(HL) : INC L RRCA:RRCA LD (DE),A : INC E DJNZ DPC1 INC H:INC D:DEC C JR NZ,DPC1 POP HL LD A,6 DPC2 EX AF,AF DPC3 LD C,(HL) : INC L XOR A SLA C : RL A SLA C : RL A LD (DE),A : INC D LD A,C LD (DE),A : DEC D INC E DJNZ DPC3 INC H INC D : INC D EX AF,AF DEC A JR NZ,DPC2 POP HL LD A,6 DPC4 EX AF,AF DPC5 XOR A : LD C,A LD A,(HL) : INC L RRA : RR C RRA : RR C LD (DE),A : INC D LD A,C LD (DE),A : DEC D INC E DJNZ DPC5 INC H INC D : INC D EX AF,AF DEC A JR NZ,DPC4 EX DE,HL LD IX,TBAPR LD DE,#4121 LD A,22 DPC6 EX AF,AF LD (IX),L : INC IX LD (IX),H : INC IX DPC7A LD LY,WDT/2 DPC8 LD A,D LD B,6 DPC9 LD (HL),#E1 : INC HL LD (HL),#22 : INC HL LD (HL),E : INC HL LD (HL),D : INC HL INC D DJNZ DPC9 LD D,A INC E INC E DEC LY JR NZ,DPC8 LD C,A LD A,31-WDT ADD A,E:LD E,A LD A,C JR NZ,DPC10 ADD A,8 LD D,A DPC10 INC E EX AF,AF DEC A JR Z,DPC11 LD (HL),#10 : INC HL LD (HL),#03 : INC HL LD (HL),#CD : INC HL LD (HL),PRSCR1\256 : INC HL LD (HL),PRSCR1/256 : INC HL JR DPC6 DPC11 LD (HL),#C3 : INC HL LD (HL),PRSE\256 : INC HL LD (HL),PRSE/256 : INC HL EX DE,HL LD (PRBUF2+1),DE LD (DPCI7+1),DE LD HL,DPCI2 LD BC,13 LDIR PUSH DE LD C,21 LDIR EX (SP),HL LD C,84 LDIR POP HL LD C,34 LDIR PUSH DE LD C,21 LDIR EX (SP),HL LD C,84 LDIR POP HL LD C,33 LDIR LD DE,BUFSCR LD HL,TBABUF LD BC,WDT*6 LD A,23 DPC12 LD (HL),E : INC HL LD (HL),D : INC HL EX DE,HL ADD HL,BC EX DE,HL DEC A JR NZ,DPC12 RET DPCI2 POP BC LD L,B LD H,#C6+11 LD B,FONT/256+5 EXX POP HL LD C,H LD H,#D2+11 LD B,#C0+5 DPCI3 LD A,(BC) DEC B OR (HL) DEC H LD (DE),A DEC DE DEC E LD A,(HL) DEC H EXX OR (HL) DEC H LD (DE),A DEC E LD A,(BC) DEC B OR (HL) DEC H LD (DE),A DEC DE EXX DPCI4 LD A,(BC) OR (HL) DEC H LD (DE),A INC E LD A,(HL) EXX OR (HL) DEC H LD (DE),A DEC E LD A,(BC) OR (HL) LD (DE),A EXX POP BC LD L,B LD H,#C6 LD B,FONT/256 EXX LD HL,24 ADD HL,DE EX DE,HL POP HL LD C,H LD H,#D2 LD B,#C0 EXX DPCI5 LD A,(BC) INC B OR (HL) INC H LD (DE),A INC DE INC E LD A,(HL) INC H EXX OR (HL) INC H LD (DE),A INC E LD A,(BC) INC B OR (HL) INC H LD (DE),A INC DE EXX DPCI6 LD A,(BC) OR (HL) INC H LD (DE),A LD A,(HL) EXX OR (HL) INC H LD (DE),A INC E LD A,(BC) OR (HL) LD (DE),A LD HL,12 ADD HL,DE EX DE,HL EXX LD HL,35 ADD HL,DE EX DE,HL EXX DEC LY DPCI7 JP NZ,#FDF1 JP PRSE BEGBTX DB #FF,#0D INCB "RN" DB #FF ETEXT BUFSCR EQU #9000; 4004 SEGI EQU #A0 SEGI1 EQU SEGI+1 UINT EQU SEGI1*256+SEGI1+1 AINT EQU SEGI1*256 BUFLN1 EQU AINT+2; 82 TBAPR EQU BUFLN1+82; 22*2 VAR EQU TBAPR+44 BEGBSCR EQU VAR; 1 ABUFLIN EQU BEGBSCR+1; 2 ALINE EQU ABUFLIN+2; 2 ESCR EQU ALINE+2; 2 USP EQU ESCR+2; 2 END1 EQU USP+2 TBABUF EQU UINT+2; 23*2 END2 EQU TBABUF+46 BUFLN EQU AINT+#D7; 41