Автор: Luca Rasca
Год: 1988
Издатели: Your Sinclair
Языки:
Английский
Формат:
TAP лента
Требования:
ZX Spectrum 48K
Ссылки:
Страница на ZXArt
Страница на World Of Spectrum
Страница на Spectrum Computing
Год: 1988
Издатели: Your Sinclair
Языки:
Формат:
Требования:
Ссылки:
SCREEN COMPRESS
by Luca Rasca
The only listing I received was this assembly listing, so rather than
work it out as a hex dump (argh! all those swirling bytes!), I am
setting this month's challenge to improve the screen packing of this
routine. You can write your own one from scratch if you want. Send
these and any other brilliant programs and routines to: Program
Pitstop, Your Sinclair, 14 Rathbone Place, London W1P 1DE. That's it!
See you soon!
Screen Compress
Here is a fairly simple screen compression sub-routine from Luca
Rasca. It scans through your screen and stores a compressed version at
50000. It does this by taking note of all the zeros and recording how
many it finds. Since it scans across the screen it doesn't find 255s
which are frequently as common as zeros. But here it is:
Assembly Listing
0000 00000 ;Screen Compress
0000 00000 ;by Luca Rasca
0000 00000 ;from Your Sinclair, Feb'88
0000 00000 ;
0000 00000 ;I added the FINISH step to
0000 00000 ;load BC with the end address,
0000 00000 ;so that USR 65200-50000 will
0000 00000 ;give the compressed screen
0000 00000 ;length. [JimG]
0000 00000 org 65200
FEB0 210040 00000 COMP ld hl,16384
FEB3 1150C3 00000 ld de,50000
FEB6 7E 00000 LOOP1 ld a,(hl)
FEB7 A7 00000 and a
FEB8 12 00000 ld (de),a
FEB9 280A 00000 jr z,ZERO
FEBB 23 00000 inc hl
FEBC 13 00000 CONT inc de
FEBD 3E5B 00000 ld a,91
FEBF BC 00000 cp h
FEC0 20F4 00000 jr nz,LOOP1
FEC2 42 00000 FINISH ld b,d
FEC3 4B 00000 ld c,e
FEC4 C9 00000 ret
FEC5 4F 00000 ZERO ld c,a
FEC6 13 00000 inc de
FEC7 23 00000 LOOP2 inc hl
FEC8 3E5B 00000 ld a,91
FECA BC 00000 cp h
FECB 79 00000 ld a,c
FECC 12 00000 ld (de),a
FECD 28F3 00000 jr z,FINISH
FECF AF 00000 xor a
FED0 BE 00000 cp (hl)
FED1 20E9 00000 jr nz,CONT
FED3 0C 00000 inc c
FED4 20F1 00000 jr nz,LOOP2
FED6 18E4 00000 jr CONT
FED8 00000 ;
FED8 00000 org 65248
FEE0 F3 00000 EXPAND di
FEE1 110040 00000 ld de,16384
FEE4 2150C3 00000 ld hl,50000
FEE7 7E 00000 LOOP3 ld a,(hl)
FEE8 A7 00000 and a
FEE9 12 00000 ld (de),a
FEEA 2009 00000 jr nz,RICONT
FEEC 23 00000 inc hl
FEED 46 00000 ld b,(hl)
FEEE B8 00000 cp b
FEEF 2804 00000 jr z,RICONT
FEF1 13 00000 LOOP4 inc de
FEF2 12 00000 ld (de),a
FEF3 10FC 00000 djnz LOOP4
FEF5 13 00000 RICONT inc de
FEF6 23 00000 inc hl
FEF7 3E5B 00000 ld a,91
FEF9 BA 00000 cp d
FEFA 20EB 00000 jr nz,LOOP3
FEFC FB 00000 ei
FEFD C9 00000 ret
by Luca Rasca
The only listing I received was this assembly listing, so rather than
work it out as a hex dump (argh! all those swirling bytes!), I am
setting this month's challenge to improve the screen packing of this
routine. You can write your own one from scratch if you want. Send
these and any other brilliant programs and routines to: Program
Pitstop, Your Sinclair, 14 Rathbone Place, London W1P 1DE. That's it!
See you soon!
Screen Compress
Here is a fairly simple screen compression sub-routine from Luca
Rasca. It scans through your screen and stores a compressed version at
50000. It does this by taking note of all the zeros and recording how
many it finds. Since it scans across the screen it doesn't find 255s
which are frequently as common as zeros. But here it is:
Assembly Listing
0000 00000 ;Screen Compress
0000 00000 ;by Luca Rasca
0000 00000 ;from Your Sinclair, Feb'88
0000 00000 ;
0000 00000 ;I added the FINISH step to
0000 00000 ;load BC with the end address,
0000 00000 ;so that USR 65200-50000 will
0000 00000 ;give the compressed screen
0000 00000 ;length. [JimG]
0000 00000 org 65200
FEB0 210040 00000 COMP ld hl,16384
FEB3 1150C3 00000 ld de,50000
FEB6 7E 00000 LOOP1 ld a,(hl)
FEB7 A7 00000 and a
FEB8 12 00000 ld (de),a
FEB9 280A 00000 jr z,ZERO
FEBB 23 00000 inc hl
FEBC 13 00000 CONT inc de
FEBD 3E5B 00000 ld a,91
FEBF BC 00000 cp h
FEC0 20F4 00000 jr nz,LOOP1
FEC2 42 00000 FINISH ld b,d
FEC3 4B 00000 ld c,e
FEC4 C9 00000 ret
FEC5 4F 00000 ZERO ld c,a
FEC6 13 00000 inc de
FEC7 23 00000 LOOP2 inc hl
FEC8 3E5B 00000 ld a,91
FECA BC 00000 cp h
FECB 79 00000 ld a,c
FECC 12 00000 ld (de),a
FECD 28F3 00000 jr z,FINISH
FECF AF 00000 xor a
FED0 BE 00000 cp (hl)
FED1 20E9 00000 jr nz,CONT
FED3 0C 00000 inc c
FED4 20F1 00000 jr nz,LOOP2
FED6 18E4 00000 jr CONT
FED8 00000 ;
FED8 00000 org 65248
FEE0 F3 00000 EXPAND di
FEE1 110040 00000 ld de,16384
FEE4 2150C3 00000 ld hl,50000
FEE7 7E 00000 LOOP3 ld a,(hl)
FEE8 A7 00000 and a
FEE9 12 00000 ld (de),a
FEEA 2009 00000 jr nz,RICONT
FEEC 23 00000 inc hl
FEED 46 00000 ld b,(hl)
FEEE B8 00000 cp b
FEEF 2804 00000 jr z,RICONT
FEF1 13 00000 LOOP4 inc de
FEF2 12 00000 ld (de),a
FEF3 10FC 00000 djnz LOOP4
FEF5 13 00000 RICONT inc de
FEF6 23 00000 inc hl
FEF7 3E5B 00000 ld a,91
FEF9 BA 00000 cp d
FEFA 20EB 00000 jr nz,LOOP3
FEFC FB 00000 ei
FEFD C9 00000 ret