akcs.dnickel@hpcvbbs.UUCP (Derek Scott Nickel) (12/23/90)
well, now that I've said that its to hard to upload to this conf, I though that I should try again. If all goes well, the rest of this note will contain an unthreaded ASC\->... Derek S. Nickel ASC\-> 80000: 02D9D ! Program 80005: 1592D ; Set last RPL token to <0h> and verify DEPTH >= 1 8000A: 18FB2 ; Check arguments for type 8000F: 0400D ; <3h> 80014: 02D9D ! Program 80019: [...] ! # 0000h 80027: 06657 ; Internal NEWOB 8002C: 62747 ; Internal SWAP and DUP 80031 60F9B ; drop level two object 80077: [...] ! "Invalid String" 8009D: 1A339 ; DOERR (XLIB 2 42) 800A2: 0312B ! End Marker 800A7: 03DE0 ; Internal - (2:System Binary,1:System Binary) 800AC: 055DF ; "" 800B1: 032C2 ; Internal OVER 800B6: 61C1C ; allocate nibbles (2:sized object,1:System Binary) 800BB: 03223 ; Internal SWAP ; ***D8 B=A A ; B.A = size-1 800E6: 143 A=DAT1 A ; A.A = adr of alloc str 800E9: 130 D0=A ; D0 = adr of alloc str 800EC: 169 D0=D0+ 10 ; D0 = adr of new object (alloc str data) 800EF: 132 AD0EX ; A.A = adr of new object 800F2: 130 D0=A ; ... 800F5: 141 DAT1=A A ; adjust stack to new object 800F8: 174 D1=D1+ 5 ; A = adr of orig 03188 ; Internal DUP 80179: 05944 ; Internal BYTES (non-ROM objects) -> (2:System Binary,1:Binary Integer) 8017E: 60F9B ; drop level two object 80183: 60FBB ; Internal 4 ROLL 80188: 63CFE ; if SAME, then do next/return, else skip next 8018D: 60F9B ; drop level two object 80192: 03244 ; Internal DROP 80197: [...] ! "Invalid String" 801BD: 1A339 ; DOERR (XLIB 2 42) 801C2: 0312B ! End Marker 801C7: 0312B ! End Marker
akcs.dnickel@hpcvbbs.UUCP (Derek Scott Nickel) (12/23/90)
Darn, that didn't upload very well, did it... Any suggestions? Derek S. Nickel
akcs.dnickel@hpcvbbs.UUCP (Derek Scott Nickel) (12/23/90)
OK, one more time (I promise!) -- Derek ASC\-> 80000: 02D9D ! Program 80005: 1592D ; Set last RPL token to <0h> and verify DEPTH >= 1 8000A: 18FB2 ; Check arguments for type 8000F: 0400D ; <3h> 80014: 02D9D ! Program 80019: [...] ! # 0000h 80027: 06657 ; Internal NEWOB 8002C: 62747 ; Internal SWAP and DUP 80031: 05636 ; Internal SIZE (1:String) -> System Binary 80036: 03188 ; Internal DUP 8003B: [...] ! <41h> 80045: 03EF7 ; Internal / (2:System Binary,1:System Binary) -> (2:rem,1:div) 8004A: 60F9B ; drop level two object 8004F: 03DE0 ; Internal - (2:System Binary,1:System Binary) 80054: 04017 ; <4h> 80059: 031AC ; Internal DUP2 8005E: 03CE4 ; if TOS-1 < TOS (System Binary) -> True/False 80063: 61993 ; if pop TOS = True, then do next/return, else skip next 80068: 02D9D ! Program 8006D: 03258 ; Internal DROP2 80072: 60F9B ; drop level two object 80077: [...] ! "Invalid String" 8009D: 1A339 ; DOERR (XLIB 2 42) 800A2: 0312B ! End Marker 800A7: 03DE0 ; Internal - (2:System Binary,1:System Binary) 800AC: 055DF ; "" 800B1: 032C2 ; Internal OVER 800B6: 61C1C ; allocate nibbles (2:sized object,1:System Binary) 800BB: 03223 ; Internal SWAP ; *** (4:#0000h,3:orig str,2:alloc str,1:size) *** 800C0: 02DCC ! Code 800C5: 000AF ! 175 nibbles (next RPL at 80174) 800CA: 8F14660 GOSBVL 06641 ; MC: pop TOS (System Binary) -> A.A 800D1: CC A=A-1 A ; A.A = size-1 800D3: 8FB9760 GOSBVL 0679B ; MC: Save D,B,D1,D0 (uses C) 800DA: 840 ST=0 0 ; start new object phase 800DD: 3104 LCHEX 40 ! "@" 800E1: AE7 D=C B ; D (characters remaining in line) = 64 800E4: D8 B=A A ; B.A = size-1 800E6: 143 A=DAT1 A ; A.A = adr of alloc str 800E9: 130 D0=A ; D0 = adr of alloc str 800EC: 169 D0=D0+ 10 ; D0 = adr of new object (alloc str data) 800EF: 132 AD0EX ; A.A = adr of new object 800F2: 130 D0=A ; ... 800F5: 141 DAT1=A A ; adjust stack to new object 800F8: 174 D1=D1+ 5 ; A = adr of orig str 800FB: 143 A=DAT1 A ; ... 800FE: 174 D1=D1+ 5 ; C = adr of checksum 80101: 147 C=DAT1 A ; ... 80104: 06 RSTK=C ; save checksum adr 80106: 131 D1=A ; D1 = adr of orig str 80109: 179 D1=D1+ 10 ; D1 = adr of orig str data 8010C: A6F D=D-1 B ; count character in line 8010F: 5C0 GONC 8011C ; go if not EOL 80112: 31F3 LCHEX 3F ! "?" ; reset D for new line (D=63) 80116: AE7 D=C B ; ... 80119: 171 D1=D1+ 2 ; skip EOL character 8011C: AE2 C=0 B ; convert character to nibble 8011F: 14F C=DAT1 B 80122: 8082103 LAHEX 30 ! "0" 80129: B62 C=C-A B 8012C: 8082190 LAHEX 09 ! "." 80133: 9EEB0 ?A>=C B GOYES 80141 80138: 808207 LAHEX 7 8013E: B62 C=C-A B 80141: 15C0 DAT0=C 1 ; store nibble into new object 80145: 160 D0=D0+ 1 ; next nibble in new object 80148: 171 D1=D1+ 2 ; next character in orig str 8014B: CD B=B-1 A ; decr characters remaining 8014D: 5EB GONC 8010C ; go if more 80150: 870A1 ?ST=1 0 ; exit if checksum in progress GOYES 8016D 80155: 3430000 LCHEX 00003 ; B.A = 3 (size of checksum - 1) 8015C: D5 B=C A ; ... 8015E: 07 C=RSTK ; C = adr of checksum 80160: 134 D0=C ; D0 = adr of checksum data 80163: 169 D0=D0+ 10 ; ... 80166: 850 ST=1 0 ; start of checksum phase 80169: 62AF GOTO 8010C ; go process checksum 8016D: 8D34150 GOVLNG 05143 ; MC: Restore D,B,D1,D0 (C=D0), Clear Carry and continue RPL . . . . . . ! End of Code ; *** (3:checksum,2:orig str,1:new object) *** 80174: 03188 ; Internal DUP 80179: 05944 ; Internal BYTES (non-ROM objects) -> (2:System Binary,1:Binary Integer) 8017E: 60F9B ; drop level two object 80183: 60FBB ; Internal 4 ROLL 80188: 63CFE ; if SAME, then do next/return, else skip next 8018D: 60F9B ; drop level two object 80192: 03244 ; Internal DROP 80197: [...] ! "Invalid String" 801BD: 1A339 ; DOERR (XLIB 2 42) 801C2: 0312B ! End Marker 801C7: 0312B ! End Marker Jeez, that was MUCH too hard to get a clean upload (10 tries!) Derek S. Nickel
akcs.wilsonpm@hpcvbbs.UUCP (Pete M. Wilson) (12/31/90)
Just out of curiosity, are you using TA? I haven't been on for a while, but was somewhat disappointed by the response to my posting of it. Pete
akcs.dnickel@hpcvbbs.UUCP (Derek Scott Nickel) (01/01/91)
Actually, I think I was one of the few people to respond. Its a great program - but I've made many modifications (so I call by version "Voyager" to avoid confusion). Joe Horn's next disk will contain it. FYI, some of the changes: The in memory index to comments is stored as a balanced binary tree. I did this so that comment updates would be faster. Unthreading objects. Rather than unthread 8 'locations' at a time, my unthreader unthreads one object at a time (I've also added a 'pager' to handle long routines). Loading additional MEM files. You can LOAD/UNLOAD additional memory files into ports 1 and 2 (even port 0 if needed). This is how I loaded ASC\-> for unthreading. Search command. Looks for a sequence of nibbles and displays address. And... thanks for uploading TA in the first place - It saved me a lot of development time (and has cost be a lot of freeee-time :-) ) Derek S. Nickel