Difference between revisions of "ACU March 1985 - Type-ins"

From CPCWiki - THE Amstrad CPC encyclopedia!
Jump to: navigation, search
(Manipulating the Amstrad CPC464 Screen Display)
 
(28 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
Return to [[ACU Type Ins|ACU Type-Ins]]
 
Return to [[ACU Type Ins|ACU Type-Ins]]
 
 
__TOC__
 
__TOC__
 
=Downloads=
 
=Downloads=
[[media:Acu_march_1985.zip|Disk Image]]
+
[[media:acu8503.zip|Disk Image]]
 
+
=Cover image=
=Cover Image=
+
[[image:acu8503.png]]
[[image:Acu_march_1985_cover.png]]
+
 
+
 
=Boolean operations demonstration=
 
=Boolean operations demonstration=
 
RUN"BOOLEAN"<br/>
 
RUN"BOOLEAN"<br/>
[[image:Acu_Boolean1.png|192px]]
+
[[image:acu8503boolean1.png|384px]]
[[image:Acu_Boolean2.png|192px]]
+
[[image:acu8503boolean2.png|384px]]
 
+
 
=Electric Eddy=
 
=Electric Eddy=
 
RUN"EDDY"<br/>
 
RUN"EDDY"<br/>
[[image:Acu_Eddy1.png|192px]]
+
[[image:acu8503eddy1.png|384px]]
[[image:Acu_Eddy2.png|192px]]
+
[[image:acu8503eddy2.png|384px]]<br/><br/>
[[image:Acu_Eddy3.png|192px]]
+
[[image:acu8503eddy3.png|384px]]
[[image:Acu_Eddy4.png|192px]]
+
[[image:acu8503eddy4.png|384px]]<br/><br/>
[[image:Acu_Eddy5.png|192px]]
+
[[image:acu8503eddy5.png|384px]]
[[image:Acu_Eddy6.png|192px]]
+
[[image:acu8503eddy6.png|384px]]<br/><br/>
[[image:Acu_Eddy7.png|192px]]
+
[[image:acu8503eddy7.png|384px]]
[[image:Acu_Eddy8.png|192px]]
+
[[image:acu8503eddy8.png|384px]]
 
+
 
=Electric Fencing=
 
=Electric Fencing=
 
RUN"FENCING"<br/>
 
RUN"FENCING"<br/>
[[image:Acu_Fencing1.png|192px]]
+
[[image:acu8503fencing1.png|384px]]
[[image:Acu_Fencing2.png|192px]]
+
[[image:acu8503fencing2.png|384px]]<br/><br/>
[[image:Acu_Fencing3.png|192px]]
+
[[image:acu8503fencing3.png|384px]]
[[image:Acu_Fencing4.png|192px]]
+
[[image:acu8503fencing4.png|384px]]
 
+
 
=Flashman=
 
=Flashman=
 
RUN"FLASHMAN"<br/>
 
RUN"FLASHMAN"<br/>
[[image:Acu_Flash1.png|192px]]
+
[[image:acu8503flash1.png|384px]]
[[image:Acu_Flash2.png|192px]]
+
[[image:acu8503flash2.png|384px]]<br/><br/>
[[image:Acu_Flash3.png|192px]]
+
[[image:acu8503flash3.png|384px]]
[[image:Acu_Flash4.png|192px]]
+
[[image:acu8503flash4.png|384px]]<br/><br/>
[[image:Acu_Flash5.png|192px]]
+
[[image:acu8503flash5.png|384px]]
[[image:Acu_Flash6.png|192px]]
+
[[image:acu8503flash6.png|384px]]
 
+
 
=Jeremy Vine's music routine=
 
=Jeremy Vine's music routine=
RUN"MUSIC"<br/>
+
RUN"MUSIC"
[[image:Acu_Music1.png|192px]]
+
 
+
 
=Machine code fill routine and demonstration=
 
=Machine code fill routine and demonstration=
 
RUN"MCFILL"<br/>
 
RUN"MCFILL"<br/>
[[image:Acu_Mcfill1.png|192px]]
+
[[image:acu8503mcfill1.png|384px]]
[[image:Acu_Mcfill2.png|192px]]
+
[[image:acu8503mcfill2.png|384px]]<br/><br/>
[[image:Acu_Mcfill3.png|192px]]
+
[[image:acu8503mcfill3.png|384px]]
[[image:Acu_Mcfill4.png|192px]]
+
[[image:acu8503mcfill4.png|384px]]
 
+
 
=Manipulating the Amstrad CPC464 Screen Display=
 
=Manipulating the Amstrad CPC464 Screen Display=
SCREEN1.ASM, SCREEN2.ASM, SCREEN3.ASM, SCREEN4.ASM, SCREEN5.ASM contain the Z80 assembler code for the "Manipulating the Amstrad CPC464 Screen Display" article.<br/>
+
File(s) associated with this article:<br/>
 +
- SCREEN1.ASM<br/>
 +
- SCREEN2.ASM<br/>
 +
- SCREEN3.ASM<br/>
 +
- SCREEN4.ASM<br/>
 +
- SCREEN5.ASM<br/>
 
See Amstrad Computer User, March 1985, page 103 for more details.
 
See Amstrad Computer User, March 1985, page 103 for more details.
 
 
=Number Sort routine=
 
=Number Sort routine=
 
RUN"SORT"<br/>
 
RUN"SORT"<br/>
[[image:Acu_Sort1.png|192px]]
+
[[image:acu8503sort1.png|384px]]
[[image:Acu_Sort2.png|192px]]
+
[[image:acu8503sort2.png|384px]]<br/><br/>
[[image:Acu_Sort3.png|192px]]
+
[[image:acu8503sort3.png|384px]]
[[image:Acu_Sort4.png|192px]]
+
[[image:acu8503sort4.png|384px]]
 
+
 
=Prime Numbers (1)=
 
=Prime Numbers (1)=
 
RUN"PASCAL3"<br/>
 
RUN"PASCAL3"<br/>
[[image:Acu_Pascal3_1.png|192px]]
+
[[image:acu8503pascal1.png|384px]]
[[image:Acu_Pascal3_2.png|192px]]
+
[[image:acu8503pascal2.png|384px]]
 
+
 
=Prime Numbers (2)=
 
=Prime Numbers (2)=
 
RUN"PASCAL4"<br/>
 
RUN"PASCAL4"<br/>
[[image:Acu_Pascal4_1.png|192px]]
+
[[image:acu8503pascal3.png|384px]]
[[image:Acu_Pascal4_2.png|192px]]
+
[[image:acu8503pascal4.png|384px]]
 
+
=Screen Dump=
=Screen Dump (DMP1)=
+
File(s) associated with this article:<br/>
DMPDMP1.ASM contains the Z80 assembler code for the "Events & Screen Dumps" article.<br/>
+
- DMPDMP1.ASM<br/>
DMPLIST2.BAS and DMPLIST4.BAS contain the related BASIC code.<br/>
+
- DMPEPSON.ASM<br/>
 +
- DMPDMP1.BIN<br/>
 +
- DMPEPSON.BIN<br/>
 +
- DMPLIST2.BAS<br/>
 +
- DMPLIST4.BAS<br/>
 
See Amstrad Computer User, March 1985, page 90 for more details.
 
See Amstrad Computer User, March 1985, page 90 for more details.
 
=Screen Dump (Epson)=
 
DMPEPSON.ASM contains the Z80 assembler code for the "Events & Screen Dumps" article.<br/>
 
DMPLIST2.BAS and DMPLIST4.BAS contain the related BASIC code.<br/>
 
See Amstrad Computer User, March 1985, page 90 for more details.
 
 
 
=Sum Numbers=
 
=Sum Numbers=
RUN"PASCAL5"<br/>
+
RUN"PASCAL5"
[[image:Acu_Pascal5_1.png|192px]]
+
[[image:Acu_Pascal5_2.png|192px]]
+
 
+
 
=Trench=
 
=Trench=
 
RUN"TRENCH"<br/>
 
RUN"TRENCH"<br/>
[[image:Acu_Trench1.png|192px]]
+
[[image:acu8503trench1.png|384px]]
[[image:Acu_Trench2.png|192px]]
+
[[image:acu8503trench2.png|384px]]<br/><br/>
[[image:Acu_Trench3.png|192px]]
+
[[image:acu8503trench3.png|384px]]
[[image:Acu_Trench4.png|192px]]
+
[[image:acu8503trench4.png|384px]]<br/><br/>
[[image:Acu_Trench5.png|192px]]
+
[[image:acu8503trench5.png|384px]]
[[image:Acu_Trench6.png|192px]]
+
[[image:acu8503trench6.png|384px]]<br/><br/>
[[image:Acu_Trench7.png|192px]]
+
[[image:acu8503trench7.png|384px]]
 
+
 
=Unerase=
 
=Unerase=
The Z80 assembler code for David Link's Unerase program.<br/>
+
File(s) associated with this article:<br/>
See Amstrad Computer User, March 1985, page 40 for more details.
+
- UNERASE.ASM<br/>
<pre>
+
See Amstrad Computer User, August/September 1984, page 40 for more details.
; Unerase a file in CP/M - 04/11/84
+
; Copyright David Link 1984
+
 
+
; A program to unerase a file that has been accidentally
+
; erased. Should be used immediately after erasing the
+
; file since if user later, some blocks may have been re-used.
+
 
+
; Format is - UNERA filename
+
 
+
DEFCB EQU &5C
+
 
+
fnamelen EQU 8
+
extlen EQU 3
+
extent EQU 12
+
dirlen EQU 32
+
 
+
; CP/M BDOS call numbers
+
 
+
OPEN EQU 15
+
CLOSE EQU 16
+
SEARCH EQU 17
+
SRCH_AGAIN EQU 18
+
MAKE EQU 22
+
SETDMA EQU 26
+
 
+
; Default workspace for file reads
+
 
+
tbuff EQU 128
+
 
+
; Macro to call CP/M setting DE and C
+
 
+
DOS MAC
+
LD DE,=0
+
LD C,=1
+
CALL Dos
+
ENDM
+
 
+
; Macro to call CP/M setting C.
+
 
+
SDOS MAC
+
LD C,=0
+
CALL Dos
+
ENDM
+
 
+
; COM files begin at &100
+
 
+
ORG &100
+
 
+
LD SP,(6) ; set stack to top of TPA
+
DOS DEFCB,SEARCH ; Does file exist?
+
INC A
+
JP NZ,0 ; File exists, return to CCP
+
LD HL,FCBSPACE ; Initialise pointer to current FCB
+
LD (FCBPTR),HL
+
DOS tbuff,SETDMA ; set disc I/O to tbuff
+
DOS DUMFCB,SEARCH ; and search for the first entry in directory
+
 
+
More_Search INC A
+
JR Z,End_of_Directory ; No more entries
+
 
+
; Compare found filename with the required filename
+
 
+
Continue DEC A ; adjust because we INCed it
+
ADD A,A ; multiply by dirlen to get postion
+
ADD A,A ; of entry in catalogue
+
ADD A,A
+
ADD A,A
+
ADD A,A
+
LD D,0
+
LD E,A
+
LD HL,tbuff ; point to found file
+
ADD HL,DE
+
 
+
Again PUSH HL ; and compare it with required filename
+
INC HL
+
LD B,fnamelen+extlen ; both name and type (8, name : 3, type)
+
LD DE,DEFCB+1 ; filename starts at FCB + 1
+
 
+
Match LD A,(DE)
+
LD C,(HL)
+
RES 7,C ; some CP/Ms set bits on filename
+
CP C ; so make sure top bit is reset for comparison
+
INC HL
+
INC DE
+
JR NZ,NoMatch ; not this one
+
DJNZ Match ; good so far... keep going
+
 
+
; Match found
+
 
+
POP HL ; filename match, but...
+
PUSH HL
+
LD A,(HL) ; ... is it erased?
+
CP &E5 ; e% in first byte of directory = erased
+
JR NZ,NoMatch ; not erased... so search some more
+
LD (HL),0 ; it was erased, so unerase it
+
LD DE,(FCBPTR) ; and store the FCB information in
+
LD BC,dirlen ; our temporary table
+
LDIR
+
LD (FCBPTR),DE ; updating our table pointer afterwards
+
 
+
; Search for another entry
+
 
+
NoMatch POP HL
+
DOS DUMFCB,SRCH_AGAIN ; search for next entry in directory
+
JR More_Search
+
 
+
; we have now exhausted the directory search and built
+
; up our table of directory entries for the required file
+
 
+
End_of_Dir LD DE,FCBSPACE ; start processing table of matched
+
; directory entries
+
MAIN_LOOP LD HL,(FCBPTR) ; have we reached end of table?
+
OR A
+
SBC HL,DE
+
JP Z,0 ; finished, so return
+
PUSH DE ; save table pointer
+
LD HL,extent ; address extent byte
+
ADD HL,DE
+
LD A,(HL) ; make an extent of new,
+
LD (DEFCB+extent),a ; unerased file...
+
DOS DEFCB,MAKE
+
POP DE ; recover pointer to FCB...
+
SDOS CLOSE ; and close it
+
LD HL,dirlen
+
ADD HL,DE ; have we reached end of table?
+
EX DE,HL
+
JR MAIN_LOOP
+
 
+
Dos PUSH HL
+
PUSH DE
+
PUSH BC
+
CALL 5
+
POP BC
+
POP DE
+
POP HL
+
RET
+
 
+
FCBPTR DEFS 2
+
 
+
DUMFCB DEFM "????????????"
+
DEFW 0,0
+
DEFS 16
+
DEFW 0,0
+
 
+
FCBSPACE EQU $
+
</pre>
+
 
+
 
[[Category:Type Ins]]
 
[[Category:Type Ins]]

Latest revision as of 09:38, 24 January 2010

Return to ACU Type-Ins

Downloads

Disk Image

Cover image

Acu8503.png

Boolean operations demonstration

RUN"BOOLEAN"
Acu8503boolean1.png Acu8503boolean2.png

Electric Eddy

RUN"EDDY"
Acu8503eddy1.png Acu8503eddy2.png

Acu8503eddy3.png Acu8503eddy4.png

Acu8503eddy5.png Acu8503eddy6.png

Acu8503eddy7.png Acu8503eddy8.png

Electric Fencing

RUN"FENCING"
Acu8503fencing1.png Acu8503fencing2.png

Acu8503fencing3.png Acu8503fencing4.png

Flashman

RUN"FLASHMAN"
Acu8503flash1.png Acu8503flash2.png

Acu8503flash3.png Acu8503flash4.png

Acu8503flash5.png Acu8503flash6.png

Jeremy Vine's music routine

RUN"MUSIC"

Machine code fill routine and demonstration

RUN"MCFILL"
Acu8503mcfill1.png Acu8503mcfill2.png

Acu8503mcfill3.png Acu8503mcfill4.png

Manipulating the Amstrad CPC464 Screen Display

File(s) associated with this article:
- SCREEN1.ASM
- SCREEN2.ASM
- SCREEN3.ASM
- SCREEN4.ASM
- SCREEN5.ASM
See Amstrad Computer User, March 1985, page 103 for more details.

Number Sort routine

RUN"SORT"
Acu8503sort1.png Acu8503sort2.png

Acu8503sort3.png Acu8503sort4.png

Prime Numbers (1)

RUN"PASCAL3"
Acu8503pascal1.png Acu8503pascal2.png

Prime Numbers (2)

RUN"PASCAL4"
Acu8503pascal3.png Acu8503pascal4.png

Screen Dump

File(s) associated with this article:
- DMPDMP1.ASM
- DMPEPSON.ASM
- DMPDMP1.BIN
- DMPEPSON.BIN
- DMPLIST2.BAS
- DMPLIST4.BAS
See Amstrad Computer User, March 1985, page 90 for more details.

Sum Numbers

RUN"PASCAL5"

Trench

RUN"TRENCH"
Acu8503trench1.png Acu8503trench2.png

Acu8503trench3.png Acu8503trench4.png

Acu8503trench5.png Acu8503trench6.png

Acu8503trench7.png

Unerase

File(s) associated with this article:
- UNERASE.ASM
See Amstrad Computer User, August/September 1984, page 40 for more details.