/ > SetType/s v1.03 20-May-1998 J.G.Harston 8 Source for *SetType - set filetype in load address : (7OSARGS=&FFDA:OSFILE=&FFDD:OSGBPB=&FFD1:OSFIND=&FFCE 2GSINIT=&FFC2:GSREAD=&FFC5 <: F. mcode% &300:load%=&FFFF0900:ver$="v1.03" P: Zlptr=&F2:addr=&A8 d P=0 1 nP%=load%:O%=mcode% x[OPT P*3+4 .ctrl EQUW 0 .errSyntax 4BRK:EQUB 220:EQUS "Syntax: SetType " .errNotFound *BRK:EQUB 214:EQUS "File not found":BRK : .start% &LDA #1:LDX #addr:LDY #0:JSR OSARGS 4LDA addr+0:STA lptr+0:STA ctrl+0 :\ =>filename $LDA addr+1:STA lptr+1:STA ctrl+1 CLC:JSR GSINIT:BEQ errSyntax .SkipName 8JSR GSREAD:BCC SkipName :\ Step past name ;JSR SkipSpace:BEQ errSyntax :\ Step to parameter 8LDX #addr:JSR GetHex:BNE errSyntax :\ Scan parameter ";LDA #5:JSR CallFile :\ Read current info ,TAX:BEQ errNotFound 6LDA #&00:STA ctrl+2 @LDA addr+0:STA ctrl+3:PHA J7LDA addr+1:A #&F0:STA ctrl+4:TAY :\ Load=&FFFxxx00 TLDX #4:LDX #&FF ^.SetAddrLp h8STA ctrl+5,X:DEX:BPL SetAddrLp :\ Exec=&FFFFFFFF rDPLA:INY:BNE SetExecZero :\ <>&Fxx, set Exec=&FFFF0000 |ACMP #&FE:BCS SetInfo :\ &FFE=Command, &FFF=Text 3CMP #&F7:BEQ SetInfo :\ &FF7=Font 3CMP #&EB:BEQ SetInfo :\ &FEB=Obey .SetExecZero 8INC ctrl+6:INC ctrl+7 :\ Exec=&FFFF0000  .SetInfo 4LDA #1 :\ Write info  .CallFile #LDX #ctrl 255:LDY #ctrl 256 JMP OSFILE :  .GetHex  LDA #0 #STA 0,X:STA 1,X:STA 2,X:STA 3,X .GetHexNext !JSR GetHexDigit:BCC SkipSpace PHA:TYA:PHA:LDY #4 &.GetHexMultiply 0#ASL 0,X:ROL 1,X:ROL 2,X:ROL 3,X :DEY:BNE GetHexMultiply DPLA:TAY:PLA:A 0,X:STA 0,X NINY:BNE GetHexNext X: b.GetHexDigit lLDA (lptr),Y vCMP #"0":BCC HexDigitBad CMP #"9"+1:BCC HexDigitOk CMP #"A":BCC HexDigitBad  #&DF CMP #"F"+1:BCS HexDigitBad  SBC #7 .HexDigitOk SBC #"0"-1:RTS .HexDigitBad  CLC:RTS : .SkipSpace1 INY .SkipSpace )LDA (lptr),Y:CMP #" ":BEQ SkipSpace1  CMP #13:RTS :  \.table * \EQUS "TEXT" :\EQUW &FFFF 4 \EQUS "COMMAND" :\EQUW &FEFF > \EQUS "DATA" :\EQUW &FDFF H \EQUS "UTILITY" :\EQUW &FCFF R \EQUS "BASIC" :\EQUW &FBFF \ \EQUS "MODULE" :\EQUW &FAFF f \EQUS "BBC FONT":\EQUW &F7FF p \EQUS "TELETEXT":\EQUW &7CFF z \EQUS "BBC ROM" :\EQUW &BCFB  \EQUB 0  EQUS ver$ : ]:  P%>&B00:"Code overrun": X"*SAVE SetType "+~mcode%+" "+~O%+" "+~(start%&FFFF0000)+" "+~(load%&FFFF0000)