Listing of file='STACK.MAC;01' on disk='vmedia/tiny_c_v3.0-sector.ccvf'
; STACK TOOLS ; ; TOPTOI POPS TOP OF STACK INTO DE ENTRY TOPTOI TOPTOI: CALL POPST STA TPCLASS MOV A,B CPI 'A' JZ TT2 XCHG MOV E,M INX H MOV D,M TT2: DCR C RNZ LDA TPCLASS ORA A RNZ MOV A,E RLC SBB A MOV D,A RET TPCLASS:DB 0 ; POPS TWO FROM STACK, BC:=TOP,DE:=NEXT ENTRY POPTWO POPTWO: CALL TOPTOI PUSH D CALL TOPTOI POP B RET ; POPS THE STACK INTO A,B,C,DE. NEW TOP IN HL ENTRY POPST POPST: LHLD TOP MOV A,M INX H MOV B,M INX H MOV C,M INX H MOV E,M INX H MOV D,M PUSH B LXI B,-9 DAD B POP B SHLD TOP RET ; PUSHES CONSTANT 1. ENTRY PONE PONE: LXI D,1 JMP PUSHK ; PUSHES CONSTANT 0. ENTRY PZERO PZERO: LXI D,0 ; PUSHES CONSTANT IN DE ENTRY PUSHK PUSHK: XRA A MVI B,'A' MVI C,2 ; PUSHES CLASS (A), LVALUE (B), SIZE (C), STUFF (DE) ; ONTO STACK. PSHERR EQU 16 EXTRN ESET,ESTACK,TOP ENTRY PUSHST PUSHST: LHLD TOP PUSH D LXI D,5 DAD D SHLD TOP XCHG LHLD ESTACK DAD D XCHG POP D JC PERR MOV M,A INX H MOV M,B INX H MOV M,C INX H MOV M,E INX H MOV M,D RET PERR: CALL ESET DB PSHERR RET ; STORE 0'S FROM (DE) THRU (HL) INCLUSIVE ENTRY ZERO ZERO: MVI B,0 ; STORE (B) FROM (DE) THRU (HL) INCLUSIVE ENTRY BZAP BZAP: MOV A,L SUB E MOV A,H SBB D RC MOV M,B DCX H JMP BZAP END