NEW PREFIX /A2OSX.BUILD AUTO 4,1 .LIST OFF *-------------------------------------- HIS.Init >LDYAI History.MAX Get a buffer for History >SYSCALL GetMem0 bcs .9 txa >STA.G HIS.hBuf lda #0 >STA.G HIS.Count >STA.G HIS.Index .9 rts *-------------------------------------- HIS.Add >LDA.G HIS.hBuf beq .9 >SYSCALL GetMemPtr >STYA ZPPTR1 .10 lda #$ff jsr HIS.GetA Y=ending 0 phy tya sec add len+1 >ADC.G CmdBuflen CmdBuffer length pla bcc .2 enough room ldy #$ff we must remove oldest .12 iny lda (ZPPTR1),y get len of oldest string bne .12 tya * sec adc ZPPTR1 sta ZPPTR2 lda ZPPTR1+1 adc #0 sta ZPPTR2+1 ldy #$FF .1 iny lda (ZPPTR2),y move back until String ending 0 found sta (ZPPTR1),y bne .1 iny lda (ZPPTR2),y move back until Array ending 0 found sta (ZPPTR1),y bne .1 >DEC.G HIS.Count bra .10 retry.... .2 clc A = ending O offset adc ZPPTR1 sta ZPPTR1 bcc .3 inc ZPPTR1+1 .3 ldy #$ff .4 iny lda (ZPCMDBuf),y sta (ZPPTR1),y bne .4 iny sta (ZPPTR1),y set new array ending 0 * lda #0 >STA.G HIS.Index Reset Index >INC.G HIS.Count .9 rts *-------------------------------------- HIS.GetPrev >LDA.G HIS.hBuf beq HISTORY.RTS >SYSCALL GetMemPtr >STYA ZPPTR1 >LDA.G HIS.Count beq HISTORY.RTS empty history,nothing to do >LDA.G HIS.Index bne .1 >LDA.G HIS.Count .1 dec >STA.G HIS.Index bra HIS.SetA History.RTS rts *-------------------------------------- HIS.GetNext >LDA.G HIS.hBuf beq HISTORY.RTS >SYSCALL GetMemPtr >STYA ZPPTR1 >LDA.G HIS.Count beq HISTORY.RTS empty history,nothing to do >LDA.G HIS.Index inc >CMP.G HIS.Count bne .1 lda #0 >STA.G HIS.Index jmp CL.CLR .1 >STA.G HIS.Index *-------------------------------------- HIS.SetA jsr HIS.GetA tya clc adc ZPPTR1 sta ZPPTR1 bcc .1 inc ZPPTR1+1 .1 jsr CL.CLR ldy #$ff .2 iny lda (ZPPTR1),y sta (ZPCMDBuf),y bne .2 tya >STA.G CmdBufPtr >STA.G CmdBuflen jmp CL.PRINT *-------------------------------------- HIS.GetA ldy #0 tax beq .80 lda (ZPPTR1),y beq .9 .1 iny lda (ZPPTR1),y bne .1 dex beq .8 iny lda (ZPPTR1),y bne .1 .9 sec Found ending 0.... rts .8 iny .80 clc rts *-------------------------------------- HIS.Quit >LDA.G HIS.hBuf beq .9 >SYSCALL FreeMem .9 rts *-------------------------------------- MAN SAVE /A2OSX.SRC/SBIN/SHELL.S.HIS LOAD /A2OSX.SRC/SBIN/SHELL.S ASM