SOURCE FOR *MDUMP & *MDUMP (/+)  by J.G.Harston ( (C) 2OSWRCH=&FFEE:OSNEWL=&FFE7 <OSARGS=&FFDA:OSBYTE=&FFF4 Fl_ptr=&A8:addr=&AA:rom=&AC Pend_ad=&AD Zmcode%=&900 dtempY=mcode%:buff=mcode%+2 n tube=&27A x P=0 1 P%=mcode% [OPT P*3 LDA #1:LDY #0:LDX #l_ptr JSR OSARGS $LDA (l_ptr),Y:CMP #13:BEQ syntax LDX #addr:JSR get_hex_addr JSR space2:BEQ mdump STA forever LDX #end_ad CMP #"+":BEQ plus JSR get_hex_addr JMP mdump .syntax BRK =OPT equs(220+"Syntax: MDump (/+)") BRK " .plus ,JSR skpspc:BEQ syntax 6JSR get_hex_addr @&CLC:LDA addr:ADC end_ad:STA end_ad J(LDA addr+1:ADC end_ad+1:STA end_ad+1 T .mdump ^LDA #0:LDX #255:JSR OSBYTE hCPX #2:BCC mdump1:BEQ Bplus rLDA &FE34: #&F3:STA acc1 | A #&0C:STA acc2:BNE set_acc  .Bplus LDA #128:STA acc2  .set_acc LDA #255:STA accflg  .mdump1 $LDA end_ad:CLC:ADC #7:STA end_ad $LDA end_ad+1:ADC #0:STA end_ad+1  .loop JSR pr_addr JSR get_8_bytes  LDX #0  .loop1 LDA #32:JSR OSWRCH LDA buff,X:JSR pr_hex INX:CPX #8:BNE loop1 LDA #32:JSR OSWRCH & LDX #0 0 .loop2 :LDA buff,X: #127 DCMP #32:BCS pr_char N.pr_dot LDA #"." X .pr_char CMP #127:BEQ pr_dot bJSR OSWRCH lINX:CPX #8:BNE loop2 vJSR OSNEWL  LDA addr:CLC:ADC #8:STA addr  LDA addr+1:ADC #0:STA addr+1 LDA rom:ADC #0:STA rom BIT forever:BMI mdump2 LDA addr: end_ad: #&F8 BNE mdump2 LDA addr+1: end_ad+1  BEQ exit  .mdump2 BIT &FF:BPL loop !LDA #124:JSR OSBYTE:\ Ack Esc  .exit RTS .get_8_bytes  LDX rom:BIT tube:BMI tubeget CPX #&FE:BCC getbyte4  .getbyte1 *LDA &F4:PHA 4BIT accflg:BPL getbyte3 >LDA &FE34:PHA H+LDA acc1:CPX #&FE:BNE getbyte2:LDA acc2 R .getbyte2 \ STA &FE34 fCPX #&F0:BCS getbyte3 p+LDA #&8F:STA &F4:STA &FE30:BNE getbyte4 z .getbyte3 #LDA rom: #15:STA &F4:STA &FE30  .getbyte4 LDX #7:LDY #7 .getbyteloop LDA (addr),Y:STA buff,X DEY:DEX:BPL getbyteloop !LDA rom:CMP #&FE:BCC getbyte6 BIT accflg:BPL getbyte5 PLA:STA &FE34  .getbyte5 PLA:STA &F4:STA &FE30  .getbyte6 RTS  .tubeget CPX #&FE:BCS getbyte1 #.tubeclaim \Claim tube hardware $'LDA #&C0+&10:JSR &406:BCC tubeclaim .LDX #addr:LDY #0 8LDA #0:JSR &406:LDX #0 B .tubeloop LLDY #9:\ 24ish us delay V.tube_wait `DEY:BNE tube_wait jLDA &FEE5:STA buff,X tINX:CPX #8:BNE tubeloop ~1LDA #&80+&10:JSR &406:\ Release tube hardware RTS  .pr_addr LDA rom:JSR pr_hex LDA addr+1:JSR pr_hex  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 .get_hex_addr  LDA #0 STA 0,X:STA 1,X:STA 2,X  .nextchar ( LDA (l_ptr),Y:JSR asc_to_bin 2BCS gh_exit <ASL A:ASL A:ASL A:ASL A FSTY tempY:LDY #4 P .gh_again Z!ASL A:ROL 0,X:ROL 1,X:ROL 2,X dDEY:BNE gh_again n LDY tempY xINY:BNE nextchar  .gh_exit RTS .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 .skpspc INY !.space2 LDA (l_ptr),Y:CMP #32 BEQ skpspc CMP #13:RTS .accflg:BRK " .acc1:BRK , .acc2:BRK 6.forever:OPT equs(255) @] J TB$&780="*SAVE MDUMP "+~(mcode%&FFFF0000)+" "+~(P%&FFFF0000) ^X%=&80:Y%=7:&FFF7 h r$ݤequs(A$):$P%=A$:P%=P%+A$:=P*3