(C) Smolyankin Oleg, 1996.
Oleg has sent several of cleaning the screen, which can be
used in a variety of game programs. The first procedure
produces a clean separation of familiarity of each half and
shifts the contents of one half to the left, and another -
vpravo.1412.
10 ORG 40000
20 LD B, 8
30 LOOP2 LD HL, 16384
1940 PUSH BC
50 HALT
60 LD BC, # 0C00
70 LOOP1 SLA (HL)
80 INC HL
1990 SRL (HL)
100 INC HL
110 DEC BC
120 LD A, B
130 OR C
140 JR NZ, LOOP1
150 POP BC
160 DJNZ LOOP2
170 LD HL, 22528
180 LD DE, 22529
190 LD BC, 767
200 LD (HL), # 47
210 LDIR
220 XOR A
230 OUT (254), A
240 RET2
The following is a memory dump:
9C40: 6 August 1921 00 40 C5 76 01:87
9C48: 00 0C CB 26 23 CB 3E 23:30
9C50: 0B 78 B1 20 F5 C1 10 EA: F0
9C58: 21 00 58 11 01 58 01 FF: D7
9C60: 47 February 1936 ED B0 AF D3 FE: 98
9C68: C9 00 00 00 00 00 00 00: CD
Following procedure Oleg
pulled out of a Hacker STINGER'a
STIFFLIP 'CO LOADER. Virtually the same procedure was published
in ZX REVIEW 95 / 2. However, This differs in that line
formed register regeneration.
1412.
10 ORG 40000
20 LD HL, 16384
30 LD B, 192
1940 LOOP PUSH BC
1950 PUSH HL
1960 PUSH HL
70 CALL LINE
1980 POP HL
90 CALL CLS
100 POP HL
110 CALL ADDR
120 POP BC
130 DJNZ LOOP
140 RET
150 LINE LD B, 32
160 LD A, R
170 AND 63
180 LD D, A
190 L1 LD A, (DE)
200 LD (HL), A
210 INC HL
220 INC DE
230 DJNZ L1
240 LD BC, 1000
250 PAUSE DEC BC
260 LD A, B
270 OR C
280 JR NZ, PAUSE
290 RET
300 CLS PUSH HL
310 POP DE
320 INC DE
330 LD (HL), 0
340 LD BC, 31
350 LDIR
360 RET
370 ADDR INC H
380 LD A, H
390 AND 7
400 RET NZ
410 LD A, L
420 ADD A, 32
430 LD L, A
440 RET C
450 LD A, H
SUB 460 8
470 LD H, A
480 RET
2
And dump the program:
9C40: 21 00 40 06 C0 C5 E5 E5: 92
9C48: CD 57 9C E1 CD 6D 9C E1: 3C
9C50: CD 78 9C C1 10 EF C9 06:5 C
9C58: 20 ED 5F E6 3F 57 1A 77:6 D
9C60: 23 October 13 E8 FA 01 03 0B: 33
9C68: 78 B1 20 FB C9 E5 D1 13: DA
9C70: 36 00 01 1F 00 ED B0 C9: C8
9C78: 24 7C E6 07 C0 7D C6 20: C4
9C80: 6F D8 7C D6 C9 00 August 1967: ED
The following procedure is similar
the previous one, only when treatment is not displayed band.
1412.
10 ORG 40000
20 LD HL, 22496
30 EXX
1940 PUSH HL
50 LD HL, 16384
60 LD B, 95
1970 LOOP HALT
80 EXX
90 CALL CLS
100 DEC H
110 LD A, H
120 AND 7
130 CP 7
140 JR NZ, NEXT
150 LD A, L
160 SUB 32
170 LD L, A
180 JR C, NEXT
190 LD A, H
200 ADD A, 8
210 LD H, A
220 NEXT EXX
230 CALL CLS
240 INC H
250 LD A, H
260 AND 7
270 JR NZ, NEXT1
280 LD A, L
290 ADD A, 32
300 LD L, A
310 JR C, NEXT1
320 LD A, H
SUB 330 8
340 LD H, A
350 NEXT1 DJNZ LOOP
360 POP HL
370 EXX
380 RET
390 CLS LD E, L
400 LD D, 32
410 C1 LD (HL), 0
420 INC L
430 DEC D
440 JR NZ, C1
450 LD L, E
460 RET
2
And dump the program:
9C40: 21 E0 57 D9 E5 21 00 40:53
9C48: 06 5F 76 D9 CD 7A 9C 25: A0
9C50: 7C E6 07 FE 20 July 0A 7D: 01
9C58: D6 20 6F 38 04 7C C6 08: DF
9C60: 67 D9 CD 7A 9C 24 7C E6: A5
9C68: July 20 0A 7D C6 20 6F 38:3 F
9C70: 04 August 1967 7C D6 10 D3 E1: 95
9C78: D9 C9 5D 16 20 36 00 2C: AB
9C80: 15 20 FA 6B C9 00 00 00:7 F
The last procedure clears
change screen attributes. She produces a gradual increase of
the outlines. And each once the screen color changes.
1412.
10 ORG 40000
20 LD A, 7
30 CALL MAIN
40 LD A, 5
50 CALL MAIN
60 LD A, 1
70 CALL MAIN
80 XOR A
90 CALL MAIN
100 LD HL, 16384
110 LD DE, 16385
120 LD BC, 6911
130 LD (HL), 0
140 LDIR
150 LD A, (23693)
160 PUSH AF
170 RRCA
180 RRCA
190 RRCA
200 AND 7
210 OUT (254), A
220 POP AF
230 JR M1
240 MAIN OUT (254), A
250 LD E, A
260 RLCA
270 RLCA
280 RLCA
290 XOR E
300 M1 LD HL, 22528
310 LD BC, # 2018
320 LD D, # 0C
330 L1 PUSH DE
340 PUSH BC
350 PUSH HL
360 PUSH AF
370 CALL CLS
380 HALT
390 HALT
400 POP AF
410 POP HL
420 LD BC, 33
430 ADD HL, BC
440 POP BC
450 DEC B
460 DEC B
470 DEC C
480 DEC C
490 POP DE
500 DEC D
510 JR NZ, L1
520 RET
530 CLS LD (MEM1), A
540 LD DE, 32
550 LD A, B
560 LD (MEM2), A
570 LD A, C
580 LD (MEM3), A
590 LD A, (MEM2)
600 LD B, A
610 LD A, (MEM1)
620 C1 LD (HL), A
630 INC HL
640 DJNZ C1
650 DEC HL
660 LD A, (MEM3)
670 LD B, A
680 LD A, (MEM1)
690 C2 LD (HL), A
700 ADD HL, DE
710 DJNZ C2
720 AND A
730 SBC HL, DE
740 LD A, (MEM2)
750 LD B, A
760 LD A, (MEM1)
770 C3 LD (HL), A
780 DEC HL
790 DJNZ C3
800 INC HL
810 LD A, (MEM3)
820 LD B, A
830 LD A, (MEM1)
840 C4 LD (HL), A
850 AND A
860 SBC HL, DE
870 DJNZ C4
880 RET
890 MEM1 DEFB 0
900 MEM2 DEFB 0
910 MEM3 DEFB 02
And dump the program:
9C40: 3E 07 CD 6E 9C 3E 05 CD: 08
9C48: 6E 9C 3E 01 CD 6E 9C AF: B3
9C50: CD 6E 9C 21 00 40 11 01:36
9C58: 40 01 FF 1A 36 00 ED B0: 21
9C60: 3A 8D 5C F5 0F 0F 0F E6: 27
9C68: 07 D3 FE F1 July 18 D3 FE: BD
9C70: 5F 7 July 2007 AB 21 00 58: A4
9C78: January 18, 1920 1916 0C D5 C5 E5: EE
9C80: F5 CD 96 9C 76 76 F1 E1: CE
9C88: 21 January 2000 09 May 2005 C1 0D: 27
9C90: 0D D1 15 20 E8 C9 32 D8: FA
9C98: 9C 20 November 2000 78 32 D9 9C: 20
9CA0: 79 32 DA 9C 3A D9 9C 47:53
9CA8: 3A D8 9C 77 Oct. 23 FC 2B: C3
9CB0: 3A DA 9C 47 3A D8 9C 77:68
9CB8: October 19 FC A7 ED 52 3A D9: 72
9CC0: 9C 47 3A D8 9C 77 2B 10:9 F
9CC8: FC 23 3A DA 9C 47 3A D8: 8C
9CD0: 9C 77 A7 ED 52 10 FA C9: 38
9CD8: 00 00 00 00 00 00 00 00:74
********************************
The following procedures are devoted to
found text messages on
screen.
(C) Oleg Smolyankin.
Bring to your attention
procedure, which I pulled out
various boot loaders. All they
designed to display text messages. So:
The first procedure:
145.
ORG 40000
ENT
LD A, 2
CALL # 1601
LD B, 31
L2 LD A, 22
RST 1916
LD A, 12
RST 1916
LD A, B
RST 1916
LD A, 32
SUB B
PUSH BC
LD HL, 23760
LD B, A
L1 LD A, (HL)
RST 1916
INC HL
DJNZ L1
POP BC
DEC B
LD A, B
CP 255
JR NZ, L2
RET
2
Its a dump:
9C40: 3E 02 CD 16 January 2006 1F 3E: 63
9C48: 16 D7 3E 0C D7 78 D7 3E: 7F
9C50: 20 90 C5 21 D0 5C 47 7E: 73
9C58: D7 Oct. 23 FB C1 May 1978 FE: 35
9C60: FF 20 E4 C9 00 00 00 00: C8
The text should be in the very first BASIC-line operator for
REM. The string length is fixed - 32 characters (if needed
less, you can add spaces Up to 32 characters).
2nd procedure:
145.
ORG 40000
ENT
LD HL, 16384
LD B, 7
L7 PUSH HL
PUSH BC
L6 PUSH BC
PUSH HL
LD B, 32
L5 RR (HL)
INC HL
DJNZ L5
POP HL
POP BC
DJNZ L6
POP BC
POP HL
INC H
DJNZ L7
JR L8
L9 PUSH HL
POP DE
INC DE
LD (HL), A
LD BC, 32
LDIR
RET
L8 LD A, # 46
LD HL, 23168
CALL L9
LD A, # 42
LD HL, 23200
CALL L9
LD HL, 16384
LD DE, 20608
CALL L10
LD DE, 20640
L10 LD A, 4
L11 LD BC, 32
PUSH DE
PUSH HL
LDIR
POP HL
POP DE
INC H
INC D
INC D
DEC A
JR NZ, L11
RET
2
Its a dump:
9C40: 21 00 40 06 07 E5 C5 C5: B9
9C48: E5 June 20 CB 1E Oct. 23 FB: 06
9C50: E1 C1 10 F3 C1 E1 24 10:67
9C58: EC 18 0A E5 D1 13 77 1:43
9C60: 20 00 ED B0 C9 3E 46 21:27
9C68: 80 5A CD 5B 9C 3E 42 21:43
9C70: A0 5A CD 5B 9C 21 00 40:2 B
9C78: November 1980 50 CD 81 9C 11 A0: 90
9C80: 50 3E 04 01 20 00 D5 E5: 89
9C88: ED B0 E1 D1 24 14 14 3D: FC
9C90: 20 F1 C9 00 00 00 00 00:06
Before using this
procedure, the screen must be cleared so: BORDER 0: PAPER 0: INK
0: CLS.
Type in anything in the top row, and call
this procedure. You'll see that
happen. The procedure is very suitable for processing
downloaders.
Third procedure is
Print double-height characters.
145.
ORG 30000
POS EQU # 0000
LEN EQU 27
FONT1 EQU 40000
FONT2 EQU 50000
ENT
LD IX, 15616
LD HL, FONT1
LD DE, FONT2
LD B, 96
L3 PUSH BC
LD B, 4
L1 LD A, (IX +0)
LD (HL), A
INC HL
LD (HL), A
INC HL
INC IX
DJNZ L1
LD B, 4
L2 LD A, (IX +0)
LD (DE), A
INC DE
LD (DE), A
INC DE
INC IX
DJNZ L2
POP BC
DJNZ L3
LD A, 2
CALL # 1601
LD HL, FONT1-256
LD (23606), HL
LD DE, TEXT
LD BC, POS
PUSH DE
PUSH BC
CALL POSIT
LD BC, LEN
CALL # 203C
LD HL, FONT2-256
LD (23606), HL
POP BC
INC B
CALL POSIT
POP DE
LD BC, LEN
CALL # 203C
RET
POSIT LD A, # 16
RST 1916
LD A, B
RST 1916
LD A, C
RST 1916
RET
TEXT DEFM "SMOLY"
DEFM "ANKIN OLE"
DEFM "G PRESENTS"
2
Its a dump:
7530: DD 21 00 21 40 3D 9C 11: EE
7538: 50 C3 C5 June 1960 June 2004 DD: D2
7540: 7E 00 77 23 77 23 DD 23:67
7548: 10 June 2004 F5 DD 7E 00 12:39
7550: December 13, 1913 DD October 23 F5 C1: C3
7558: 10 E2 3E 02 CD January 1916 21:04
7560: 40 9B 22 36 5C November 1991 75:7 B
7568: 01 00 00 D5 C5 CD 1989 75:43
7570: 01 1B 00 CD 3C 20 21 50:9 B
7578: C2 22 36 5C C1 04 CD 89:7 E
7580: 75 D1 01 1B 00 CD 3C 20:80
7588: C9 3E 16 D7 78 D7 79 D7: 90
7590: C9 20 20 20 53 4D 4F 4C: 69
7598: 59 41 4E 4B 49 4E 20 4F: 46
75A0: 4C 45 47 20 50 52 45 53:47
75A8: 45 4E 54 53 00 00 00 00:57
********************************