65-GTO-C from the keybooard HP65 Logging started. ; A= 00000000000999 M= 00000000000221 ; B= 02009999999999 S= 0........... f= ..2..5.. P= 1 00726 if s9 = 0 00727 goto 00622 00622 12 -> p ; P= 12 00623 if s0 = 0 00624 goto 00452 ; a key was pressed 00625 p + 1 -> p ; P= 13 00626 if p # 12 00627 goto 00625 P=14, 15, 0, 1, 2, ..., 11 00625 p + 1 -> p ; P= 12 00626 if p # 12 00627 goto 00625 00630 0 -> s0 ; S= ............ 00631 if s10 = 0 00632 goto 00641 00641 if s5 = 0 00642 goto 00734 00734 if s8 = 0 00735 goto 00710 00710 jsb 00675 00675 12 -> p 00676 1 -> f3 ; f= ..23.5.. 00677 dispoff 00700 c <-> m ; C= 00000000000221 M= 00000000000000 00701 shiftl a[w] ; A= 00000000009990 00702 return 00711 1 -> f7 ; f= ..23.5.7 00712 if s3 = 0 00713 goto 00715 00715 rom 2 01316 key -> rom ; f= ..23.5.. ; [GTO] 01054 goto 01347 01347 rom 4 02350 buffer -> rom address 02351 goto 02000 02054 goto 02166 02166 p - 1 -> p ; P= 11 02167 if p # 8 02170 goto 02305 02305 if c[m] = 0 ; if no prefixes 02306 goto 02220 02220 if p # 9 02221 goto 02120 02120 c + 1 -> c[p] ; C= 00100000000221 (set GTO prefix) 02121 if s8 = 0 02122 goto 02337 02337 jsb 02276 02276 c <-> m ; C= 00000000000000 M= 00100000000221 02277 shiftr a[w] ; A= 00000000000999 02300 c -> a[s] 02301 return 02340 if s3 = 0 02341 goto 02217 02217 rom 1 00620 if s8 = 0 00621 goto 00531 display: 00531 ... ; A= 00000000000999 ; B= 02009999999999 ; S= ............ 00730 0 -> s9 00731 1 -> s10 ; S= ..........a. 00732 disptoggle ; "0.00" 00733 goto 00622 00622 12 -> p ; P= 12 00623 if s0 = 0 00624 goto 00452 00452 0 -> s10 ; S= ............ 00453 if s5 = 0 00454 goto 00750 00750 if s8 = 0 00751 goto 00441 00441 0 -> s11 00442 0 -> f0 00443 if s11 = 0 00444 goto 00620 00620 if s8 = 0 00621 goto 00531 display: 00531 ... 00777 goto 00726 00726 ... 00777 goto 00726 00726 ... 00777 goto 00726 00726 ... 00777 goto 00726 ; S= 0........... 00726 if s9 = 0 00727 goto 00622 00622 12 -> p ; P= 12 00623 if s0 = 0 00624 goto 00452 00625 p + 1 -> p ; P= 13 00626 if p # 12 00627 goto 00625 ; P= 14, 15, 0, 1, 2, ..., 11 00625 p + 1 -> p ; P= 12 00626 if p # 12 00627 goto 00625 00630 0 -> s0 ; S= ............ 00631 if s10 = 0 00632 goto 00641 00641 if s5 = 0 00642 goto 00734 00734 if s8 = 0 00735 goto 00710 00710 jsb 00675 00675 12 -> p 00676 1 -> f3 ; f= ..23.5.. 00677 dispoff 00700 c <-> m ; C= 00100000000221 M= 00000000000000 00701 shiftl a[w] ; A= 00000000009990 00702 return 00711 1 -> f7 ; f= ..23.5.7 00712 if s3 = 0 00713 goto 00715 00715 rom 2 01316 key -> rom ; f= ..23.5.. ; [C] pressed 01033 goto 01351 01351 rom 4 02352 0 -> f5 ; S= ...........b f= ..23.... 02353 if c[m] = 0 ; f= ..23.5.. 02354 goto 02371 02355 10 -> p ; P= 10 02356 if c[p] = 0 02357 goto 02366 02366 11 -> p ; P= 11 02367 if c[p] >= 1 02370 goto 02257 ; doing GTO C 02257 search for label ; f= ..23.... 02260 jsb 02127 02127 0 -> s11 ; S= ............ 02130 0 -> f5 02131 if s11 = 0 02132 goto 02130 ; loop until f5 (ready) was set (s11 = 1) 02133 0 -> f5 ; f= ..23.... 02134 return ; f= ..23.5.. 02261 goto 02360 02360 0 -> c[m] ; C= 00000000000221 02361 c <-> m ; C= 00000000000000 M= 00000000000221 02362 goto 02045 02045 rom 0 00046 ... 00621 goto 00531 display; 00531 ... 00777 goto 00726 00726 ... 00777 goto 00726 00726 ... 00777 goto 00726 ===== GTO within a program: LBL A R/S GTO A HP65 Logging started. ; A= 00000000000999 M= 10000000000221 ; B= 02009999999999 S= 0........... f= ..2..5.. P= 1 00726 if s9 = 0 00727 goto 00622 00622 12 -> p ; P= 12 00623 if s0 = 0 00624 goto 00452 00625 p + 1 -> p ; P= 13 ... 00630 0 -> s0 ; S= ............ 00631 if s10 = 0 00632 goto 00641 00641 if s5 = 0 00642 goto 00734 00734 if s8 = 0 00735 goto 00710 00710 jsb 00675 00675 12 -> p 00676 1 -> f3 ; f= ..23.5.. 00677 dispoff 00700 c <-> m ; C= 10000000000221 M= 00000000000000 00701 shiftl a[w] ; A= 00000000009990 00702 return 00711 1 -> f7 ; f= ..23.5.7 00712 if s3 = 0 00713 goto 00715 00715 rom 2 01316 key -> rom ; f= ..23.5.. ; [R/S] pressed ; Note: C[s]=1 so we're in the main loop 01042 goto 01101 01101 0 -> c[m] 01102 delayed select group 1 01103 c <-> m ; C= 00000000000000 M= 10000000000221 05104 delayed select rom 1 05105 goto 04604 04604 if s8 = 0 04605 goto 04405 04405 if s9 = 0 04406 goto 04434 04434 rom 2 05035 goto 05376 05376 delayed select group 0 05377 goto 05223 01223 clearstatus 01224 1 -> s8 ; S= ........8... 01225 1 -> s10 ; S= ........8.a. 01226 goto 01217 01217 rom 1 00620 if s8 = 0 00621 goto 00531 00622 12 -> p 00623 if s0 = 0 00624 goto 00452 00452 0 -> s10 ; S= ........8... 00453 if s5 = 0 00454 goto 00750 00750 if s8 = 0 00751 goto 00441 00752 pointer advance ; f= ..23.... 00753 disptoggle 00754 c <-> m ; C= 10000000000221 M= 00000000000000 00755 shiftl a[w] ; A= 00000000099900 00756 0 -> s11 00757 0 -> f5 00760 if s11 = 0 00761 goto 00757 00757 0 -> f5 ; S= ........8..b 00760 if s11 = 0 ; f= ..23.5.. 00761 goto 00757 00762 0 -> f5 ; f= ..23.... 00763 rom 2 ; f= ..23.5.. 01364 buffer -> rom address 01365 goto 01000 ; 054 = GTO 01054 goto 01347 01347 rom 4 02350 buffer -> rom address 02351 goto 02000 02054 goto 02166 02166 p - 1 -> p ; P= 11 02167 if p # 8 02170 goto 02305 02305 if c[m] = 0 ; no prefixes yet 02306 goto 02220 02220 if p # 9 02221 goto 02120 02120 c + 1 -> c[p] ; C= 10100000000221 (set GTO prefix) 02121 if s8 = 0 02122 goto 02337 02123 c <-> m ; C= 00000000000000 M= 10100000000221 02124 clearstatus ; S= ............ 02125 1 -> s8 ; S= ........8... 02126 goto 02217 02217 rom 1 00620 if s8 = 0 00621 goto 00531 00622 12 -> p ; P= 12 00623 if s0 = 0 00624 goto 00452 00452 0 -> s10 00453 if s5 = 0 00454 goto 00750 00750 if s8 = 0 00751 goto 00441 00752 pointer advance ; f= ..23.... 00753 disptoggle 00754 c <-> m ; C= 10100000000221 M= 00000000000000 00755 shiftl a[w] ; A= 00000000999000 00756 0 -> s11 00757 0 -> f5 00760 if s11 = 0 00761 goto 00757 00757 0 -> f5 ; S= ........8..b 00760 if s11 = 0 ; f= ..23.5.. 00761 goto 00757 00762 0 -> f5 ; f= ..23.... 00763 rom 2 ; f= ..23.5.. 01364 buffer -> rom address 01365 goto 01000 ; 036 = [A] 01036 goto 01351 01351 rom 4 02352 0 -> f5 ; f= ..23.... 02353 if c[m] = 0 ; f= ..23.5.. 02354 goto 02371 ; no - there's a prefix 02355 10 -> p ; P= 10 02356 if c[p] = 0 02357 goto 02366 ; not 10 02366 11 -> p ; P= 11 02367 if c[p] >= 1 02370 goto 02257 ; yes, 11 - the GTO prefix ; GTO label 02257 search for label ; f= ..23.... 02260 jsb 02127 02127 0 -> s11 ; S= ........8... 02130 0 -> f5 02131 if s11 = 0 02132 goto 02130 ; loop until f5 was 1 (s11 = 1) ; S= ........8..b f= ..23.5.. 02133 0 -> f5 ; f= ..23.... 02134 return ; f= ..23.5.. 02261 goto 02360 02360 0 -> c[m] ; C= 10000000000221 (clear prefixes) 02361 c <-> m ; C= 00000000000000 M= 10000000000221 02362 goto 02045 02045 rom 0 00046 ... 00454 goto 00750 00750 if s8 = 0 00751 goto 00441 00752 pointer advance ; f= ..23.... 00753 disptoggle 00754 c <-> m ; C= 10000000000221 M= 00000000000000 00755 shiftl a[w] ; A= 00000009990000 00756 0 -> s11 ; S= ........8... 00757 0 -> f5 00760 if s11 = 0 00761 goto 00757 00757 0 -> f5 ; S= ........8..b 00760 if s11 = 0 ; f= ..23.5.. 00761 goto 00757 00762 0 -> f5 ; f= ..23.... 00763 rom 2 ; f= ..23.5.. 01364 buffer -> rom address 01365 goto 01000 ; LBL 01053 ... 00752 pointer advance ; f= ..23.... 00753 ... 00763 rom 2 ; f= ..23.5.. 01364 buffer -> rom address 01365 goto 01000 ; [A] 01036 ... 00752 pointer advance ; f= ..23.... 00753 ... 00763 rom 2 ; f= ..23.5.. 01364 buffer -> rom address 01365 goto 01000 ; [R/S] 01042 ... 00620 if s8 = 0 00621 goto 00531 display: 00531 ... 00777 goto 00726 00726 ... 00777 goto 00726 00726 ... 00777 goto 00726 === s9 isn't set by GTO, neither from the keyboard nor from a program.