More suggestions:
!.) Font sizes: Also opt for size 9 and 8 (I can't type in a number in the box); this would show more of the code in one window. I typed 7 in the font size for Picaxe VSM's program windows, and I could still read it well.
".) referring to andrew@post 8: How about having a 'taskbar' at the bottom which shows which code windows are open and minimized, e.g. a button for an open window is in, and a button for a minimized window is sticking out. Features for the taskbar:
1.) option to auto-hide (and turn-off) the taskbar, e.g. if the mouse rolls onto or below the status bar or the bottom line, the taskbar shows.
2.) Option to hide minimized windows from the window area while the taskbar is on (including on autohide) (because they're already shown on the taskbar.)
3.) Option to double-tier the task bar.
4.) Ability to drag buttons to different positions.
£.) Extra to BCJK@post 7: Option on the toolbar to - Show all; hide name/text; hide picture - on each button, varying the toolbar width as required.
$.) More to Req. 01 @post 1: Option to list symbol names in the order they are typed in the code window.
%.) I would also like to be able to type in a quadword, or larger (in hex and binary) in a serout, owout, sound, tune, eeprom, and table commands.
Code:
Example 1:
owout 1,%1001,($55,$16F4198C0AB28501,$44)
' Reset, mchrom, serial number, Convert
Would output:
owout 1,%1001,($55,$16,$F4,$19,$8C,$0A,$B2,$85,$01,$44)
' Reset, mchrom, serial number, Convert
Example 2:
table 0, (%00000000000000000000000000000000)
table 4, (%00000001110000000000011100000000)
table 8, (%00000001110000000000011100000000)
table 12, (%00000001110000000000011100000000)
table 16, (%00000000000000000000000000000000)
table 20, (%00000000000000111000000000000000)
table 24, (%00000000000000111000000000000000)
table 28, (%00000000000000111000000000000000)
table 32, (%00011000000000000000000000110000)
table 36, (%00001111000000000000000111100000)
table 40, (%00000001111100000001111100000000)
table 44, (%00000000000111111111000000000000)
Would output:
table 0, (%00000000,%00000000,%00000000,%00000000)
table 4, (%00000001,%11000000,%00000111,%00000000)
table 8, (%00000001,%11000000,%00000111,%00000000)
table 12, (%00000001,%11000000,%00000111,%00000000)
table 16, (%00000000,%00000000,%00000000,%00000000)
table 20, (%00000000,%00000011,%10000000,%00000000)
table 24, (%00000000,%00000011,%10000000,%00000000)
table 28, (%00000000,%00000011,%10000000,%00000000)
table 32, (%00011000,%00000000,%00000000,%00110000)
table 36, (%00001111,%00000000,%00000001,%11100000)
table 40, (%00000001,%11110000,%00011111,%00000000)
table 44, (%00000000,%00011111,%11110000,%00000000)
This would, in certain circumstances e.g. serial numbers or graphics, make it neater.
^.) Ability to customize the variable list in the main simulation window e.g. using directives in the program code, and have a check box named 'custom', alongside 'byte' and 'word'.
Example: (variable list width varies accordingly)
Code:
#variablelist (b0,$,%,?1-1end), (b1,$,%,?1-1end), (b2,%), (b3,%), (b4,0), (b5,0)
#variablelist (b6,0), (b7,0), (b8,0), (b9,0), (b16,s,0), (w7,s,0), (b17,s,0,%)
symbol iocs16=pin0'porta
symbol dmarq=pin1
symbol sel=3'outputs
symbol tso=4
symbol gso=5
symbol dw=6
symbol dr=7
symbol irdy=pin0'inputs
symbol intrq=pin2
symbol pdiag=pin5
symbol dasp=pin6
symbol cts=pin7
symbol sri=4
symbol gsi=7
symbol tsi=3
symbol ordy=0'portc
symbol dmack=1
symbol secno=b16
symbol cylin=w7'b14+b15
symbol cyllow=b14
symbol cylhigh=b15
symbol hdsel=b17
symbol cs=bit16'b2 and b3 is used as a bit register
symbol cs1=0
symbol cs3=1
symbol adm=bit17
symbol chs=0
symbol lba=1
symbol mrsl=bit18
symbol master=0
symbol slave=1
symbol hdb0=bit19
symbol hexbin0=1
symbol ofdec0=0
symbol hdb1=bit20
symbol decbin1=1
symbol ofhex1=0
symbol eret=bit21
symbol norm=0
symbol once=1
symbol sctradr=bit22
symbol cyladr=bit23
symbol headadr=bit24
symbol ent=$0d
symbol rprtc=%00000010'the RS232 40x1 IO expanders
symbol wprtc=%00000011
symbol wdirc=%00000101
symbol rin=%00000110
symbol wout=%00000111
symbol rpa=%00100010
symbol rmem=%00100010
symbol wmem=%00100011
'xx001xxx=readadc
'xx010xxx=clear outpin
'xx011xxx=set outpin
symbol kpscan=%00110000
symbol hics1=%00011111
symbol locs1=%00010111
symbol hics3=%00011110
symbol locs3=%00010110
symbol hirst=%00011101
symbol lorst=%00010101
symbol ch8line1=0
symbol ch8line2=16
symbol ch8line3=32
symbol ch8line4=48
symbol ch8line5=64
symbol ch8line6=80
symbol ch8line7=96
symbol ch8line8=112
symbol ch6line1=0
symbol ch6line2=21
symbol ch6line3=42
symbol ch6line4=63
symbol ch6line5=84
symbol ch6line6=105
symbol ch6line7=126
symbol ch6line8=147
symbol lch6line1=1
symbol lch6line2=22
symbol lch6line3=43
symbol lch6line4=64
symbol lch6line5=85
symbol lch6line6=106
symbol lch6line7=127
symbol lch6line8=148
#cont 1:
symbol kidentdev=20'keypad part of io expander 0
symbol kwrtcatche=21
symbol krdlkahead=22
symbol kpwronrevers=23
symbol kverify=24
symbol kseek=25
symbol kdevdiag=26
symbol kmultimode=27
symbol krecalib=28
symbol ksecadres=29
symbol kreadsec=30
symbol kwritesec=31
'1 to 15 = k1 to kF
symbol k0=16
symbol kyes=17
symbol kno=18
symbol khexbin=19
symbol kbksp=32
symbol kblank1=33
symbol kchslba=34
symbol konce=35
symbol kmrsl=36
symbol gclrtxt =%10000000
symbol gwrtxt =%00011000'commands for graphical lcd interface
symbol gwrend =%00011011
symbol gnormal =%00000100
symbol gonce =%00000101
symbol gmulti =%00000110
symbol ghdboff =%00001000
symbol ghex =%00001001
symbol gdec =%00001010
symbol gbin =%00001011
symbol gsecno =%00001100
symbol gcylin =%00001101
symbol gchlbmrsl =%00010000
symbol glistptr =%00100000
symbol ghdsel =%00110000
#cont 1end:
symbol srst=bit2'device control
symbol nien=bit1
symbol bbk=bit7'error register
symbol unc=bit6
symbol mc=bit5
symbol idnf=bit4
symbol mcr=bit3
symbol abrt=bit2
symbol tk0nf=bit1
symbol amnf=bit0
symbol bsy=bit7'status register
symbol drdy=bit6
symbol dwf=bit5
symbol dsc=bit4
symbol drq=bit3
symbol corr=bit2
symbol idx=bit1
symbol err=bit0
#variablelist (b0,$,%,?1-1end), (b1,$,%,?1-1end), (b2,%), (b3,%), (b4,0), (b5,0)
#variablelist (b6,0), (b7,0), (b8,0), (b9,0), (b16,s,0), (w7,s,0), (b17,s,0,%)
symbol ...
...
The above commands builds up the list showing: (in the column order the same as how they are typed in the line, e.g. for b0, hex value is on the first data column (after the variable name column), and constant names are on the third column)
- b0 with $hex value, %binary, and constant names from constant symbols under '#cont 1' down to '#cont 1end'
- b1 with $hex value, %binary, and constant names (same as above)
- b2 with %binary value showed in the next column (first data column)
- b3 with %binary
- b4 with decimal value
- b5 with decimal
- b6 with decimal
- b7 with decimal
- b8 with decimal
- b9 with decimal
- b16 (symbol name 'secno' displayed instead of 'b16') with decimal
- w7 (symbol name 'cylin' displayed, as there is a 'symbol cylin=w7' in the program) with decimal
- b17 ('hdsel' displayed in the variable name column instead of 'b17') with decimal and binary.
3 data columns after the variable name column will be shown in the variablelist, because 3 is the highest amount of data types in the above list per one variable.
Variablelist syntax: #VARIABLELIST (variable, {S,} dtype{, dtype...}){, (variable, ...)}
'variable' is a bitvariable, bytevariable or wordvariable (including system variables and flags when supported).
if 'S,' is typed after 'variable', it's symbol name (if there is one) is used in the variable list instead of the variable name, e.g. in (b16,s, ...), there is an S in there, so 'secno' instead of 'b16' is displayed in the first column (variable name column).
'dtype' is a symbol which defines the data type shown in a column: '$' means 'show hex value' e.g. $4B, '0' shows decimal e.g. 75, '%' shows binary e.g. %01001011, and 'A' shows ascii charactors (1 for bytes, 2 for words) e.g. "K".
'?' is used to show a predefined constant name whenever possible. e.g. '?1-1end' means 'every time a different number is in the variable, all the constant-defining symbol command between the '#cont 1' and '#cont 1end' labels are checked, e.g. if the new value in the variable is 29, the scan stops at the 'symbol ksecadres=29' command, and displays 'ksecadres' (without ' or ") in the variable list.'
When the 'custom' box is checked, the simulator looks for the #variablelist commands, and puts all the data in these commands into the variable list simulator, and it would show the variable list accordingly.
#variablelist is an example command name, and #cont ... is an example of a special label directive that is read by the (#variablelist) command.