10 REM > Stack101/s
   20 REM Give visual display of stack position
   30 REM v1.01 Graph goes downwards
   40 :
   50 PRINT"1: Mode 7 display"'"2: Mode 0 display"
   60 REPEATA$=GET$:UNTILINSTR("12",A$)
   70 IFA$="1":PROCm7 ELSE PROCm0
   80 END
   90 :
  100 DEFPROCm7
  110 FOR P=0 TO 1
  120   P%=&900
  130   [OPT P*3
  140   CMP #4:BNE ignore
  150   TXA:PHA
  160   TSX:TXA:STA stack
  170   CLC:ADC #16
  180   CMP #&D8:BCC not_do
  190   STA index2:AND #&FE:STA index
  200   LDX #&D8
  210   .do_loop
  220   LDA #32
  230   CPX index:BNE put_space
  240   LDA #ASC"5":BIT index2
  250   BEQ put_space:LDA #ASC"j"
  260   .put_space
  270   STA &7B28,X:INX:INX
  280   BMI do_loop
  290   LDA #151:STA &7C00
  300   .not_do
  310   PLA:TAX
  320   LDA #4
  330   .ignore
  340   JMP (old)
  350   .old
  360   EQUW 0
  370   .index
  380   EQUB 0
  390   .index2
  400   EQUB 0
  410   .stack
  420   EQUB 0
  430 ]NEXT
  440 END
  450 DEFPROCon
  460 !old=!&220
  470 ?&220=0:?&221=9
  480 *FX14,4
  490 END
  500 FOR P=0 TO 1
  510   P%=&A00
  520   [OPT P*3
  530   JSR &FFE0
  540   CMP #13:BNE again
  550   RTS
  560   .again
  570   JSR &A00
  580   RTS
  590   ]
  600 NEXT
  610 END
  620 REPEAT
  630   DRAW 256*4,0:CLS
  640   DRAW 256*4,1024
  650   MOVE 256*4,500
  660   FOR A=256 TO 0 STEP -16:MOVE 4*A,500:DRAW 4*A,508:NEXT
  670   TIME=0
  680   MOVE 4*256,0
  690   FORA=0TO 1023/2:DRAW4*?&943,A:NEXT
  700   PRINTTIME
  710 UNTIL0
  720 :
  730 DEFPROCm0:OSBYTE=&FFF4
  740 OSWRCH=&FFEE:WRCHV=&20E:USERV=&220:VduQueue=&26A
  750 :
  760 FOR P=0 TO 1
  770   P%=&900
  780   [OPT P*3
  790   :
  800   .vector
  810   BIT VduQueue:BMI VduBusy
  820   BIT IAmBusy:BMI VduBusy
  830   PHA:TXA:PHA:TYA:PHA
  840   SEC:ROR IAmBusy
  850   LDY Ycoord:BNE NoRedraw
  860   LDX #0:.RedrawLp1
  870   LDA Window,X:JSR OSWRCH:INX:CPX #27:BNE RedrawLp1
  880   LDY #128:LDX #0:.RedrawLp2
  890   JSR Move:DEY:JSR Draw:INY
  900   TXA:CLC:ADC #16:TAX:BNE RedrawLp2
  910   TSX:LDY #255:JSR Move
  920   .NoRedraw
  930   DEC Ycoord
  940   TSX:LDY Ycoord:JSR Draw
  950   ASL IAmBusy
  960   PLA:TAY:PLA:TAX:PLA
  970   .VduBusy
  980   .old
  990   JMP 0
 1000   :
 1010   .Move:LDA #4:BNE Plot
 1020   .Draw:LDA #5
 1030   .Plot
 1040   PHA:LDA #25:JSR OSWRCH:PLA:JSR OSWRCH
 1050   TXA:ROL A:ROL A:PHA:PHP:AND #&FC:JSR OSWRCH
 1060   PLP:PLA:ROL A:AND #3:JSR OSWRCH
 1070   TYA:ROL A:PHP:AND #&FE:JSR OSWRCH
 1080   PLP:LDA #0:ROL A:ORA #2:JMP OSWRCH
 1090   :
 1100   .VduVector
 1110   PHP:SEC:ROR IAmBusy
 1120   .OldVdu
 1130   JSR 0
 1140   ASL IAmBusy:PLP:RTS
 1150   :
 1160   .IAmBusy:EQUB 0
 1170   .Ycoord:EQUB 0
 1180   .Window
 1190   EQUB 24:EQUW 0:EQUW 512:EQUW 1279:EQUW 1023:\    Set G-Window
 1200   EQUB 16:EQUB 28:EQUB 0:EQUB 31:EQUB 79:EQUB 16:\ CLG, Set T-Window
 1210   EQUB 25:EQUB 4:EQUW 1024:EQUW 1023:\             MOVE 1024,1023
 1220   EQUB 25:EQUB 5:EQUW 1024:EQUW 512:\              DRAW 1024,512
 1230   :
 1240   .go%
 1250   PHP:SEI
 1260   LDA USERV:STA old+1:LDA USERV+1:STA old+2
 1270   LDA #vector AND 255:STA USERV
 1280   LDA #vector DIV 256:STA USERV+1
 1290   LDA WRCHV:STA OldVdu+1:LDA WRCHV+1:STA OldVdu+2
 1300   LDA #VduVector AND 255:STA WRCHV
 1310   LDA #VduVector DIV 256:STA WRCHV+1
 1320   LDA #14:LDX #4:JSR OSBYTE
 1330   PLP:RTS
 1340 ]NEXT
 1350 :
 1360 PRINT"*Save Stack FFFF0900 ";~P%OR&FFFF0000;" ";~go%OR&FFFF0000
 1370 ENDPROC
 1380 DEFPROCtest
 1390 CLS
 1400 REPEAT
 1410   $&7C00="!&268=&"+STR$~(!&268)+"  !&26C=&"+STR$~(!&26C)
 1420   :
 1430 VDUGET:UNTIL0