(43)256(44)26+,LGxX`' ii : `X :  I B :΅ :΅8e : eL    B ` : d `8e L]SELF EXTRACING ARCHIVE... (I/O ERROR) STOPPED EXTRACTING (CHECKSUM ERROR) STOPPED (OK) DONE. COUNT?,@COUNTER Q< -X0ݐȐHH -Xhh> -X  -XпL dLDB@W@LHpLRpLDBp QLyxp -@L p0123456789ABCDEF )?,  @ i! pL,qpupvp ` qp)qp X`rp,pp08p,pppmp$HJJJJXp ph)XpLp$ pX pW p p` qW)hp qWHW p pWWYXZ)Ii)hp8 qhW) qW) . pWWYXZ)ݩ pXXZWY` qW{ p| p} p~ p~)ɀeWWX pLq$ pW pW pLq{)@$ pW pLq$ pWi[Xi\W0 e[[\iLFre[[\ p[ pLq,pp 'q ppYZ`WH qh `ppYZ`XW8pmpZWYppX`,xpH p,qpP rpqp uhxp* %xp mrr N cp ],s`p ],as`sprpXpW WYȱWeXZpp ppYɩ ȱYp@qp`p ],DsppL)s sAN'T RESOLVE ORG-ADR. ->MA L LOADS A EXECUTABLE FILE LDB: / ERROR LDB:LLEGAL H [:][ADR] HEXDUMP D [:][ADR] DISASSEMBLE LLEGAL -OFFSET xp tpp)pp H t Srh8`p ],s`Xspp ],shhh`xp t H t 'qh8`p ],s`[\xp 8`80 ) [&\[&\[&\[&\[[xp: ` UtV:)Nrpsp,ppp 08p,e\X[WYZ`\[[sp UtspLtp ],s8` f`Lp wuROCESS DIED O FILE LOADED AN'T START PROCESS ROCESS IS NOT RUNNING ROCESS IS RUNNING ,qp0pLup ],Ju8`upvp `)`,vu wu) X vLSvLsvp ],bu`p ],%u8`,qp0Pxp[ r\rpx HX\[[[$Ƚxp[@ !wpxrp Hp Hp HXrp Ep ],5uqp`upvpqpXupvpx `)@슢  X`qpp ],u8`Lp ,vup o uwp -XLv vPC= SR= A= X= Y=STACKZP wu vvX`v\[p ],v[Hȱ[8H p: ph ph pp ],v[ pp ],v[ pp ],v[ pp ],v[ p p` v vp ],vv@ p[ p v@ pp ],vv` pv   v p[ pv p` wuwp -X` 5xS #SIGNUM (1..16) SENDS SIGNAL TO PROCESS PROCESS DOESN'T SUPPORT THIS SIGNAL [ v![ Ut%xp \[v KX`p ],x`p ],w` yLDB> VAILABLE COMMANDS: FRDHSITMCBX NIX EBUG ERSION 1.0 BY OLDI 4.3.1996 M- CHANGE ADDRESS-DISPLAY MODE O ORIGINAL R RELATIVE A ABSOLUTE LrLuLsL1tL5xLXwLuLyLuLwLyp ],ux u + 'xp pLHy߆[p ],{x[LHy pxp`xp ٓx p ],x8``p ],xqp =y y yyyy LyLpxpORAp ],x`,@,Mpp)Mpppp`&B& &B&   & B   +6B+8B99999   B     |-   }-           &    &        +   +3&&3&    >    - -             &  &   & & &       + +  + ++  &     ?            --  - ?--@@A䤉CqX@A䤉Cq@@A䤉Iq@@A䤉Iqز@@䤉@@٣@@@䤉V@٣@@䤉Dqٳأ@@䤉D@ٳLDBDOC.TXT LDB - luNIX DEBUGGER VERSION 1.0 ================================ aVAILABLE (COMMANDLINE-) COMMANDS: B BREAK sEND CHARACTER (ASCII CODE 3) TO DEBUGGED PROCESS. C CONTINUE cONTINUE PROCESS (ctrl+S STOPPS IT) D [[ MID: ] ADDRESS ] DISASSEMBLE dISASSEMBLE PROCESS-CODE (OR ANY OTHER MEMORY ADDRESS). wITH NO ARGUMENT D CONTINUES DISASSEMBLING AT THE LAST POSITION. dEFAULT FOR MID IS THE PROCESS' MID. aDDRESS IS THE RELATIVE ADDRESS IN THE MID-MEMORY AREA OR, IF NO MID IS GIVEN THE ADDRESS IS RELATIVE/ABSOLUTE/ORIGINAL TO THE PROCESS' STARTADDRESS (AS DEFINED BY THE USED WITH THE 'M'-COMMAND). F DEV:FILENAME FILE lOAD EXACUTABLE FILE FOR DEBUGGING. H [[ MID: ] ADDRESS ] HEXDUMP pRINT A HEXDUMP, SYNTAX LIKE 'D' I INFO pRINT PROCESS INFORMATION M[ARO] MODE MA ABSOLUTE MEMORY ADDRESSES MR RELATIVE MEMORY ADDRESSES MO ORIGINAL MEMORY ADDRESSES (DISPLAY MODE OF DISASSEMBLER) R [ ARGS ] RUN rUN A LOADED PROCESS WITH 'ARGS' AS COMMANDLINE PARAMETERS. S #SIGNUM SIGNAL sENDS SIGNAL #SIGNUM TO DEBUGGED PROCESS. T TICK lETS THE DEBUGGED PROCESS RUN FOR EXACTLY ONE TIME SLICE. (OR TILL THERE IS A 'JSR$$9012' IN THE CODE, WICH CAN BE USED LIKE BREAKPOINTS FOR DEBUGGING) note: LDB WAITS TILL THE PROCESS IS INTERRUPTED WHILE RUNNING (IF THE PROCESS IS BLOCKED LDB WILL WAIT TILL IT IS UNBLOCKED AGAIN) EXAMPLES: --------- @> LDB luNIX dEBUG vERSION 1.0 BY pOLDI 4.3.1996 LDB> F @:PRIM { LOAD 'PRIM' } LDB> R 10000,10 { PRIM 10000,10 } LDB> I {INFO} PC=38:0046 SR=00 A=00 X=00 Y=00 { MID:RELADR ,STATUS REGISTER,AKKU,X-REGISTER,Y-REGISTER } STACK 17 90 { $9018=SUICIDE IS THE RETURN-ADDRESS, IF THERE IS A RTS } ZP 57 8D 38 35 30 3A 8E 00 59 2F 8D { ZERO PAGE STARTING WITH ADDRESS $57: ...10 BYTES } LDB> D 38:46 { BEGIN DISASSEMBLING AT PC=38:0046 TAKEN FROM INFO } $C846 LDA#$C8 $C848 JSR$$9051 $C84B JMP$$C991 $C84E RTS $C84F LDA#$00 $C851 STA$$59 $C853 STA$$5A $C855 STA$$5B $C857 STA$$5C $C859 LDII$57 LDB> MR { SWITCH TO RELATIVE-ADDRESS-MODE } LDB> H 0 { HEXDUMP STARTING AT RELATIVE ADDR. 0 } $0000 38 F5 FA FA 00 00 00 00 8uzz.... $0008 00 46 00 00 00 00 00 00 .F...... $0010 00 00 00 00 00 00 00 00 ........ $0018 00 00 4C 1B 90 00 00 00 ..L..... $0020 00 00 00 00 00 00 00 00 ........ $0028 00 00 00 00 00 00 00 00 ........ $0030 00 00 00 00 00 00 00 00 ........ $0038 50 52 49 4D 00 00 00 00 PRIM.... { 'PRIM' cmd NAME IN THE FILE } $0040 17 27 00 00 80 00 A9 C8 .'....)H $0048 20 51 90 4C 91 39 60 A9 Q.L.9@) LDB> F @:LDB { LOAD 'LDB' } LDB> MO { SWITCH TO ORIGINAL ADDRESS-MODE } LDB> D { DISASSEMBLE CODE } $7000 38 00 00 00 40 57 06 00 8...@W.. $7008 1C 40 00 00 00 00 00 00 .@...... $7010 00 00 00 00 00 00 00 00 ........ $7018 00 00 4C 48 70 4C 52 70 ..LHpLRp $7020 00 00 00 00 00 00 00 00 ........ $7028 00 00 00 00 00 00 00 00 ........ $7030 00 00 00 00 00 00 00 00 ........ $7038 4C 44 42 00 00 00 00 00 LDB..... $7040 LDA#$70 $7042 JSR$$9051 LDB> D { CONTINUE DISASSEMBLING } $7045 JMP$$79AA $7048 SE I $7049 LDA#$03 $704B LDX$$7001 $704E JSR$$902D $7051 RTI $7052 JMP$$901B $7055 PJP$$70A2 $7058 30 31 32 33 34 35 36 37 01234567 $7060 38 39 41 42 43 44 45 46 89ABCDEF LDB> D { CONTINUE DISASSEMBLING } $7068 01 04 07 0A 0D 10 13 16 ........ $7070 00 00 00 00 00 00 00 00 ........ $7078 00 00 00 00 00 00 00 00 ........ $7080 00 00 00 00 00 00 00 00 ........ $7088 00 00 00 00 00 00 00 00 ........ $7090 00 00 00 00 00 00 00 00 ........ $7098 00 00 00 00 00 00 00 00 ........ $70A0 00 00 .. $70A2 AND#$3F $70A4 = $$70D2 LDB> D { CONTINUE DISASSEMBLING } $70A6 CMP#$20 $70A8 BCS$$70AC $70AA ORA#$40 $70AC JSR$$9069 $70AF BCC$$70D2 $70B1 JSR$$70B7 $70B4 JMP$$901B $70B7 BIT$$7071 $70BA BPL$$70D2 $70BC LDA$$7075 ---------------------------------------- LDB> F @:PRIM { LOAD FILE 'PRIM' } LDB> R 10000,10 { EXEC 'PRIM 10000,10' } LDB> I { INFO } PC=2D:0046 SR=00 A=00 X=00 Y=00 STACK 17 90 ZP 57 38 A9 20 20 AC 38 A6 57 E8 86 LDB> T { LET PRIM RUN FOR ONE TICK } LDB> I { PRINT INFO AGIN } PC=2D:0170 SR=23 A=00 X=00 Y=04 STACK 3D 2F 17 90 ZP 57 0A 00 D0 01 00 00 01 01 00 00 LDB> T LDB> I PC=2D:0154 SR=23 A=00 X=00 Y=07 STACK 3D 2F 17 90 ZP 57 0A 00 80 03 00 00 13 04 00 00 LDB> T LDB> I PC=2D:0158 SR=23 A=00 X=00 Y=02 STACK 3D 2F 17 90 ZP 57 0A 00 E4 00 00 00 AF 01 00 00 LDB> T LDB> I PC=2D:014B SR=22 A=FF X=00 Y=0E STACK 3D 2F 17 90 ZP 57 0A 00 00 40 1C 00 17 27 00 00 LDB> T 10007 { A PRIME NUMBER CALCULATED BY PRIM AFTER 5 TICKS } LDB> I PC=2D:017B SR=21 A=00 X=09 Y=04 STACK 3D 2F 17 90 ZP 57 09 00 60 02 00 00 79 01 00 00 LDB> S S #SIGNUM (1..16) SENDS SIGNAL TO PROCESS LDB> S 7 { SEND SIGNAL 7 'KILLED PARENT' } PROCESS DOESN'T SUPPORT THIS SIGNAL LDB> S 6 { SEND SIGNAL 6 'USER BREAK' } LDB> T { ANOTHER TICK.. } pROCESS DIED { PROCESS CAUGHT THE SIGNAL AND ENDED } LDB> I nO FILE LOADED LDB> X { EXIT FROM LDB .. BACK TO SHELL } @> DISASSEMBLER NOTES: ------------------- tHE ASSEMBLERSYTAX MAY LOOK STRANGE TO YOU, BECAUSE IT IS BASED ON AN OLD ASSEMBLER I WROTE (IT WAS EASIER TO USE IT'S DISASS-TABLES AS WRITING SOME NEW, WICH I MAY DO SOMEWHEN IN FUTURE). LDA#$12 --- PARAMETER #12 IS DECIMAL, $12 HEX, "A ASCII,