diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5acfdfc --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +# cadius disk files +*.2mg +# merlin assembly listings +*_output.txt \ No newline at end of file diff --git a/README.md b/README.md index d7c9061..e0a6a94 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,8 @@ Appy abstracts the tools away from a script mindset, and into a project mindset. Currently it uses an `appy.yaml` file in the current project directory. The format is as follows: ``` -assemble: [main.s, grafix.s, snd.s, a.s, b.s] # <--- list of files to assemble with Merlin +assemble: [main.s, grafix.s, snd.s, a.s, b.s] # <--- list of files to assemble with Merlin +indent: [c.s] # <--- additional files to indent when running `appy fmt` disks: # <--- define disks, can be more than one, handy for 140K + 800K - name: mydiskimage # <---- each disk has a name (ProDOS volume name) file: mydiskimage800.2mg # <---- each disk has a filename for the image it creates @@ -45,7 +46,7 @@ disks: # <--- define disks, can be more ``` ## User Overrides -What if your copy of Merlin32 (assembler) is in a different location than your teammates? You can set up local binary overrides with an `appy.user.yaml` file in the same directory. It allows the following 3 program settings: +What if your copy of Merlin32 (assembler) is in a different location than your teammate's? You can set up local binary overrides with an `appy.user.yaml` file in the same directory. It allows the following 3 program settings: ``` # local system settings/overrides programs: diff --git a/appy.yaml b/appy.yaml index 47f87ba..c32c619 100644 --- a/appy.yaml +++ b/appy.yaml @@ -1,4 +1,5 @@ assemble: [testsrc/sp.s, testsrc/pc.s, testsrc/fmt.s] +indent: [testsrc/fmt2.s] disks: - name: mydiskimage file: mydiskimage800.2mg diff --git a/core/diskbuilder.go b/core/diskbuilder.go index 4ea1e3f..f8fc684 100644 --- a/core/diskbuilder.go +++ b/core/diskbuilder.go @@ -6,14 +6,15 @@ import ( "os/exec" "github.com/digarok/appy/core/project" + "github.com/fatih/color" ) func CreateDisk(name string, file string, size string) { fmt.Printf("Creating Disk: \"%s\" -> %s \tSize: %s\n", name, file, size) - cmd := exec.Command(project.LocalConf.Programs.Cadius, "CREATEVOLUME", file, name, size) - err := cmd.Run() + out, err := exec.Command(project.LocalConf.Programs.Cadius, "CREATEVOLUME", file, name, size).Output() if err != nil { + color.Cyan(string(out)) log.Fatal(err) } } @@ -21,12 +22,11 @@ func CreateDisk(name string, file string, size string) { func AddFiles(disk project.Disk) { fmt.Printf("Add files to: \"%s\"\n", disk.Name) for _, file := range disk.Files { - // fmt.Printf("%s ADDFILE %s %s %s\n", CadiusPath, disk.File, file.Output, file.Input) fmt.Printf(" Adding file: -----> %s\n", file.Input) - cmd := exec.Command(project.LocalConf.Programs.Cadius, "ADDFILE", disk.File, file.Output, file.Input) - err := cmd.Run() + out, err := exec.Command(project.LocalConf.Programs.Cadius, "ADDFILE", disk.File, file.Output, file.Input).Output() if err != nil { + color.Cyan(string(out)) log.Fatal(err) } } diff --git a/core/formatter.go b/core/formatter.go index 09c5aaa..bc18ee9 100644 --- a/core/formatter.go +++ b/core/formatter.go @@ -14,6 +14,11 @@ func Format(args []string) { fmt.Printf("Formatting %v\n", filename) merlingo.FmtFile(filename) } + // format all indent files in appy.yaml + for _, filename := range project.AppyProj.Indent { + fmt.Printf("Formatting %v\n", filename) + merlingo.FmtFile(filename) + } } else { // format all assembly files in args for _, filename := range args { diff --git a/core/project/project.go b/core/project/project.go index 8ad3e82..3420792 100644 --- a/core/project/project.go +++ b/core/project/project.go @@ -13,6 +13,7 @@ type Project struct { name string Disks []Disk Assemble []string + Indent []string } type Disk struct { diff --git a/testsrc/fmt2.s b/testsrc/fmt2.s new file mode 100644 index 0000000..70a02af --- /dev/null +++ b/testsrc/fmt2.s @@ -0,0 +1,27 @@ +* formatting test + org $300 ; start + +main nop + * what about this + + ; and this + + sta :jo+1 + + +:jo+1 lda $400 + lda $400 + rts + +** 24 (bit) hex to 8 (nibble) / 4 byte BCD +** 24 (bit) hex to +HEXDEC mx %11 + LDA #0 ; Ensure the result is clear + STA DEC8+0 + STA DEC8+1 + STA DEC8+2 + STA DEC8+3 +ReallyThisisaLoooooongLabelwith stal $e12000,y ; look at this long line + +* TABS.... +* $D5 $0008 sequence [Application Specific]