joust/SRCASM.COM

60 lines
1.9 KiB
Plaintext
Executable File

$!
$! CONVERT A SERIAL ASSEMBLIABLE IMAGE TO A PICASSO SYSTEM 4 FRAME
$! SOURCE FILE.
$! INPUT: P1 - INPUT FILE NAME
$! P2 - OUTPUT FILE NAME
$!
$ IF P1.EQS."" THEN $ EXIT
$ IF P2.EQS."" THEN $ P2 := 'P1'
$ IF F$PARSE(P1,,,"TYPE").EQS."." THEN $ P1 := 'F$PARSE(P1,,,"NAME")'.SRC
$ IF F$PARSE(P2,,,"TYPE").EQS."." THEN $ P2 := 'F$PARSE(P2,,,"NAME")'.ASM
$ DISP := WRITE SYS$OUTPUT
$ ORG_ADDRESS = %X1000
$ OPEN/READ INPUT: 'P1'
$ OPEN/WRITE OUTPUT: 'P2'
$RDLP: READ/END=DONE INPUT: LINE
$ IF F$LOCATE("!XDMAFIX",LINE).NE.F$LENGTH(LINE) THEN $ GOTO NEW
$ DISP LINE
$ WRITE OUTPUT: LINE
$ GOTO RDLP
$!
$NEW:
$ IF ORG_ADDRESS.EQ.0 THEN $ DISP "TOO MANY IMAGES!!!!"
$ IF ORG_ADDRESS.EQ.0 THEN $ WRITE OUTPUT: "*TOO MANY IMAGES!!!!"
$ IF ORG_ADDRESS.EQ.0 THEN $ GOTO OVFL
$ DISP "******* ",LINE
$ WRITE OUTPUT: "******* ",LINE
$ N = 'F$LOCATE("$",LINE)'
$ N2 = 'F$LOCATE("!XDMAFIX",LINE)'
$ SIZE := 'F$EXTRACT(N,N2-N,LINE)'
$ DISP " ORG ''ORG_ADDRESS'"
$ WRITE OUTPUT: " ORG ''ORG_ADDRESS'"
$ ORG_ADDRESS = ORG_ADDRESS + %X500
$ IF ORG_ADDRESS.EQ.%X1000+16*%X500 THEN $ ORG_ADDRESS = 0
$ DISP " FDB ''ORG_ADDRESS',$AA05,''SIZE',$70C0,0,0,0,0"
$ WRITE OUTPUT: " FDB ''ORG_ADDRESS',$AA05,''SIZE',$70C0,0,0,0,0"
$ WRITE OUTPUT: " FCB @000,@377,@160,@130,@017,@077,@121,@350"
$ WRITE OUTPUT: " FCB @024,@220,@135,@021,@037,@244,@012,@147"
$ WRITE OUTPUT: " FDB 0,0,0,0,0,0,0,0"
$ GOTO RDLP
$!
$OVFL: READ/END=END INPUT: LINE
$ DISP "*???? ",LINE
$ WRITE OUTPUT: "*???? ",LINE
$ GOTO OVFL
$!
$DONE:
$NONE: IF ORG_ADDRESS.GE.%X1000+16*%X500 THEN $ GOTO END
$ DISP " ORG ''ORG_ADDRESS'"
$ WRITE OUTPUT: "*"
$ WRITE OUTPUT: " ORG ''ORG_ADDRESS'"
$ ORG_ADDRESS = ORG_ADDRESS + %X500
$ IF ORG_ADDRESS.EQ.%X1000+16*%X500 THEN $ ORG_ADDRESS = 0
$ WRITE OUTPUT: " FDB ''ORG_ADDRESS',0,0,0,0,0,0,0"
$ IF ORG_ADDRESS.NE.0 THEN $ GOTO NONE
$!
$END: WRITE OUTPUT: " END $D000"
$ CLOSE INPUT:
$ CLOSE OUTPUT:
$ EXIT 1