NEW AUTO 3,1 .LIST OFF *-------------------------------------- HIS.Init >LDYAI HISTORY.MAX Get a buffer for History >SYSCALL NewStkObj bcs .9 txa >STA.G HIS.hBuf >PUSHA >PUSHWI 0 >SYSCALL StrVAdd Reset Buffer >STZ.G HIS.Count >STA.G HIS.Index .9 rts *-------------------------------------- HIS.Add >LDA.G HIS.hBuf beq .9 >PUSHA >PUSHW ZPCLBuf >SYSCALL StrVAdd bcc .1 >PUSHB.G HIS.hBuf lda #0 >PUSHA >SYSCALL StrVShift >DEC.G HIS.Count bra HIS.Add .1 >STZ.G HIS.Index Reset Index >INC.G HIS.Count .9 HIS.Add.RTS rts *-------------------------------------- HIS.GetPrev >LDA.G HIS.hBuf beq HIS.Add.RTS >LDA.G HIS.Count beq HIS.Add.RTS empty history,nothing to do >LDA.G HIS.Index bne .1 >LDA.G HIS.Count .1 dec bra HIS.GetToCl *-------------------------------------- HIS.GetNext >LDA.G HIS.hBuf beq HIS.Add.RTS >LDA.G HIS.Count beq HIS.Add.RTS empty history,nothing to do >LDA.G HIS.Index inc >CMP.G HIS.Count bne HIS.GetToCl lda #0 >STA.G HIS.Index jmp CL.CLR *-------------------------------------- HIS.GetToCl >STA.G HIS.Index jsr CL.CLR >PUSHB.G HIS.hBuf >PUSHB.G HIS.Index >PUSHW ZPCLBuf >SYSCALL StrVGet ldy #$ff .1 iny lda (ZPCLBuf),y bne .1 tya >STA.G CL.Ptr >STA.G CL.Len jmp CL.PrintCLBuf *-------------------------------------- MAN SAVE usr/src/bin/sh.s.his LOAD usr/src/bin/sh.s ASM