Skip to content

Commit 5084837

Browse files
committed
Merge branch 'master' into cycle-count-typedef
2 parents 40bc928 + 42ccc4c commit 5084837

File tree

19 files changed

+307
-189
lines changed

19 files changed

+307
-189
lines changed

.github/workflows/brickEmu_CI.yml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ jobs:
2626
fail-fast: false
2727
matrix:
2828
os: [ ubuntu-latest ]
29-
python-version: [3.12]
29+
python-version: [ 3.13 ]
3030

3131
steps:
3232
- name: Checkout BrickEmu
@@ -35,8 +35,8 @@ jobs:
3535
path: src
3636
- name: apt-get update
3737
run: sudo apt-get --assume-yes update
38-
- name: install build dependencies
39-
run: sudo apt-get --assume-yes install binutils-h8300-hms gcc-h8300-hms zlib1g-dev libsdl-sound1.2-dev libasound2-dev libsdl-sound1.2
38+
- name: Install build dependencies
39+
run: sudo apt-get --assume-yes install binutils-h8300-hms zlib1g-dev libsdl-sound1.2-dev libasound2-dev libsdl-sound1.2
4040
- name: make_brick_emu
4141
run: |
4242
cd src
@@ -58,6 +58,8 @@ jobs:
5858
with:
5959
repository: BrickBot/brickOS-bibo
6060
path: brickos_bibo
61+
- name: Install additional build dependencies needed by brickOS-bibo
62+
run: sudo apt-get --assume-yes install gcc-h8300-hms
6163
- name: Make brickOS-bibo
6264
run: |
6365
cd brickos_bibo
@@ -77,6 +79,7 @@ jobs:
7779
uses: actions/setup-python@v5
7880
with:
7981
python-version: ${{ matrix.python-version }}
82+
check-latest: true
8083
- name: Install dependencies
8184
run: |
8285
python -m pip install --upgrade pip

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ profile.txt
99
rom.bin
1010
rom.coff
1111
rom.srec
12+
.fuse_hidden*
1213

1314
# Prerequisites
1415
*.d

GUI.tcl

Lines changed: 91 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ exec wish $0 ${1+"$@"}
2323
set firmware ""
2424
set brickaddr 0
2525
set brickosname bibo
26+
set brickosprogslots 7
2627
set brickbothome "/usr/local"
2728
if { [llength [array get env BRICKOS_DIR]] != 0 } {
2829
set brickbothome $env(BRICKOS_DIR)
@@ -372,7 +373,7 @@ proc create_motors { } {
372373
create_one_motor 2 "C"
373374
}
374375
375-
proc press_button_3 { button id} {
376+
proc press_button_3 { button id } {
376377
if { [string equal [$button cget -relief ] "sunken" ]} {
377378
$button configure -relief raised
378379
send_cmd "B${id}0"
@@ -467,6 +468,10 @@ proc load_program { nr } {
467468
{{All Files} * }
468469
}
469470
set filename [ tk_getOpenFile -filetypes $types ]
471+
beam_program $nr $filename
472+
}
473+
474+
proc beam_program { nr filename } {
470475
if {[string match "*.rcoff" $filename]} {
471476
global firmware brickaddr CROSSTOOLPREFIX
472477
global progs
@@ -548,7 +553,7 @@ proc bos_setaddr { } {
548553
}
549554
550555
proc create_bosmenus { } {
551-
global bosaddr
556+
global bosaddr brickosprogslots
552557
menu .bosaddrmenu -postcommand {send_cmd "ON?"}
553558
.bosaddrmenu add radiobutton -label "0" -variable bosaddr -command { bos_setaddr }
554559
.bosaddrmenu add radiobutton -label "1" -variable bosaddr -command { send_cmd "ON1" }
@@ -574,8 +579,7 @@ proc create_bosmenus { } {
574579
.bosprogmenu add command -label "4..." -command {load_program 4}
575580
.bosprogmenu add command -label "5..." -command {load_program 5}
576581
.bosprogmenu add command -label "6..." -command {load_program 6}
577-
.bosprogmenu add command -label "7..." -command {load_program 7}
578-
}
582+
.bosprogmenu add command -label "7..." -command {load_program 7}}
579583
580584
proc show_about_box { } {
581585
tk_messageBox -icon info -title "About BrickEMU" -message "BrickEmu (C) 2003-2004 Jochen Hoenicke\n\nThis program is free software; you can redistribute it and/or modify it under the terms of the GPL.\n\nYou can find the latest version at:\nhttp://hoenicke.ath.cx/rcx/"
@@ -677,46 +681,102 @@ proc startit { } {
677681
# HAUPTPROGRAMM
678682
#---------------------------------
679683
680-
set portnr 0
684+
set guiserverport 0
685+
set irserverport 0
681686
for { set i 0 } { $i < $argc } {incr i 1} {
682-
if { [lindex $argv $i] == "-firm" } {
683-
incr i 1
684-
set firmware [lindex $argv $i]
685-
} else {
686-
set portnr [lindex $argv $i]
687+
switch [lindex $argv $i] {
688+
"-rom" {
689+
incr i 1
690+
set rom [lindex $argv $i]
691+
puts "Requested ROM: $rom"
692+
}
693+
"-firm" {
694+
incr i 1
695+
set firmware [lindex $argv $i]
696+
puts "Requested Firmware: $firmware"
697+
}
698+
"-prog1" -
699+
"-prog2" -
700+
"-prog3" -
701+
"-prog4" -
702+
"-prog5" -
703+
"-prog6" -
704+
"-prog7" {
705+
set prognum [string index [lindex $argv $i] end]
706+
incr i 1
707+
set initialprogs($prognum) [lindex $argv $i]
708+
puts "Requested Program $prognum: $initialprogs($prognum)"
709+
}
710+
"-guiserverport" {
711+
incr i 1
712+
set guiserverport [lindex $argv $i]
713+
}
714+
"-irserverport" {
715+
incr i 1
716+
set irserverport [lindex $argv $i]
717+
}
718+
default {
719+
# Unrecognized command-line argument
720+
}
687721
}
688722
}
689723
690-
if { $portnr == 0 } {
691-
692-
if { [llength [array get env BRICKEMU_DIR]] != 0 } {
693-
set brickemu_dir $env(BRICKEMU_DIR)
694-
} else {
695-
set brickemu_dir "."
724+
proc load_initial_firmware_and_programs { } {
725+
if {$firmware != ""} { beam_firmware $firmware }
726+
727+
foreach {slotnr program} [array get initialprogs] {
728+
beam_program $slotnr $program
696729
}
730+
}
697731
698-
proc start_server { fd addr port } {
699-
global emufd firmware;
700-
set emufd $fd
732+
proc start_gui { } {
733+
# TCL currently does not support passing arrays, so we read the global.
734+
# - https://wiki.tcl-lang.org/page/How+to+pass+arrays
735+
global firmware initialprogs;
736+
737+
puts "Starting GUI..."
738+
create_gui
739+
startit;
740+
set delay 200
741+
742+
if {$firmware != ""} {
743+
after $delay "beam_firmware $firmware"
744+
set delay [ expr { $delay + 400 } ]
745+
}
701746
702-
puts "Starting GUI..."
703-
startit;
704-
if {$firmware != ""} { after 200 "beam_firmware $firmware" }
747+
foreach {slotnr program} [array get initialprogs] {
748+
set delay [ expr { $delay + 100 } ]
749+
after $delay "beam_program $slotnr $program"
705750
}
751+
}
752+
753+
proc start_server { fd addr port } {
754+
global emufd;
755+
756+
set emufd $fd
757+
start_gui;
758+
}
706759
707-
create_gui
708-
set fd [socket -server start_server 0]
709-
set portnr [lindex [fconfigure $fd -sockname] 2]
710-
puts "Starting: $brickemu_dir/emu $portnr"
711-
exec $brickemu_dir/emu -serverport $portnr &
760+
if { $guiserverport == 0 } {
761+
762+
if { [llength [array get env BRICKEMU_DIR]] != 0 } {
763+
set brickemu_dir $env(BRICKEMU_DIR)
764+
} else {
765+
set brickemu_dir "."
766+
}
767+
768+
global emufd;
769+
set fd [socket -server start_server 0 ]
770+
set guiserverport [lindex [fconfigure $fd -sockname] 2]
771+
772+
puts "Starting: $brickemu_dir/emu -rom \"$rom\" -guiserverport $guiserverport"
773+
exec $brickemu_dir/emu -rom "$rom" -guiserverport $guiserverport &
712774
} else {
713775
global emufd;
714776
715777
if [catch {
716-
set emufd [ socket localhost $portnr ];
778+
set emufd [ socket localhost $guiserverport ];
717779
} msg ] { puts $msg ; exit }
718780
719-
create_gui
720-
startit;
721-
if {$firmware != ""} { after 200 "beam_firmware $firmware" }
781+
start_gui
722782
}

0 commit comments

Comments
 (0)