diff --git a/bin/gsh/UpdateLog b/bin/gsh/UpdateLog index dc9e8a8..5337144 100644 --- a/bin/gsh/UpdateLog +++ b/bin/gsh/UpdateLog @@ -1,6 +1,25 @@ GSH 2.0 UPDATES ^^^^^^^^^^^^^^^ +Jan 12 99 [dmt] Add debug routine DB~CHKBNK, which causes BRK B0 if + program bank is not the same as data bank (mmdebug.asm). + Modify lock and unlock macros to call DB~CHKBNK (gsh.mac). + Needed to change branch instructions to jump macros in several + files because the code got larger. + +Jan 11 99 [dmt] Lock/unlock hashmutex in dispose_hash (hash.asm). + +Jan 3 99 [dmt] Allow five digits rather than four when printing process + id number in the ps command (builtin.asm). + +Jan 1 99 [dmt] Piping the output of a command to a non-executable + file caused gsh to hang. Instead of going directly to done + after printing "Not executable" error message, go to chkpipe + in invoke.asm. + +Dec 31 98 [dmt] Changes to this point checked-in to master archive. + Released as version 2.0d8 + Dec 30 98 [dmt] Added mutual exclusion to ~NEW and ~DISPOSE macros. Lack of mutex could cause one fork to modify a memory table while another fork was searching it, leaving one or both processes diff --git a/bin/gsh/builtin.asm b/bin/gsh/builtin.asm index cea78eb..baebff7 100644 --- a/bin/gsh/builtin.asm +++ b/bin/gsh/builtin.asm @@ -6,7 +6,7 @@ * Jawaid Bazyar * Tim Meekins * -* $Id: builtin.asm,v 1.9 1998/12/31 18:29:11 tribby Exp $ +* $Id: builtin.asm,v 1.10 1999/01/14 17:44:22 tribby Exp $ * ************************************************************************** * @@ -1544,7 +1544,7 @@ loop kvmnextproc ps ldy #2 lda [ps],y ;ps->pid - Int2Dec (@a,#pidstr,#4,#0) + Int2Dec (@a,#pidstr,#5,#0) ldx #^pidstr lda #pidstr jsr puts @@ -1714,8 +1714,8 @@ return return 2:status usage dc c'Usage: ps',h'0d00' kvmerrstr dc c'ps: error in kvm_open()',h'0d00' -header dc c' ID STATE TT MMID UID TIME COMMAND',h'0d00' -pidstr dc c'0000 ',h'00' +header dc c' ID STATE TT MMID UID TIME COMMAND',h'0d00' +pidstr dc c'00000 ',h'00' userstr dc c' 0000 ',h'00' puidstr dc c'0000 ',h'00' timestr dc c'000:00 ',h'00' diff --git a/bin/gsh/cmd.asm b/bin/gsh/cmd.asm index a23cf06..b1caa5f 100644 --- a/bin/gsh/cmd.asm +++ b/bin/gsh/cmd.asm @@ -6,7 +6,7 @@ * Jawaid Bazyar * Tim Meekins * -* $Id: cmd.asm,v 1.9 1998/12/31 18:29:12 tribby Exp $ +* $Id: cmd.asm,v 1.10 1999/01/14 17:44:22 tribby Exp $ * ************************************************************************** * @@ -128,7 +128,8 @@ SINGQUOTE equ 4 ;single quote string ; loop lda [buf] incad buf - and2 @a,#$FF,ch ch = next character. + and #$00FF + sta ch ch = next character. bne switch ; End of string detected. Action depends upon current state. diff --git a/bin/gsh/edit.asm b/bin/gsh/edit.asm index 9bc11b1..cd0a5ab 100644 --- a/bin/gsh/edit.asm +++ b/bin/gsh/edit.asm @@ -6,7 +6,7 @@ * Jawaid Bazyar * Tim Meekins * -* $Id: edit.asm,v 1.10 1998/12/31 18:29:12 tribby Exp $ +* $Id: edit.asm,v 1.11 1999/01/14 17:44:24 tribby Exp $ * ************************************************************************** * @@ -1290,7 +1290,7 @@ filematch anop cmp #6 == $00000006? bne filematch lda nwAux+2 - bne filematch No; try next wildcard. + jne filematch No; try next wildcard. bra notdir It's shell cmd file. ; ; Not looking for a command @@ -1359,7 +1359,7 @@ q equ 4 locations. jeq endhash ldy #0 ldx t_size -eq_endhash beq endhash +eq_endhash jeq endhash ; ; loop through every hashed file and add it the string vector ; diff --git a/bin/gsh/gsh.mac b/bin/gsh/gsh.mac index 96695fc..293e0b4 100644 --- a/bin/gsh/gsh.mac +++ b/bin/gsh/gsh.mac @@ -1928,13 +1928,10 @@ skip&syscnt anop MACRO &lab ~NEW &lab anop -* -- Portion needed for debug version -* jsl DB~NEW -* -* -- Rest is for non-debug version using memglobal lock memmutex - jsl ~NEW +* jsl DB~NEW ; DEBUG VERSION + jsl ~NEW ; NON-DEBUG VERSION unlock memmutex MEND @@ -1945,13 +1942,10 @@ skip&syscnt anop MACRO &lab ~DISPOSE &lab anop -* -- Portion needed for debug version -* jsl DB~DISPOSE -* -* -- Rest is for non-debug version using memglobal lock memmutex - jsl ~DISPOSE +* jsl DB~DISPOSE ; DEBUG VERSION + jsl ~DISPOSE ; NON-DEBUG VERSION unlock memmutex MEND @@ -1971,9 +1965,11 @@ skip&syscnt anop * lock ******************** MACRO -&lab lock &a1 -&lab lda #1 - tsb &a1 +&lab lock &key +&lab anop +* jsr DB~CHKBNK ; TEMPORARY DEBUG CODE + lda #1 + tsb &key beq *+6 cop $7F bra *-7 @@ -1983,6 +1979,8 @@ skip&syscnt anop * unlock ******************** MACRO -&lab unlock &a1 -&lab stz &a1 +&lab unlock &key +&lab anop +* jsr DB~CHKBNK ; TEMPORARY DEBUG CODE + stz &key MEND diff --git a/bin/gsh/gsh.rez b/bin/gsh/gsh.rez index 82f1b8d..694d4d4 100644 --- a/bin/gsh/gsh.rez +++ b/bin/gsh/gsh.rez @@ -1,7 +1,7 @@ /* * Resources for version and comment * - * $Id: gsh.rez,v 1.10 1998/12/31 18:29:13 tribby Exp $ + * $Id: gsh.rez,v 1.11 1999/01/14 17:44:24 tribby Exp $ */ #define PROG "gsh" @@ -16,7 +16,7 @@ resource rVersion (1, purgeable3) { { 2, 0, 0, /* Version 2.0.0 */ development, /* development|alpha|beta|final|release */ - 8 }, /* non-final release number */ + 9 }, /* non-final release number */ verUS, /* Country */ PROG, /* Program name */ DESC diff --git a/bin/gsh/hash.asm b/bin/gsh/hash.asm index 03014d4..af2479c 100644 --- a/bin/gsh/hash.asm +++ b/bin/gsh/hash.asm @@ -6,7 +6,7 @@ * Jawaid Bazyar * Tim Meekins * -* $Id: hash.asm,v 1.8 1998/12/31 18:29:13 tribby Exp $ +* $Id: hash.asm,v 1.9 1999/01/14 17:44:24 tribby Exp $ * ************************************************************************** * @@ -644,7 +644,7 @@ loop lda entry If number of processed entries ; Check for filetype $B0, subtype $0006: Shell command file (EXEC) cmp #$B0 - bne nextfile + jne nextfile lda DRecAuxType cmp #$06 bne nextfile @@ -1146,6 +1146,7 @@ dispose_hash START using hashdata + lock hashmutex ora2 hash_table,hash_table+2,@a beq done @@ -1178,7 +1179,8 @@ next1 ply Restore path index stz hash_table stz hash_table+2 -done rts +done unlock hashmutex + rts END diff --git a/bin/gsh/invoke.asm b/bin/gsh/invoke.asm index 8632e0e..0c2ef5e 100644 --- a/bin/gsh/invoke.asm +++ b/bin/gsh/invoke.asm @@ -6,7 +6,7 @@ * Jawaid Bazyar * Tim Meekins * -* $Id: invoke.asm,v 1.10 1998/12/31 18:29:13 tribby Exp $ +* $Id: invoke.asm,v 1.11 1999/01/14 17:44:25 tribby Exp $ * ************************************************************************** * @@ -327,10 +327,10 @@ badfile ldx cpath+2 ldx #^err1 Print error message: lda #err1 'Not executable.' jsr errputs -free pei (ptr+2) Free memory used to hold + pei (ptr+2) Free memory used to hold pei (ptr) GS/OS string with path. jsl nullfree - jmp done + jmp chkpipe If pipe was allocated, clean up. * * --------------------------------------------------------------- @@ -477,7 +477,11 @@ doShell anop case off jsr postfork - jmp free + + pei (ptr+2) Free memory used to hold + pei (ptr) GS/OS string with path. + jsl nullfree + jmp done ; ; Forked shell starts here... diff --git a/bin/gsh/main.asm b/bin/gsh/main.asm index 527c845..8a26395 100644 --- a/bin/gsh/main.asm +++ b/bin/gsh/main.asm @@ -6,7 +6,7 @@ * Jawaid Bazyar * Tim Meekins * -* $Id: main.asm,v 1.7 1998/09/08 16:53:11 tribby Exp $ +* $Id: main.asm,v 1.8 1999/01/14 17:44:25 tribby Exp $ * ************************************************************************** * @@ -82,7 +82,7 @@ ok stz FastFlag ; Parse gsh's command-line arguments. argloop dec argc Decrement argument count. - beq go_start If none left, ready to start working. + jeq go_start If none left, ready to start working. clc lda argv Point to next adc #4 argument pointer. diff --git a/bin/gsh/mmdebug.asm b/bin/gsh/mmdebug.asm index 67b9e46..df9a29d 100644 --- a/bin/gsh/mmdebug.asm +++ b/bin/gsh/mmdebug.asm @@ -6,7 +6,7 @@ * Jawaid Bazyar * Tim Meekins * -* $Id: mmdebug.asm,v 1.5 1998/12/21 23:57:07 tribby Exp $ +* $Id: mmdebug.asm,v 1.6 1999/01/14 17:44:25 tribby Exp $ * ************************************************************************** * @@ -78,20 +78,20 @@ deref lda [hand] Dereference the handle. lda [hand],y sta ptr+2 -; -; Fill memory with recognizable pattern -; - lda #"~~" - ldy size -dec_index dey - dey - bmi full - sta [ptr],y - bra dec_index - -full short a In case size was odd, - sta [ptr] be sure the first byte - long a gets the pattern. +*; +*; Fill memory with recognizable pattern +*; +* lda #"~~" +* ldy size +*dec_index dey +* dey +* bmi full +* sta [ptr],y +* bra dec_index +* +*full short a In case size was odd, +* sta [ptr] be sure the first byte +* long a gets the pattern. goback return 4:ptr Return pointer to caller. @@ -156,3 +156,27 @@ okay DisposeHandle hand Deallocate the memory. goback return END + + +DB~CHKBNK START + +; Verify that data bank = program bank +; Call with jsr DB~CHKBNK + php Save Status Flags. + short m Go to 8-bit mode. + pha Save Accumulator. + phk Put Program Bank reg on stack. + phb Copy Data Bank register + pla into Accumulator. + cmp 1,s Compare DBR (in acc) to PBR (stack) + beq cleanup If not equal, + brk $B0 complain. +; +; Ready to return to the caller +; +cleanup pla Remove Program Bank reg from stack. + pla Restore original Accumulator and + plp Status Flags (including 8/16 bit mode) + rts + + END