Studies - A. Savinov: The procedure for displaying a double-height characters. Procedure "dissolution" of characters.

ZX Review #3-4
(C) Alexey Savinov,
Kirovsk, Murmansk Region.


   This procedure ensures
displaying a double-
width.
145.

     ORG 60000

     ENT

     LD A, (23296)
DBS LD L, A

     LD H, 0

     ADD HL, HL

     ADD HL, HL

     ADD HL, HL

     LD DE, (23606)

     ADD HL, DE

     EX DE, HL

     LD HL, (23684)

     LD B, 8

     PUSH HL
DBS1 PUSH BC

     PUSH DE

     LD A, (DE)

     LD DE, 0

     LD B, 8
DBS2 RLCA

     PUSH AF

     RL E

     RL D

     POP AF

     RL E

     RL D

     DJNZ DBS2

     LD (HL), D

     INC HL

     LD (HL), E

     DEC HL

     POP DE

     INC H

     INC DE

     POP BC

     DJNZ DBS1

     POP HL

     INC HL

     INC HL

     LD (23684), HL

     RET
2

   Its a dump:

EA60: 3A 00 5B 6F 26 00 29 29: C6
EA68: 29 ED 5B 36 5C 19 EB 2A: 83
EA70: 84 June 2008 5C E5 C5 D5 1A: E1
EA78: 11 00 00 06 08 07 F5 CB: 48
EA80: 13 CB 12 13 F1 CB CB 12:06
EA88: 10 F3 72 23 73 2B D1 24:9 D
EA90: 13 C1 10 E1 E1 23 23 22:88
EA98: 84 5C C9 00 00 00 00 00:2 B


   To test this procedure by using the following
program BASICe:

10 LOAD "DBLSYM" CODE 60000
20 PRINT AT 5,0
30 LET A $ = "SAVINOV ALEXEJ"
40 FOR N = 1 TO LEN A $
50 POKE 23296, CODE A $ (N)
60 RANDOMIZE USR 60000
70 NEXT N


   The following procedure provides a "dissolution" of 
characters. She taken from the program "LODE RUNNER".

145.

      ORG 40000
LOOP1 LD B, 8

      LD DE, 0
LOOP2 LD HL, # 4000

      PUSH DE
LOOP3 LD A, (DE)

      AND (HL)

      LD (HL), A

      INC HL

      INC DE

      LD A, H

      CP # 58

      JR NZ, LOOP3

      PUSH BC

      LD BC, 1; PAUSE

      CALL 7997

      POP BC

      POP DE

      LD HL, 100

      ADD HL, DE

      EX DE, HL

      DJNZ LOOP2

      CALL 3435

      RET
2

  Its a dump:

9C40: 6 August 1911 00 00 21 00 40:5 C
9C48: D5 1A A6 77 23 13 7C FE: A0
9C50: 58 20 F6 C5 1 January 2000 CD: EE
9C58: 3D 1F C1 D1 21 64 00 19:80
9C60: EB 10 E2 CD 6B 0D C9 00: E7