>MDump103/s & Source for *MDUMP by J.G.Harston + v0.10 12-Feb-1986 Original MG version (8 v1.00 10-Mar-1989 Tidied up for Micro User article 2( v1.01 23-Aug-2006 Added -80 option <4 v1.02 23-Aug-2006 Tidied up and compacted code F3 v1.03 25-Aug-2006 Ensured 4-byte Tube address P: ZOSWRCH=&FFEE:OSNEWL=&FFE7 dOSARGS=&FFDA:OSBYTE=&FFF4 n: x. mcode% &300:load%=&FFFF0900:ver$="v1.03" : 2lptr=&AE:addr=&AB:rom=addr+2:end=&A8:tube=&27A P=0 1 P%=load%:O%=mcode% [OPT P*3+4 .buff .syntax BRK:EQUB 220 :EQUS "Syntax: MDump (-80) /+":BRK : .start% &LDA #1:LDY #0:LDX #lptr:JSR OSARGS &LDA (lptr),Y:CMP #"-":BNE mdump40 "LDA #16:STA bytes:JSR SkipPast  .mdump40 CMP #13:BEQ syntax "1LDX #addr:JSR GetHex:JSR SkipSpace:BEQ syntax ,)CMP #"+":PHP:BNE P%+5:JSR SkipSpace1 6)LDX #end:JSR GetHex:PLP:BNE mdump:CLC @"LDA addr+0:ADC end+0:STA end+0 J"LDA addr+1:ADC end+1:STA end+1 T .mdump ^(LDA end: addr: #&F0: addr:STA end h: rLDA #0:LDX #255:JSR OSBYTE |CPX #2:BCC loop:BEQ Bplus LDA &FE34: #&F3:STA acc1  A #&0C:STA acc2:BNE set_acc  .Bplus LDA #128:STA acc2  .set_acc LDA #255:STA accflg  .loop $JSR pr_addr:JSR get_bytes:LDX #0  .loop1 JSR PrSpace LDA buff,X:JSR pr_hex INX:CPX bytes:BNE loop1 JSR PrSpace:LDX #0  .loop2 LDA buff,X: #127 CMP #32:BCS pr_char &.pr_dot LDA #"." 0 .pr_char CMP #127:BEQ pr_dot :JSR OSWRCH DINX:CPX bytes:BNE loop2 NJSR OSNEWL:CLC X#LDA addr+0:ADC bytes:STA addr+0 b LDA addr+1:ADC #0:STA addr+1 l end+1:BNE mdump2 vLDA addr+0: end+0:BEQ exit  .mdump2 BIT &FF:BPL loop !LDA #124:JSR OSBYTE:\ Ack Esc  .exit RTS : .get_bytes  LDX rom:BIT tube:BMI tubeget CPX #&EF:BCC getbyte4  .getbyte1 LDA &F4:PHA BIT accflg:BPL getbyte3 LDA &FE34:PHA +LDA acc1:CPX #&EF:BNE getbyte2:LDA acc2  .getbyte2  STA &FE34  CPX #&F0:BCS getbyte3 *$LDA #&8F:JSR selrom:BNE getbyte4 4 .getbyte3 >LDA rom: #15:JSR selrom H .getbyte4 R LDY #0 \.getbyteloop fLDA (addr),Y:STA buff,Y p!INY:CPY bytes:BNE getbyteloop z!LDA rom:CMP #&EF:BCC getbyte6 BIT accflg:BPL getbyte5 PLA:STA &FE34 .getbyte5:PLA  .selrom STA &F4:STA &FE30  .getbyte6 RTS  .tubeget CPX #&EF:BCS getbyte1 #.tubeclaim \Claim tube hardware 'LDA #&C0+&10:JSR &406:BCC tubeclaim LDX #addr:LDY #0:STY addr+3 LDA #0:JSR &406:LDX #0  .tubeloop LDY #9:\ 24ish us delay .tube_wait $DEY:BNE tube_wait .LDA &FEE5:STA buff,X 8INX:CPX bytes:BNE tubeloop B1LDA #&80+&10:JMP &406:\ Release tube hardware L: V .pr_addr `LDA rom:JSR pr_hex jLDA addr+1:JSR pr_hex t LDA addr ~ .pr_hex PHA:LSR A:LSR A:LSR A:LSR A JSR h_first:PLA  .h_first  #15:CMP #10:BCC h_over ADC #6:.h_over ADC #48:JMP OSWRCH  .PrSpace LDA #32:JMP OSWRCH :  .GetHex "LDA #0:STA 0,X:STA 1,X:STA 2,X  .nextchar LDA (lptr),Y:JSR asc_to_bin  BCS gh_exit ASL A:ASL A:ASL A:ASL A STY tempY:LDY #4 ( .gh_again 2!ASL A:ROL 0,X:ROL 1,X:ROL 2,X <DEY:BNE gh_again F LDY tempY PINY:BNE nextchar Z .gh_exit dRTS n: x.asc_to_bin CMP #48:BCC illegal CMP #58:BCC zero_nine SBC #7:BCC illegal CMP #64:BCS illegal .zero_nine  #&0F:RTS  .illegal  SEC:RTS :  .SkipPast /INY:LDA (lptr),Y:CMP #"!":BCS SkipPast:DEY .SkipSpace1 INY .SkipSpace )LDA (lptr),Y:CMP #" ":BEQ SkipSpace1 CMP #13:RTS ": ,.accflg:BRK 6 .acc1:BRK @ .acc2:BRK J.bytes:EQUB 8 T.tempY:EQUS ver$ ^: h]: rn"*SAVE MDump "+~(mcode%&FFFF0000)+" "+~(O%&FFFF0000)+" "+~(start%&FFFF0000)+" "+~(load%&FFFF0000)