mirror of
https://github.com/GnoConsortium/gno.git
synced 2024-06-30 16:29:47 +00:00
Changes for gsh version 2.0d9:
Added additional optional debug code. A version of gsh with the memory checking debug code turned on is available as an exe file. Lock and unlock the hash mutual exclusion key in when disposing of the hash table. Allow five digits rather than four when printing the process number in the ps command. Piping the output of a command into a non-executable file no longer causes gsh to hang.
This commit is contained in:
parent
d4ee658beb
commit
e586eeefeb
|
@ -1,6 +1,25 @@
|
||||||
GSH 2.0 UPDATES
|
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
|
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
|
of mutex could cause one fork to modify a memory table while
|
||||||
another fork was searching it, leaving one or both processes
|
another fork was searching it, leaving one or both processes
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
* Jawaid Bazyar
|
* Jawaid Bazyar
|
||||||
* Tim Meekins
|
* 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
|
ldy #2
|
||||||
lda [ps],y ;ps->pid
|
lda [ps],y ;ps->pid
|
||||||
Int2Dec (@a,#pidstr,#4,#0)
|
Int2Dec (@a,#pidstr,#5,#0)
|
||||||
ldx #^pidstr
|
ldx #^pidstr
|
||||||
lda #pidstr
|
lda #pidstr
|
||||||
jsr puts
|
jsr puts
|
||||||
|
@ -1714,8 +1714,8 @@ return return 2:status
|
||||||
|
|
||||||
usage dc c'Usage: ps',h'0d00'
|
usage dc c'Usage: ps',h'0d00'
|
||||||
kvmerrstr dc c'ps: error in kvm_open()',h'0d00'
|
kvmerrstr dc c'ps: error in kvm_open()',h'0d00'
|
||||||
header dc c' ID STATE TT MMID UID TIME COMMAND',h'0d00'
|
header dc c' ID STATE TT MMID UID TIME COMMAND',h'0d00'
|
||||||
pidstr dc c'0000 ',h'00'
|
pidstr dc c'00000 ',h'00'
|
||||||
userstr dc c' 0000 ',h'00'
|
userstr dc c' 0000 ',h'00'
|
||||||
puidstr dc c'0000 ',h'00'
|
puidstr dc c'0000 ',h'00'
|
||||||
timestr dc c'000:00 ',h'00'
|
timestr dc c'000:00 ',h'00'
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
* Jawaid Bazyar
|
* Jawaid Bazyar
|
||||||
* Tim Meekins
|
* 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]
|
loop lda [buf]
|
||||||
incad buf
|
incad buf
|
||||||
and2 @a,#$FF,ch ch = next character.
|
and #$00FF
|
||||||
|
sta ch ch = next character.
|
||||||
bne switch
|
bne switch
|
||||||
|
|
||||||
; End of string detected. Action depends upon current state.
|
; End of string detected. Action depends upon current state.
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
* Jawaid Bazyar
|
* Jawaid Bazyar
|
||||||
* Tim Meekins
|
* 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?
|
cmp #6 == $00000006?
|
||||||
bne filematch
|
bne filematch
|
||||||
lda nwAux+2
|
lda nwAux+2
|
||||||
bne filematch No; try next wildcard.
|
jne filematch No; try next wildcard.
|
||||||
bra notdir It's shell cmd file.
|
bra notdir It's shell cmd file.
|
||||||
;
|
;
|
||||||
; Not looking for a command
|
; Not looking for a command
|
||||||
|
@ -1359,7 +1359,7 @@ q equ 4 locations.
|
||||||
jeq endhash
|
jeq endhash
|
||||||
ldy #0
|
ldy #0
|
||||||
ldx t_size
|
ldx t_size
|
||||||
eq_endhash beq endhash
|
eq_endhash jeq endhash
|
||||||
;
|
;
|
||||||
; loop through every hashed file and add it the string vector
|
; loop through every hashed file and add it the string vector
|
||||||
;
|
;
|
||||||
|
|
|
@ -1928,13 +1928,10 @@ skip&syscnt anop
|
||||||
MACRO
|
MACRO
|
||||||
&lab ~NEW
|
&lab ~NEW
|
||||||
&lab anop
|
&lab anop
|
||||||
* -- Portion needed for debug version
|
|
||||||
* jsl DB~NEW
|
|
||||||
*
|
|
||||||
* -- Rest is for non-debug version
|
|
||||||
using memglobal
|
using memglobal
|
||||||
lock memmutex
|
lock memmutex
|
||||||
jsl ~NEW
|
* jsl DB~NEW ; DEBUG VERSION
|
||||||
|
jsl ~NEW ; NON-DEBUG VERSION
|
||||||
unlock memmutex
|
unlock memmutex
|
||||||
MEND
|
MEND
|
||||||
|
|
||||||
|
@ -1945,13 +1942,10 @@ skip&syscnt anop
|
||||||
MACRO
|
MACRO
|
||||||
&lab ~DISPOSE
|
&lab ~DISPOSE
|
||||||
&lab anop
|
&lab anop
|
||||||
* -- Portion needed for debug version
|
|
||||||
* jsl DB~DISPOSE
|
|
||||||
*
|
|
||||||
* -- Rest is for non-debug version
|
|
||||||
using memglobal
|
using memglobal
|
||||||
lock memmutex
|
lock memmutex
|
||||||
jsl ~DISPOSE
|
* jsl DB~DISPOSE ; DEBUG VERSION
|
||||||
|
jsl ~DISPOSE ; NON-DEBUG VERSION
|
||||||
unlock memmutex
|
unlock memmutex
|
||||||
MEND
|
MEND
|
||||||
|
|
||||||
|
@ -1971,9 +1965,11 @@ skip&syscnt anop
|
||||||
* lock
|
* lock
|
||||||
********************
|
********************
|
||||||
MACRO
|
MACRO
|
||||||
&lab lock &a1
|
&lab lock &key
|
||||||
&lab lda #1
|
&lab anop
|
||||||
tsb &a1
|
* jsr DB~CHKBNK ; TEMPORARY DEBUG CODE
|
||||||
|
lda #1
|
||||||
|
tsb &key
|
||||||
beq *+6
|
beq *+6
|
||||||
cop $7F
|
cop $7F
|
||||||
bra *-7
|
bra *-7
|
||||||
|
@ -1983,6 +1979,8 @@ skip&syscnt anop
|
||||||
* unlock
|
* unlock
|
||||||
********************
|
********************
|
||||||
MACRO
|
MACRO
|
||||||
&lab unlock &a1
|
&lab unlock &key
|
||||||
&lab stz &a1
|
&lab anop
|
||||||
|
* jsr DB~CHKBNK ; TEMPORARY DEBUG CODE
|
||||||
|
stz &key
|
||||||
MEND
|
MEND
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* Resources for version and comment
|
* 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"
|
#define PROG "gsh"
|
||||||
|
@ -16,7 +16,7 @@
|
||||||
resource rVersion (1, purgeable3) {
|
resource rVersion (1, purgeable3) {
|
||||||
{ 2, 0, 0, /* Version 2.0.0 */
|
{ 2, 0, 0, /* Version 2.0.0 */
|
||||||
development, /* development|alpha|beta|final|release */
|
development, /* development|alpha|beta|final|release */
|
||||||
8 }, /* non-final release number */
|
9 }, /* non-final release number */
|
||||||
verUS, /* Country */
|
verUS, /* Country */
|
||||||
PROG, /* Program name */
|
PROG, /* Program name */
|
||||||
DESC
|
DESC
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
* Jawaid Bazyar
|
* Jawaid Bazyar
|
||||||
* Tim Meekins
|
* 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)
|
; Check for filetype $B0, subtype $0006: Shell command file (EXEC)
|
||||||
cmp #$B0
|
cmp #$B0
|
||||||
bne nextfile
|
jne nextfile
|
||||||
lda DRecAuxType
|
lda DRecAuxType
|
||||||
cmp #$06
|
cmp #$06
|
||||||
bne nextfile
|
bne nextfile
|
||||||
|
@ -1146,6 +1146,7 @@ dispose_hash START
|
||||||
|
|
||||||
using hashdata
|
using hashdata
|
||||||
|
|
||||||
|
lock hashmutex
|
||||||
ora2 hash_table,hash_table+2,@a
|
ora2 hash_table,hash_table+2,@a
|
||||||
beq done
|
beq done
|
||||||
|
|
||||||
|
@ -1178,7 +1179,8 @@ next1 ply Restore path index
|
||||||
stz hash_table
|
stz hash_table
|
||||||
stz hash_table+2
|
stz hash_table+2
|
||||||
|
|
||||||
done rts
|
done unlock hashmutex
|
||||||
|
rts
|
||||||
|
|
||||||
END
|
END
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
* Jawaid Bazyar
|
* Jawaid Bazyar
|
||||||
* Tim Meekins
|
* 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:
|
ldx #^err1 Print error message:
|
||||||
lda #err1 'Not executable.'
|
lda #err1 'Not executable.'
|
||||||
jsr errputs
|
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.
|
pei (ptr) GS/OS string with path.
|
||||||
jsl nullfree
|
jsl nullfree
|
||||||
jmp done
|
jmp chkpipe If pipe was allocated, clean up.
|
||||||
|
|
||||||
*
|
*
|
||||||
* ---------------------------------------------------------------
|
* ---------------------------------------------------------------
|
||||||
|
@ -477,7 +477,11 @@ doShell anop
|
||||||
case off
|
case off
|
||||||
|
|
||||||
jsr postfork
|
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...
|
; Forked shell starts here...
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
* Jawaid Bazyar
|
* Jawaid Bazyar
|
||||||
* Tim Meekins
|
* 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.
|
; Parse gsh's command-line arguments.
|
||||||
|
|
||||||
argloop dec argc Decrement argument count.
|
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
|
clc
|
||||||
lda argv Point to next
|
lda argv Point to next
|
||||||
adc #4 argument pointer.
|
adc #4 argument pointer.
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
* Jawaid Bazyar
|
* Jawaid Bazyar
|
||||||
* Tim Meekins
|
* 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
|
lda [hand],y
|
||||||
sta ptr+2
|
sta ptr+2
|
||||||
|
|
||||||
;
|
*;
|
||||||
; Fill memory with recognizable pattern
|
*; Fill memory with recognizable pattern
|
||||||
;
|
*;
|
||||||
lda #"~~"
|
* lda #"~~"
|
||||||
ldy size
|
* ldy size
|
||||||
dec_index dey
|
*dec_index dey
|
||||||
dey
|
* dey
|
||||||
bmi full
|
* bmi full
|
||||||
sta [ptr],y
|
* sta [ptr],y
|
||||||
bra dec_index
|
* bra dec_index
|
||||||
|
*
|
||||||
full short a In case size was odd,
|
*full short a In case size was odd,
|
||||||
sta [ptr] be sure the first byte
|
* sta [ptr] be sure the first byte
|
||||||
long a gets the pattern.
|
* long a gets the pattern.
|
||||||
|
|
||||||
goback return 4:ptr Return pointer to caller.
|
goback return 4:ptr Return pointer to caller.
|
||||||
|
|
||||||
|
@ -156,3 +156,27 @@ okay DisposeHandle hand Deallocate the memory.
|
||||||
goback return
|
goback return
|
||||||
|
|
||||||
END
|
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
|
||||||
|
|
Loading…
Reference in New Issue
Block a user