> NewView7/s v1.07  Modified VIEW : ( list%= 2 reloc%= < mcode% &3FFF F+"VIEW ROM filename: "R$:TMP$="VIEWJ3H" P4reloc%:"VIEWHI filename: "H$:H$="":reloc%= Z high%=reloc% 0 d.A$=R$:base%=&8000:high%:A$=H$:base%=&C503 n"LOAD "+A$+" "+~mcode% x4reloc%=0:mcode%!9<>&57454956:"Not VIEW ROM": 9reloc%=0:mcode%!&2842<>&302E3342:"Not VIEW B3.0": "opt%=46-list%2-list%:Asm: Dhigh%:A$=TMP$ "LOAD pc8b "+~(FONT-base%+mcode%):A$="VIEWJ3" &?O%=255:O%=O%+1:P%=P%+1:P%>&BFFF =A$="*SAVE "+A$+" "+~mcode%+" "+~O%+" FFFF0000 FFFBBC00" (A$;:A$:::reloc%:"DELETE "+TMP$  6ݤp(A%):P%=A%-&8000+base%:O%=A%-&8000+mcode%:=opt% ݤo(A%):=A%-&8000+base% Asm 'tmp=&21:ptr=&22:src=ptr+2:dst=ptr+4 5[OPT p(&800E):EQUS "(C)Acornsoft, JGH ":EQUB 0:] ,[OPT p(&80C2):JSR TubeCheck:.CODEBASE:] ([OPT p(&873A):EQUS "s counted. ":] '[OPT p(&8944):LDX #7:JSR NewSave:] "[OPT p(&8CA0):BNE o(&8CAF):] " [OPT p(&8D18):JMP NewBGet:] ,[OPT p(&9A39):JSR Format:] 6 [OPT p(&9B96):JSR NewRDCH:] @"[OPT p(&9BA2):BVS o(&9BBB):] J"[OPT p(&9BAA):BNE o(&9BD0):] T,[OPT p(&A842):EQUS "J3.0":BRK:]: J=JGH ^ [OPT p(&A8A1):NOP:NOP:NOP:] h,[OPT p(&AFE3):LDX #&14:.LAFE5:STA &69,X r1DEX:BPL LAFE5:STX &50:STX &51:]: Default FjI |$[OPT p(&B0AE):LDA #15:JSR &FFEE LDA #&DB:LDX #&00:JSR BYTE0 LDA #&E1:LDX #&8C:JSR BYTE0 LDA #&E2:LDX #&9C:JSR BYTE0 'LDA #&E3:STA &3D:LDX #&AC:JSR BYTE0 %LDA #&04:LDX #&02:STX &73:STX &76 '.BYTE0:LDY #&00:JMP &FFF4:NOP:NOP:] /[OPT p(&B1F9):.CallArgs:LDX #ptr:JMP &FFDA 1.InkeyY:LDY #&FF:.InkeyX:LDA #&81:JMP &FFF4:] : [OPT p(&B2FD) *\ Read translates CRLF and LFCR  .NewBGet %JSR &FFD7:BCS BGetExit :\ , quit +CMP #10:BEQ BGetNext :\ LF, test next +CMP #13:BNE BGetOk :\ CR, test next  .BGetNext &+PHA:LDA #0:JSR CallArgs:\ Get current 0,JSR &FFD7:BCS BGetBack :\ , return :/CMP #10:BEQ BGetTest :\ Could be D4CMP #13:BNE BGetBack :\ 2nd char not / N .BGetTest X6TSX:CMP &101,X:BNE BGetCR:\ Different, return b .BGetBack l9LDA #1:JSR CallArgs :\ Same or 2nd<>eol, move back v/.BGetCR:PLA:LDA #13 :\ Drop, return .BGetOk:CLC .BGetExit:RTS : (\ Save sets load/exec to text  .NewSave )TXA: #2:BEQ P%+4:LDA #&FF:STA &502,X *DEX:BPL NewSave:STX &503:JMP o(&894C) : $\ Format skips double highlights  .Format JSR o(&A600):BNE FormOk DEC &39:DEC &39:.FormOk:RTS : \ Extended keyboard handler  .\ Return A=keypress, VC=char, VS=func/edit  .NewRDCH  /JSR o(&A761) :\ Get a keypress *.CMP #&8C:BIT FormOk:BCS FormOk:\ func/edit 4TAY:BEQ NewRDok >CMP #13:BEQ NewRDok H=CMP #27:BCC NewRDctrl :\ Ctrl-Letter, get second key R6CMP #"#":BEQ NewRDpad :\ Keypad, test modifiers \1CMP #"*":BCC NewRDok :\ Digit punctuation f6CMP #"9"+1:BCC NewRDpad :\ Keypad, test modifiers p.NewRDok:CLV:RTS z: .NewRDctrl 0JSR o(&A761):PHA:LDX #9*8:\ Second keypress "CMP #"E":BEQ NewRD4:INX :\ AE "CMP #"e":BEQ NewRD4:INX :\ ae  #&DF "CMP #"O":BEQ NewRD4:INX :\ ao "CMP #"T":BEQ NewRD4:INX :\ Pt $CPY #&06:BEQ NewRD4:PLA :\ ff ,CMP #"!":BCC NewRDok :\ Bad modifier *CMP #"A":BCC NewRD2 :\ '!' to '?' ,CMP #"[":BCC NewRDok :\ Bad modifier *CMP #"a":BCC NewRD1 :\ '[' to '`' ,CMP #"{":BCC NewRDok :\ Bad modifier -CMP #127:BCS NewRDok:SBC #26:\ '{' to '~' .NewRD1:SBC #27 &.NewRD2:SBC #32 :\ 0-40 $TAX:LDA NewRDtab1,X ..CMP #" ":BCS NewRDok:TAX:\ Single look-up 80TYA:LDY #8 :\ X=accent 0...7 B .NewRDlp1 L4CMP NewRDtab2-1,Y:BEQ NewRD3:\ Ctrl-Char matched V3DEY:BNE NewRDlp1 :\ Y=character 0...8 ` .NewRD3 jTYA:ASL A:ASL A:ASL A t1STX tmp:ADC tmp:TAX:PHA :\ X=char*8+accent ~ .NewRD4 PLA:LDA NewRDtab3,X:CLV:RTS :  .NewRDpad 1PHA:LDA #0:STA tmp:LDX #&FE:\ Start with CTRL  .NewRDlp3 /TXA:PHA:JSR InkeyY :\ Test this key 7CPX #1:ROR tmp :\ tmp becomes %SC000000 7PLA:TAX:INX:BMI NewRDlp3 :\ Loop until SHIFT read 3PLA:BIT tmp:BMI NewRDkey :\ SHIFT -> linedraw /BVC NewRD5 :\ No SHIFT/CTRL .CMP #"0":BCC NewRDkey :\ Not CTRL+Digit :  #15  -.NewRDlp5:STA tmp :\ Current num  .NewRDlp6 5LDX #&FE:JSR InkeyY:TXA :\ CTRL still pressed? (BNE NewRD6:LDA tmp 2.NewRD5:CLV:RTS < .NewRD6 F+LDX #20:LDY #0:JSR InkeyX :\ Inkey(20) PCPX #"0":BCC NewRDlp6 Z0CPX #"9"+1:BCS NewRDlp6 :\ No digit pressed dLDA tmp:ASL A:ASL A:ADC tmp n.ASL A:STA tmp:TXA: #15 :\ tmp=tmp*10+num xADC tmp:JMP NewRDlp5 :  .NewRDkey *CMP #"#":BNE NewRDkey2 :\ Not prefix ,BIT tmp:BVC NewRDkey4 :\ Not Ctrl-# 0JSR o(&A761) :\ Second keypress ,CMP #"9"+1:BCS NewRDkey4:\ >'9', ignore ,CMP #"1":BCC NewRDkey4 :\ <'1', ignore /SBC #2:BIT tmp:BPL NewRDkey3:\ Ctrl-#-digit /SBC #9:BNE NewRDkey3 :\ CtSh-#-digit .NewRDkey2 2SEC:SBC #"*":LSR tmp :\ '*'-'9' -> &00-&0F (LSR tmp:A tmp: #&30 :\ %00sckkkk ".NewRDkey3:TAX:LDA NewRDtab4,X .NewRDkey4:CLV:RTS : .NewRDtab1 "7EQUS &AD+0+"#"+&AC+&80+"&'()*+"+&AE+7+&AF+3 ,;EQUS "0"+&AD+1+"3"+&AC+&87+"6789:;"+&AE+7+&AF+2 6*EQUS "["+6+"]"+5+7+7+"{"+6+"}"+4 @.NewRDtab2 J.EQUB &01:EQUB &03:EQUB &05:EQUB &09:\ ACEI T.EQUB &0E:EQUB &0F:EQUB &15:EQUB &19:\ NOUY ^.NewRDtab3 h0EQUS &AB+&AB+&A8+&A8+&7E+&5E+&5C+&9C r5EQUS &8E+&84+&A0+&A0+&83+&83+&85+&A6 :\ A |5EQUS &22+&32+&3F+&2F+&7E+&5E+&9B+&5F :\ C 5EQUS &89+&89+&90+&82+&88+&88+&8A+&5F :\ E 5EQUS &8B+&8B+&A1+&A1+&8C+&8C+&8D+&5F :\ I 5EQUS &22+&32+&3F+&2F+&A5+&A4+&5C+&5F :\ N 5EQUS &99+&94+&A2+&A2+&93+&93+&95+&A7 :\ O 5EQUS &9A+&81+&A3+&A3+&96+&96+&97+&5F :\ U 5EQUS &98+&98+&3F+&2F+&7E+&5E+&5C+&9D :\ Y !EQUS &92+&91+&8F+&9E+&9F .NewRDtab4 6EQUS &B1+&DD+&AA+&DF+&CD+&B0+&BA+&C8 :\ SC 6EQUS &CA+&BC+&CC+&CE+&B9+&C9+&CB+&BB :\ SC 5EQUS &2A+&2B+&A9+&2D+&C4+&2F+&B3+&C0 :\ S 5EQUS &C1+&D9+&C3+&C5+&B4+&DA+&C2+&BF :\ S ;EQUS &B2+&DE+&2C+&DC+&2E+&DB :\ C ;EQUS &D3+&D0+&BD+&C7+&D7+&B6+&D6+&D2+&B7 :\ C# DEX:BPL RelByte H9LDA (ptr),Y:STA tmp:LDX #7 :\ Get relocation byte R:INC ptr+0:BNE RelByte:INC ptr+1:\ Update table address \ .RelByte f@LDA (src),Y:ROR tmp:BCC RelStore :\ Don't update this byte p6DEY:DEC src+1:DEC dst+1:LDA (src),Y:\ Get low byte z7CLC:ADC #(DESTBASE-CODEBASE)255 :\ Update low byte 2STA (dst),Y :\ Store it 7INY:INC src+1:INC dst+1:LDA (src),Y:\ Get high byte 9ADC #((DESTBASE-CODEBASE)256)255:\ Update high byte  .RelStore -STA (dst),Y :\ Store byte 3INC src+0:BNE P%+4:INC src+1:\ Update addresses  INC dst+0:BNE P%+4:INC dst+1 7LDA dst+1:CMP #&F8:BCC RelLp:\ Loop until reach MOS LDX #GO 255:LDY #GO 256 3JMP &FFF7 :\ Enter moved code %.GO:EQUS "GO "+~DESTBASE:EQUB 13 4.ADDRS:EQUW RELTABLE:EQUW CODEBASE:EQUW DESTBASE EQUS (8-P%)7,0) +.FONT:]:P%=P%+&400:O%=O%+&400:[OPT opt% 1.RELTABLE:]:DESTBASE=&F800-(CODEEND-CODEBASE) Creloc%=0:[OPT p(Relocate):RTS:.FONT:]:P%=P%+&400:O%=O%+&400: $high%opt%=4: .$ar%=(TMP$):#ar%=CODEBASE-base% 8Kaddr%=CODEBASE-base%:CHKEND=(CODEEND+255)-256:val%=0:bc%=8:v1%=0:v2%=0 B8:v1%=v1%256+256*mcode%?addr%:v2%=v2%256+256*#ar% L4check:addr%=addr%+1:addr%>=CODEEND-base%:#ar% Vbc%<>8::addbit(0):bc%=8 `RELEND=P%:13;: j/check:d%=v2%-v1%:v1%<&8000v1%>=CHKEND: t.13;~addr%+base%;:addbit((d%>&3FFF)1): ~4addbit(v%):val%=val%2+v%*128:bc%=bc%-1:bc%: +?O%=val%:O%=O%+1:P%=P%+1:val%=0:bc%=8: