Difference between revisions of "ACU March 1985 - Type-ins"
From CPCWiki - THE Amstrad CPC encyclopedia!
Line 13: | Line 13: | ||
<gallery widths="384px" heights="270px" perrow="2"> | <gallery widths="384px" heights="270px" perrow="2"> | ||
image:music1.png | image:music1.png | ||
+ | </gallery> | ||
+ | |||
+ | =Machine code fill routine and demonstration= | ||
+ | To run Machine code fill routine and demonstration, type:<br/> | ||
+ | RUN"MCFILL"<br/> | ||
+ | <gallery widths="384px" heights="270px" perrow="2"> | ||
+ | image:mcfill1.png | ||
+ | image:mcfill2.png | ||
+ | image:mcfill3.png | ||
+ | image:mcfill4.png | ||
</gallery> | </gallery> | ||
Line 266: | Line 276: | ||
image:flash5.png | image:flash5.png | ||
image:flash6.png | image:flash6.png | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
</gallery> | </gallery> | ||
[[Category:Type Ins]] | [[Category:Type Ins]] |
Revision as of 00:29, 27 April 2009
Return to ACU Type-Ins
Contents
Downloads
Cover Image
Jeremy Vine's music routine
To run Jeremy Vine's music routine, type:
RUN"MUSIC"
Machine code fill routine and demonstration
To run Machine code fill routine and demonstration, type:
RUN"MCFILL"
Number Sort routine
To run Number Sort routine, type:
RUN"SORT"
Prime Numbers (1)
To run Prime Numbers (1), type:
RUN"PASCAL3"
Prime Numbers (2)
To run Prime Numbers (2), type:
RUN"PASCAL4"
Sum Numbers
To run Sum Numbers, type:
RUN"PASCAL5"
Trench
To run Trench, type:
RUN"TRENCH"
Unerase
The Z80 assembler code for David Link's Unerase program.
; 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 $
IN PROGRESS
IN PROGRESS
IN PROGRESS
IN PROGRESS
IN PROGRESS
IN PROGRESS
IN PROGRESS
IN PROGRESS
IN PROGRESS
IN PROGRESS
Electric Eddy
To run Electric Eddy, type:
RUN"EDDY"
Electric Fencing
To run Electric Fencing, type:
RUN"FENCING"
Flashman
To run Flashman, type:
RUN"FLASHMAN"