60 lines
1.9 KiB
Plaintext
Executable File
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
|