diff --git a/SOFTCARD65#ff2000 b/SOFTCARD65#ff2000 index 5f0dce8..5f676fe 100644 Binary files a/SOFTCARD65#ff2000 and b/SOFTCARD65#ff2000 differ diff --git a/SOFTCARD65.S#040000 b/SOFTCARD65.S#040000 index 01c5cfd..3b8e746 100644 --- a/SOFTCARD65.S#040000 +++ b/SOFTCARD65.S#040000 @@ -1 +1 @@ - ڸ 䍪 ڸ 퍠 Ơ ӍĠՠô Ġՠ Ǡՠ ڸǠՠ ڸǠՠ ڸҠՠ  ڸȠՠà ҍӠՠĠ ڸ ̠ՠĠ ԠՠĠ Šՠ ԠՠĸŠ Ơՠ° ɯ ҠՠĠ Ơ 썍Ҡ ¸ 򍍪 ΍ ҍ Ԡ Ԡ Ҡ Ҡ ٠̱٠ 占٠à Šӱ à ӱà ŠӲ à Ӳ РΠ 俍Š̱ РΠ 俍Š̱ РҠ 卍ԍǠҠ ٠Ҡà 占 ؠ̱ƵؠؠؠŠ̱ҠР 占Ѡӱ ҠŠ 占ҠҠ 򢍠РŠ ӱΠ 퍠Π čҠĠ 占ѠӲ ҠŠ 占ҠҠ 򢍠РŠ Ӳë ҠŠ à ҠŠ ҠԠ Ҡ̠ 占Ҡà 卍Ҡ̠ 䍠Ѡӳ ҠŠ 占ҠҠ 򢍠РŠ ӳΠ Π čҠ̠ 占ѠӴ ҠŠ 占ҠҠ 򢍠РŠ ӴҠ̠ 占ҠԠЍĠ ڸ ҠҠ ڸ 占РР ōˠ 򍍪 Ǡ٠ ٠ 獠 ̱٠ ٠ ҠԠ à 獠Š̱ Ӡ àŠŠҠǠҠԠӠ ҠҠҠҠǠȠȠҠǠҠԠӠ 䢍ҠҠҠҠǠҠԠӠ 䢍àȠȠҠǠǠǠҠǠҠԠӍ ȠҠĸ΢ î͢ĠҠЮ͢ ŠҠ ҠҠ ҠҠ ǠҠ 䢍 ΍РҠư 썠 ø ΍נ̠ Ӡ̠  РנȠ ̠נƠ ɯ Π  򍍪 䩍̠Ҡư 썠 ø ΍נ̠ Ӎ̠  РנĠ ̠נƠ ɯ Π  򍍪 čĠҠư 썠  čנ̠ Ӡ̠  Π   נҠ àנΠ àנ  č̠Ҡư 썠  čנ̠ Ӎ̠  Π   נ àנΠ àנ  ō̠Ҡư 썠 à ōנ̠ Ӎ̠  Π  쩍 ڸ ҠčР Ľ 占Šı 덠 РŠ 卺ıР Ľ ڸŠIJӠ Р Ǡ ؠǠ ٠Ǡ ҠР ҍǠ ؠǠ ٠Ǡ Р 덠Ӡ Ӡ ڸIJР Ľ ڸŠijҠР 썠Ǡ 占Ӡ ڸijР Ľ ڸŠĴԠð ɠóӠ 占 ǍРóŠ óӠ ǍóŠǠ ڸӠ ڸĴҠ̠ ˠ РРҩ΍ \ No newline at end of file + ڸ 䍪 ڸ 퍠 Ơ ӍĠՠô Ġՠ Ǡՠ ڸǠՠ ڸǠՠ ڸҠՠ  ڸȠՠà ҍӠՠĠ ڸ ̠ՠĠ ԠՠĠ Šՠ ԠՠĸŠ Ơՠ° ɯ ҠՠĠ Ơ 썍Ҡ ¸ 򍍪 ΍ ҍ Ԡ Ԡ Ҡ Ҡ ٠̱٠ 占٠à Šӱ à ӱà ŠӲ à Ӳ РΠ 俍Š̱ РΠ 俍Š̱ РҠ 卍ԍǠҠ ٠Ҡà 占 ؠ̱ƵؠؠؠŠ̱ҠР 占Ѡӱ ҠŠ 占ҠҠ 򢍠РŠ ӱΠ 퍠Π čҠĠ 占ѠӲ ҠŠ 占ҠҠ 򢍠РŠ Ӳë ҠŠ à ҠŠ ҠԠ Ҡ̠ 占Ҡà 卍 䍠 ӳ 򍠻 占 򢍠 􍻺ӳ 򍠻 č 占 Ӵ 򍠻 占 򢍠 􍻺Ӵ 占 ЍĠ ڸ ҠҠ ڸ 占РР ōˠ 򍍪 Ǡ٠ ٠ 獠 ̱٠ ٠ ҠԠ à 獠Š̱ Ӡ àŠŠҠǠҠԠӠ ҠҠҠҠǠȠȠҠǠҠԠӠ 䢍ҠҠҠҠǠҠԠӠ 䢍àȠȠҠǠǠǠҠǠҠԠӍ ȠҠĸ΢ î͢ĠҠЮ͢ ŠҠ ҠҠ ҠҠ ǠҠ 䢍 ΍РҠư 썠 ø ΍נ̠ Ӡ̠  РנȠ ̠נƠ ɯ Π  򍍪 䩍̠Ҡư 썠 ø ΍נ̠ Ӎ̠  РנĠ ̠נƠ ɯ Π  򍍪 čĠҠư 썠  čנ̠ Ӡ̠  Π   נҠ àנΠ àנ  č̠Ҡư 썠  čנ̠ Ӎ̠  Π   נ àנΠ àנ  ō̠Ҡư 썠 à ōנ̠ Ӎ̠  Π  쩍 ڸ ҠčР Ľ 占Šı 덠 РŠ 卺ıР Ľ ڸŠIJӠ Р Ǡ ؠǠ ٠Ǡ ҠР ҍǠ ؠǠ ٠Ǡ Р 덠Ӡ Ӡ ڸIJР Ľ ڸŠijҠР 썠Ǡ 占Ӡ ڸijР Ľ ڸŠĴԠð ɠóӠ 占 ǍРóŠ óӠ ǍóŠǠ ڸӠ ڸĴҠ̠ ˠ РРҩ΍ \ No newline at end of file diff --git a/SOFTCARD80.ASM#040000 b/SOFTCARD80.ASM#040000 index b976c75..8ee931b 100644 --- a/SOFTCARD80.ASM#040000 +++ b/SOFTCARD80.ASM#040000 @@ -124,6 +124,8 @@ PROGSTRT LD DE,WELCOME ; Address of string LD C,B_C_WRTSTR ; CALL BDOS ; + CALL CCP ; Run the CCP + ; Print the alphabet using C_WRITE LD B,'A' ; First character L1 LD E,B ; Character to print @@ -1868,6 +1870,41 @@ N2H2 OR 0F0H ; INC DE ; RET + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; Very simple CCP +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +; Get a line of text from the console & handle it +CCP LD DE,PRMSG ; Display the prompt + CALL C_WRITESTR ; ... + + LD DE,FILEBUF ; Use FILEBUF as line buffer + LD A,120 ; Max line length + LD (DE),A ; Stored in first char of buffer + CALL C_READSTR ; Get a line from the user + + LD HL,(DMAADDR) ; Preserve DMAADDR + PUSH HL ; ... + LD HL,FCB1 ; Set DMAADDR to point to FCB1 + LD (DMAADDR),HL ; ... + LD HL,FILEBUF+1 ; Skip over capacity byte + LD B,0 ; Hard code drive A: for now + CALL PATH2FCB ; Create FCB at FCB1 + POP HL ; Restore DMAADDR + LD (DMAADDR),HL ; + LD DE,FCB1 ; Point to our new FCB + + LD HL,FILEBUF ; Stuff zero in first char of FILEBUF + LD A,0 ; ... + LD (HL),A ; ... + + LD DE,FCB1 ; Use FCB1 + CALL RUNCOM ; Try to run it + JP CCP ; Go again + +PRMSG DEFM 'A>$' + ; Load and run a .COM file to 0100H ; DE is the address of the FCB describing the file to run RUNCOM CALL F_OPEN ; @@ -1878,23 +1915,39 @@ RUNCOM CALL F_OPEN ; LD HL,0100H ; Set DMAADDR to 0100H LD (DMAADDR),HL ; ... RCL1 CALL F_READ ; Read records until done - CP 0 ; ... - JP Z,RCL1 ; ... + PUSH AF ; Preserve A + LD HL,(DMAADDR) ; Advance DMAADDR for each record + LD BC,80H ; ... + ADD HL,BC ; ... + LD (DMAADDR),HL ; ... + POP AF ; Restore A + CP 0 ; Check return code from F_READ + JP Z,RCL1 ; If zero, keep looping + CP 1 ; Check return code from F_READ + JP NZ,RCLERR ; If not EOF (1), then error POP HL ; Restore DMAADDR LD (DMAADDR),HL ; ... - CP 1 ; Check it was EOF - JP NZ,RCLERR ; Load error - JP PROGSTRT ; 0100H - RET + LD DE,LMSG ; Print 'Loaded' + CALL C_WRITESTR ; ... + CALL PROGSTRT ; 0100H + RET ; RCOERR LD DE,OEMSG ; 'Open error' message CALL C_WRITESTR ; RET RCLERR LD DE,REMSG ; 'Read error' message CALL C_WRITESTR ; + POP HL ; Restore DMAADDR + LD (DMAADDR),HL ; ... RET -OEMSG DEFM 'Not found',13,'$' -REMSG DEFM 'Read error',13,'$' +LMSG DEFM 'Loaded' + DEFB 13,'$' + +OEMSG DEFM 'Not found' + DEFB 13,'$' + +REMSG DEFM 'Read error' + DEFB 13,'$' ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Additional private scratch space for BDOS diff --git a/SOFTCARD80.BIN#041000 b/SOFTCARD80.BIN#041000 index f6003ed..2601c0f 100644 Binary files a/SOFTCARD80.BIN#041000 and b/SOFTCARD80.BIN#041000 differ diff --git a/zapple2.po b/zapple2.po index 6646102..c825d58 100644 Binary files a/zapple2.po and b/zapple2.po differ