mirror of
https://github.com/GnoConsortium/gno.git
synced 2024-11-18 19:09:31 +00:00
1dc5497309
(PR#85, PR#86): For login shells (command line starts with '-'), If $PATH doesn't start with ':' or contain a space, change all ":" to " ". source /etc/glogin source $HOME/glogin $HOME/gshrc is sourced afterward for both login and non-login shells. Don't the print number of hashed commands (from "rehash") until all initialization is completed. Only pass exported environment variables to child processes, and prevent child processes from changing parent's environment. A null command followed by a redirection of stdout, for example > /tmp/list would cause an error message "<garbage> not found" due to incorrect setting of command buffer pointer. Filename completion did not work following ">&" or ">" without a trailing space. Entabbed all the asm files, saving more than 36,000 bytes.
159 lines
3.0 KiB
NASM
159 lines
3.0 KiB
NASM
**************************************************************************
|
|
*
|
|
* The GNO Shell Project
|
|
*
|
|
* Developed by:
|
|
* Jawaid Bazyar
|
|
* Tim Meekins
|
|
*
|
|
* $Id: mmdebug.asm,v 1.5 1998/12/21 23:57:07 tribby Exp $
|
|
*
|
|
**************************************************************************
|
|
*
|
|
* MMDEBUG.ASM
|
|
* By Tim Meekins
|
|
* Rewritten by Dave Tribby for GNO 2.0.6
|
|
*
|
|
* Alternate routines for ~NEW and ~DISPOSE with extra debugging
|
|
*
|
|
* Note: text set up for tabs at col 16, 22, 41, 49, 57, 65
|
|
* | | | | | |
|
|
* ^ ^ ^ ^ ^ ^
|
|
**************************************************************************
|
|
*
|
|
* Interfaces defined in this file:
|
|
*
|
|
*
|
|
**************************************************************************
|
|
|
|
mcopy /obj/gno/bin/gsh/mmdebug.mac
|
|
|
|
dummymmdebug start ; ends up in .root
|
|
end
|
|
|
|
setcom 60
|
|
|
|
DB~NEW START
|
|
|
|
hand equ 0 Handle allocated by memory manager
|
|
ptr equ hand+4 Pointer dereference of handle
|
|
space equ ptr+4
|
|
|
|
subroutine (4:size),space
|
|
|
|
lda size If size is 0,
|
|
ora size+2
|
|
bne newh
|
|
brk $A1 allocation error #1.
|
|
bra foul
|
|
;
|
|
; Allocate memory block of requested size using NewHandle
|
|
;
|
|
newh anop
|
|
|
|
pha Reserve space for
|
|
pha returned handle address.
|
|
ph4 size Amount of memory to allocate.
|
|
lda ~USER_ID Add the "auxID" tag
|
|
eor #$0D00 to the user ID so we
|
|
pha can identify our allocations.
|
|
pea $C018
|
|
pea 0
|
|
pea 0
|
|
tool $0902 NewHandle (size,~USER_ID,#$C018,#0)
|
|
plx Store handle at "hand",
|
|
stx hand preserving contents of
|
|
plx possible error code
|
|
stx hand+2 in accumulator.
|
|
|
|
bcc deref If there is a MM error,
|
|
brk $A2 allocation error #2.
|
|
foul stz ptr
|
|
stz ptr+2
|
|
bra goback
|
|
|
|
deref lda [hand] Dereference the handle.
|
|
sta ptr
|
|
ldy #2
|
|
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.
|
|
|
|
goback return 4:ptr Return pointer to caller.
|
|
|
|
END
|
|
|
|
|
|
DB~DISPOSE START
|
|
hand equ 0
|
|
checkptr equ 4
|
|
space equ checkptr+4
|
|
|
|
subroutine (4:ptr),space
|
|
;
|
|
; First check: is address > $007FFFFF?
|
|
;
|
|
lda ptr+2
|
|
and #$FF80
|
|
beq findit
|
|
lda ptr
|
|
ldx ptr+2
|
|
brk $D1 Deallocate error #1.
|
|
bra goback
|
|
|
|
;
|
|
; Second check: is there a valid handle to this pointer?
|
|
;
|
|
findit FindHandle ptr,hand
|
|
|
|
lda hand Error if FindHandle
|
|
ora hand+2 returned 0.
|
|
bne ckptr
|
|
brk $D2 Deallocate error #2.
|
|
bra goback
|
|
|
|
ckptr lda [hand] Dereference the
|
|
sta checkptr found handle.
|
|
ldy #2
|
|
lda [hand],y
|
|
sta checkptr+2
|
|
|
|
cmp ptr+2 If the pointer isn't
|
|
bne errD3 the first byte
|
|
lda checkptr of the handle,
|
|
cmp ptr there is a problem.
|
|
beq chkid
|
|
errD3 brk $D3
|
|
bra goback
|
|
|
|
chkid ldy #6 Get User ID word
|
|
lda [hand],y from handle header.
|
|
eor #$0D00 Remove aux ID of $0D00.
|
|
cmp ~USER_ID
|
|
beq okay
|
|
lda [hand],y
|
|
brk $D4 Deallocate error #4.
|
|
bra goback
|
|
|
|
okay DisposeHandle hand Deallocate the memory.
|
|
bcc goback
|
|
brk $D5 Deallocate error #5.
|
|
|
|
goback return
|
|
|
|
END
|