Address (hex, dec) | Description
|
|---|
$0000-$00FF, 0-256 Zero page
|
$0000 0 |
Processor port data direction register. Bits:
Default: $2F, %00101111.
|
$0001 1 | Processor port. Bits:
Bits #0-#2: Configuration for memory areas
$A000-$BFFF, $D000-$DFFF and $E000-$FFFF. Values:
%x00: RAM visible in all three areas.
%x01: RAM visible at $A000-$BFFF and
$E000-$FFFF.
%x10: RAM visible at $A000-$BFFF; KERNAL ROM
visible at $E000-$FFFF.
%x11: BASIC ROM visible at $A000-$BFFF; KERNAL ROM
visible at $E000-$FFFF.
%0xx: Character ROM visible at $D000-$DFFF. (Except
for the value %000, see above.)
%1xx: I/O area visible at $D000-$DFFF. (Except for
the value %100, see above.)
Bit #3: Datasette output signal level.
Bit #4: Datasette button status; 0 = One or more of
PLAY, RECORD, F.FWD or REW pressed; 1 = No button is pressed.
Bit #5: Datasette motor control; 0 = On; 1 = Off.
Default: $37, %00110111.
|
$0002 2 | Unused.
|
$0003-$0004 3-4 | Unused.
Default: $B1AA, execution address of routine converting floating point to
integer.
|
$0005-$0006 5-6 | Unused.
Default: $B391, execution address of routine converting integer to floating
point.
|
$0007 7 | Byte being search for during various
operations.
Current digit of number being input.
Low byte of first integer operand during AND and OR.
Low byte of integer-format FAC during INT().
|
$0008 8 | Byte being search for during various
operations.
Current byte of BASIC line during tokenization.
High byte of first integer operand during AND and OR.
|
$0009 9 | Current column number during SPC()
and TAB().
|
$000A 10 | LOAD/VERIFY switch. Values:
$00: LOAD.
$01-$FF: VERIFY.
|
$000B 11 | Current token during
tokenization.
Length of BASIC line during insertion of line.
AND/OR switch; $00 = AND; $FF = OR.
Number of dimensions during array operations.
|
$000C 12 | Switch for array operations.
Values:
|
$000D 13 | Current expression type. Values:
$00: Numerical.
$FF: String.
|
$000E 14 | Current numerical expression type.
Bits:
|
$000F 15 | Quotation mode switch during
tokenization; Bit #6: 0 = Normal mode; 1 = Quotation mode.
Quotation mode switch during LIST; $01 = Normal mode; $FE = Quotation
mode.
Garbage collection indicator during memory allocation for string variable;
$00-$7F = There was no garbage collection yet; $80 = Garbage collection
already took place.
|
$0010 16 | Switch during fetch of variable
name. Values:
|
$0011 17 | GET/INPUT/READ switch. Values:
$00: INPUT.
$40: GET.
$98: READ.
|
$0012 18 | Sign during SIN() and TAN().
Values:
$00: Positive.
$FF: Negative.
|
$0013 19 | Current I/O device number.
Default: $00, keyboard for input and screen for output.
|
$0014-$0015 20-21 | Line number during GOSUB,
GOTO and RUN.
Second line number during LIST.
Memory address during PEEK, POKE, SYS and WAIT.
|
$0016 22 | Pointer to next expression in string
stack. Values: $19; $1C; $1F; $22.
Default: $19.
|
$0017-$0018 23-24 | Pointer to previous
expression in string stack.
|
$0019-$0021 25-33 | String stack, temporary
area for processing string expressions (9 bytes, 3 entries).
|
$0022-$0025 34-37 | Temporary area for various
operations (4 bytes).
|
$0026-$0029 38-41 | Auxiliary arithmetical
register for division and multiplication (4 bytes).
|
$002A 42 | Unused.
|
$002B-$002C 43-44 | Pointer to beginning of
BASIC area.
Default: $0801, 2049.
|
$002D-$002E 45-46 | Pointer to beginning of
variable area. (End of program plus 1.)
|
$002F-$0030 47-48 | Pointer to beginning of
array variable area.
|
$0031-$0032 49-50 | Pointer to end of array
variable area.
|
$0033-$0034 51-52 | Pointer to beginning of
string variable area. (Grows downwards from end of BASIC area.)
|
$0035-$0036 53-54 | Pointer to memory allocated
for current string variable.
|
$0037-$0038 55-56 | Pointer to end of BASIC
area.
Default: $A000, 40960.
|
$0039-$003A 57-58 | Current BASIC line number.
Values:
$0000-$F9FF, 0-63999: Line number.
$FF00-$FFFF: Direct mode, no BASIC program is being
executed.
|
$003B-$003C 59-60 | Current BASIC line number
for CONT.
|
$003D-$003E 61-62 | Pointer to next BASIC
instruction for CONT. Values:
|
$003F-$0040 63-64 | BASIC line number of
current DATA item for READ.
|
$0041-$0042 65-66 | Pointer to next DATA item
for READ.
|
$0043-$0044 67-68 | Pointer to input result
during GET, INPUT and READ.
|
$0045-$0046 69-70 | Name and type of current
variable. Bits:
$0045 bits #0-#6: First character of variable
name.
$0046 bits #0-#6: Second character of variable name;
$00 = Variable name consists of only one character.
$0045 bit #7 and $0046 bit #7:
|
$0047-$0048 71-72 | Pointer to value of current
variable or FN function.
|
$0049-$004A 73-74 | Pointer to value of current
variable during LET.
Value of second and third parameter during WAIT.
Logical number and device number during OPEN.
$0049, 73: Logical number of CLOSE.
Device number of LOAD, SAVE and VERIFY.
|
$004B-$004C 75-76 | Temporary area for saving
original pointer to current BASIC instruction during GET, INPUT and
READ.
|
$004D 77 | Comparison operator indicator.
Bits:
Bit #1: 1 = ">" (greater than) is present in
expression.
Bit #2: 1 = "=" (equal to) is present in
expression.
Bit #3: 1 = "<" (less than) is present in
expression.
|
$004E-$004F 78-79 | Pointer to current FN
function.
|
$0050-$0051 80-81 | Pointer to current string
variable during memory allocation.
|
$0052 82 | Unused.
|
$0053 83 | Step size of garbage collection.
Values: $03; $07.
|
$0054-$0056 84-86 | JMP ABS machine
instruction, jump to current BASIC function.
$0055-$0056, 85-86: Execution address of current BASIC function.
|
$0057-$005B 87-91 | Arithmetic register #3 (5
bytes).
|
$005C-$0060 92-96 | Arithmetic register #4 (5
bytes).
|
$0061-$0065 97-101 | FAC, arithmetic register
#1 (5 bytes).
|
$0066 102 | Sign of FAC. Bits:
|
$0067 103 | Number of degrees during polynomial
evaluation.
|
$0068 104 | Temporary area for various
operations.
|
$0069-$006D 105-109 | ARG, arithmetic register
#2 (5 bytes).
|
$006E 110 | Sign of ARG. Bits:
|
$006F-$0070 111-112 | Pointer to first string
expression during string comparison.
|
$0071-$0072 113-114 | Auxiliary pointer during
array operations.
Temporary area for saving original pointer to current BASIC instruction
during VAL().
Pointer to current item of polynomial table during polynomial
evaluation.
|
$0073-$008A 115-138 | CHRGET. Machine code
routine to read next byte from BASIC program or direct command (24
bytes).
$0079, 121: CHRGOT. Read current byte from BASIC program or direct
command.
$007A-$007B, 122-123: Pointer to current byte in BASIC program or direct
command.
|
$008B-$008F 139-143 | Previous result of
RND().
|
$0090 144 | Value of ST variable, device status
for serial bus and datasette input/output. Serial bus bits:
Bit #0: Transfer direction during which the timeout
occured; 0 = Input; 1 = Output.
Bit #1: 1 = Timeout occurred.
Bit #4: 1 = VERIFY error occurred (only during
VERIFY), the file read from the device did not match that in the
memory.
Bit #6: 1 = End of file has been reached.
Bit #7: 1 = Device is not present.
Datasette bits:
Bit #2: 1 = Block is too short (shorter than 192
bytes).
Bit #3: 1 = Block is too long (longer than 192
bytes).
Bit #4: 1 = Not all bytes read with error during pass
1 could be corrected during pass 2, or a VERIFY error occurred, the file
read from the device did not match that in the memory.
Bit #5: 1 = Checksum error occurred.
Bit #6: 1 = End of file has been reached (only during
reading data files).
|
$0091 145 | Stop key indicator. Values:
|
$0092 146 | Unknown. (Timing constant during
datasette input.)
|
$0093 147 | LOAD/VERIFY switch. Values:
$00: LOAD.
$01-$FF: VERIFY.
|
$0094 148 | Serial bus output cache status.
Bits:
|
$0095 149 | Serial bus output cache, previous
byte to be sent to serial bus.
|
$0096 150 | Unknown. (End of tape indicator
during datasette input/output.)
|
$0097 151 | Temporary area for saving original
value of Y register during input from RS232.
Temporary area for saving original value of X register during input from
datasette.
|
$0098 152 | Number of files currently open.
Values: $00-$0A, 0-10.
|
$0099 153 | Current input device number.
Default: $00, keyboard.
|
$009A 154 | Current output device number.
Default: $03, screen.
|
$009B 155 | Unknown. (Parity bit during
datasette input/output.)
|
$009C 156 | Unknown. (Byte ready indicator
during datasette input/output.)
|
$009D 157 | System error display switch.
Bits:
|
$009E 158 | Byte to be put into output buffer
during RS232 and datasette output.
Block header type during datasette input/output.
Length of file name during datasette input/output.
Error counter during LOAD from datasette. Values: $00-$3E, 0-62.
|
$009F 159 | Auxiliary counter for writing file
name into datasette buffer.
Auxiliary counter for comparing requested file name with file name read from
datasette during datasette input.
Error correction counter during LOAD from datasette. Values: $00-$3E,
0-62.
|
$00A0-$00A2 160-162 | Value of TI variable,
time of day, increased by 1 every 1/60 second (on PAL machines). Values:
$000000-$4F19FF, 0-518399 (on PAL machines).
|
$00A3 163 | EOI switch during serial bus
output. Bits:
Bit counter during datasette output.
|
$00A4 164 | Byte buffer during serial bus
input.
Parity during datasette input/output.
|
$00A5 165 | Bit counter during serial bus
input/output.
Counter for sync mark during datasette output.
|
$00A6 166 | Offset of current byte in datasette
buffer.
|
$00A7 167 | Bit buffer during RS232 input.
|
$00A8 168 | Bit counter during RS232 input.
|
$00A9 169 | Stop bit switch during RS232 input.
Values:
$00: Data bit.
$01-$FF: Stop bit.
|
$00AA 170 | Byte buffer during RS232 input.
|
$00AB 171 | Parity during RS232 input.
Computed block checksum during datasette input.
|
$00AC-$00AD 172-173 | Start address for SAVE to
serial bus.
Pointer to current byte during SAVE to serial bus or datasette.
Pointer to line in screen memory to be scrolled during scrolling the
screen.
|
$00AE-$00AF 174-175 | Load address read from
input file and pointer to current byte during LOAD/VERIFY from serial
bus.
End address after LOAD/VERIFY from serial bus or datasette.
End address for SAVE to serial bus or datasette.
Pointer to line in Color RAM to be scrolled during scrolling the screen.
|
$00B0-$00B1 176-177 | Unknown.
|
$00B2-$00B3 178-179 | Pointer to datasette
buffer.
Default: $033C, 828.
|
$00B4 180 | Bit counter and stop bit switch
during RS232 output. Bits:
Bit counter during datasette input/output.
|
$00B5 181 | Bit buffer (in bit #2) during RS232
output.
|
$00B6 182 | Byte buffer during RS232
output.
|
$00B7 183 | Length of file name or disk
command; first parameter of LOAD, SAVE and VERIFY or fourth parameter of
OPEN. Values:
|
$00B8 184 | Logical number of current file.
|
$00B9 185 | Secondary address of current
file.
|
$00BA 186 | Device number of current file.
|
$00BB-$00BC 187-188 | Pointer to current file
name or disk command; first parameter of LOAD, SAVE and VERIFY or fourth
parameter of OPEN.
|
$00BD 189 | Parity during RS232 output.
Byte buffer during datasette input/output.
|
$00BE 190 | Block counter during datasette
input/output.
|
$00BF 191 | Unknown.
|
$00C0 192 | Datasette motor switch. Values:
|
$00C1-$00C2 193-194 | Start address during SAVE
to serial bus, LOAD and VERIFY from datasette and SAVE to datasette.
Pointer to current byte during memory test.
|
$00C3-$00C4 195-196 | Start address for a
secondary address of 0 for LOAD and VERIFY from serial bus or datasette.
Pointer to ROM table of default vectors during initialization of I/O
vectors.
|
$00C5 197 | Matrix code of key previously
pressed. Values:
|
$00C6 198 | Length of keyboard buffer.
Values:
|
$00C7 199 | Reverse mode switch. Values:
$00: Normal mode.
$12: Reverse mode.
|
$00C8 200 | Length of line minus 1 during
screen input. Values: $27, 39; $4F, 79.
|
$00C9 201 | Cursor row during screen input.
Values: $00-$18, 0-24.
|
$00CA 202 | Cursor column during screen input.
Values: $00-$27, 0-39.
|
$00CB 203 | Matrix code of key currently being
pressed. Values:
|
$00CC 204 | Cursor visibility switch.
Values:
$00: Cursor is on.
$01-$FF: Cursor is off.
|
$00CD 205 | Delay counter for changing cursor
phase. Values:
|
$00CE 206 | Screen code of character under
cursor.
|
$00CF 207 | Cursor phase switch. Values:
$00: Cursor off phase, original character
visible.
$01: Cursor on phase, reverse character visible.
|
$00D0 208 | End of line switch during screen
input. Values:
|
$00D1-$00D2 209-210 | Pointer to current line
in screen memory.
|
$00D3 211 | Current cursor column. Values:
$00-$27, 0-39.
|
$00D4 212 | Quotation mode switch. Values:
$00: Normal mode.
$01: Quotation mode.
|
$00D5 213 | Length of current screen line minus
1. Values: $27, 39; $4F, 79.
|
$00D6 214 | Current cursor row. Values:
$00-$18, 0-24.
|
$00D7 215 | PETSCII code of character during
screen input/output.
Bit buffer during datasette input.
Block checksum during datasette output.
|
$00D8 216 | Number of insertions. Values:
$00: No insertions made, normal mode, control codes
change screen layout or behavior.
$01-$FF: Number of insertions, when inputting this
many character next, those must be turned into control codes, similarly to
quotation mode.
|
$00D9-$00F1 217-241 | High byte of pointers to
each line in screen memory (25 bytes). Values:
|
$00F2 242 | Temporary area during scrolling the
screen.
|
$00F3-$00F4 243-244 | Pointer to current line
in Color RAM.
|
$00F5-$00F6 245-246 | Pointer to current
conversion table during conversion from keyboard matrix codes to PETSCII
codes.
|
$00F7-$00F8 247-248 | Pointer to RS232 input
buffer. Values:
$0000-$00FF: No buffer defined, a new buffer must be
allocated upon RS232 input.
$0100-$FFFF: Buffer pointer.
|
$00F9-$00FA 249-250 | Pointer to RS232 output
buffer. Values:
$0000-$00FF: No buffer defined, a new buffer must be
allocated upon RS232 output.
$0100-$FFFF: Buffer pointer.
|
$00FB-$00FE 251-254 | Unused (4 bytes).
|
$00FF-$010A 255-266 | Buffer for conversion
from floating point to string (12 bytes.)
|
$0100-$01FF, 256-511 Processor
stack
|
$00FF-$010A 255-266 | Buffer for conversion
from floating point to string (12 bytes.)
|
$0100-$013D 256-317 | Pointers to bytes read
with error during datasette input (62 bytes, 31 entries).
|
$0100-$01FF 256-511 | Processor stack. Also
used for storing data related to FOR and GOSUB.
|
| $0200-$02FF
|
$0200-$0258 512-600 | Input buffer, storage
area for data read from screen (89 bytes).
|
$0259-$0262 601-610 | Logical numbers assigned
to files (10 bytes, 10 entries).
|
$0263-$026C 611-620 | Device numbers assigned
to files (10 bytes, 10 entries).
|
$026D-$0276 621-630 | Secondary addresses
assigned to files (10 bytes, 10 entries).
|
$0277-$0280 631-640 | Keyboard buffer (10
bytes, 10 entries).
|
$0281-$0282 641-642 | Pointer to beginning of
BASIC area after memory test.
Default: $0800, 2048.
|
$0283-$0284 643-644 | Pointer to end of BASIC
area after memory test.
Default: $A000, 40960.
|
$0285 645 | Unused. (Serial bus timeout.)
|
$0286 646 | Current color, cursor color.
Values: $00-$0F, 0-15.
|
$0287 647 | Color of character under cursor.
Values: $00-$0F, 0-15.
|
$0288 648 | High byte of pointer to screen
memory for screen input/output.
Default: $04, $0400, 1024.
|
$0289 649 | Maximum length of keyboard buffer.
Values:
|
$028A 650 | Keyboard repeat switch. Bits:
|
$028B 651 | Delay counter during repeat
sequence, for delaying between successive repeats. Values:
|
$028C 652 | Repeat sequence delay counter, for
delaying before first repetition. Values:
$00, 0: Must start repeat sequence.
$01-$10, 1-16: Delay repeat sequence.
|
$028D 653 | Shift key indicator. Bits:
Bit #0: 1 = One or more of left Shift, right Shift or
Shift Lock is currently being pressed or locked.
Bit #1: 1 = Commodore is currently being pressed.
Bit #2: 1 = Control is currently being pressed.
|
$028E 654 | Previous value of shift key
indicator. Bits:
Bit #0: 1 = One or more of left Shift, right Shift or
Shift Lock was pressed or locked at the time of previous check.
Bit #1: 1 = Commodore was pressed at the time of
previous check.
Bit #2: 1 = Control was pressed at the time of
previous check.
|
$028F-$0290 655-656 | Execution address of
routine that, based on the status of shift keys, sets the pointer at memory
address $00F5-$00F6 to the appropriate conversion table for converting
keyboard matrix codes to PETSCII codes.
Default: $EB48.
|
$0291 657 | Commodore-Shift switch. Bits:
|
$0292 658 | Scroll direction switch during
scrolling the screen. Values:
$00: Insertion of line before current line, current
line and all lines below it must be scrolled 1 line downwards.
$01-$FF: Bottom of screen reached, complete screen
must be scrolled 1 line upwards.
|
$0293 659 | RS232 control register. Bits:
Bits #0-#3: Baud rate, transfer speed. Values:
%0000: User specified.
%0001: 50 bit/s.
%0010: 75 bit/s.
%0011: 110 bit/s.
%0100: 150 bit/s.
%0101: 300 bit/s.
%0110: 600 bit/s.
%0111: 1200 bit/s.
%1000: 2400 bit/s.
%1001: 1800 bit/s.
%1010: 2400 bit/s.
%1011: 3600 bit/s.
%1100: 4800 bit/s.
%1101: 7200 bit/s.
%1110: 9600 bit/s.
%1111: 19200 bit/s.
Bits #5-#6: Byte size, number of data bits per byte;
%00 = 8; %01 = 7, %10 = 6; %11 = 5.
Bit #7: Number of stop bits; 0 = 1 stop bit; 1 = 2
stop bits.
|
$0294 660 | RS232 command register. Bits:
Bit #0: Synchronization type; 0 = 3 lines; 1 = X
lines.
Bit #4: Transmission type; 0 = Duplex; 1 = Half
duplex.
Bits #5-#7: Parity mode. Values:
%xx0: No parity check, bit #7 does not exist.
%001: Odd parity.
%011: Even parity.
%101: No parity check, bit #7 is always 1.
%111: No parity check, bit #7 is always 0.
|
$0295-$0296 661-662 | Default value of RS232
output timer, based on baud rate. (Must be filled with actual value before
RS232 input/output if baud rate is "user specified" in RS232 control
register, memory address $0293.)
|
$0297 663 | Value of ST variable, device status
for RS232 input/output. Bits:
Bit #0: 1 = Parity error occurred.
Bit #1: 1 = Frame error, a stop bit with the value of
0, occurred.
Bit #2: 1 = Input buffer underflow occurred, too much
data has arrived but it has not been read from the buffer in time.
Bit #3: 1 = Input buffer is empty, nothing to
read.
Bit #4: 0 = Sender is Clear To Send; 1 = Sender is
not ready to send data to receiver.
Bit #6: 0 = Receiver reports Data Set Ready; 1 =
Receiver is not ready to receive data.
Bit #7: 1 = Carrier loss, a stop bit and a data byte
both with the value of 0, detected.
|
$0298 664 | RS232 byte size, number of data
bits per data byte, default value for bit counters.
|
$0299-$029A 665-666 | Default value of RS232
input timer, based on baud rate. (Calculated automatically from default
value of RS232 output timer, at memory address $0295-$0296.)
|
$029B 667 | Offset of byte received in RS232
input buffer.
|
$029C 668 | Offset of current byte in RS232
input buffer.
|
$029D 669 | Offset of byte to send in RS232
output buffer.
|
$029E 670 | Offset of current byte in RS232
output buffer.
|
$029F-$02A0 671-672 | Temporary area for saving
pointer to original interrupt service routine during datasette input output.
Values:
$0000-$00FF: No datasette input/output took place yet
or original pointer has been already restored.
$0100-$FFFF: Original pointer, datasette input/output
currently in progress.
|
$02A1 673 | Temporary area for saving original
value of CIA#2 interrupt control register, at memory address $DD0D, during
RS232 input/output.
|
$02A2 674 | Temporary area for saving original
value of CIA#1 timer #1 control register, at memory address $DC0E, during
datasette input/output.
|
$02A3-$02A4 675-676 | Unknown.
|
$02A5 677 | Number of line currently being
scrolled during scrolling the screen.
|
$02A6 678 | PAL/NTSC switch, for selecting
RS232 baud rate from the proper table. Values:
|
$02A7-$02FF 679-767 | Unused (89 bytes).
|
| $0300-$03FF, 768-1023
|
$0300-$0301 768-769 | Execution address of warm
reset, displaying optional BASIC error message and entering BASIC idle
loop.
Default: $E38B.
|
$0302-$0303 770-771 | Execution address of
BASIC idle loop.
Default: $A483.
|
$0304-$0305 772-773 | Execution address of
BASIC line tokenizater routine.
Default: $A57C.
|
$0306-$0307 774-775 | Execution address of
BASIC token decoder routine.
Default: $A71A.
|
$0308-$0309 776-777 | Execution address of
BASIC instruction executor routine.
Default: $A7E4.
|
$030A-$030B 778-779 | Execution address of
routine reading next item of BASIC expression.
Default: $AE86.
|
$030C 780 | Default value of register A for
SYS.
Value of register A after SYS.
|
$030D 781 | Default value of register X for
SYS.
Value of register X after SYS.
|
$030E 782 | Default value of register Y for
SYS.
Value of register Y after SYS.
|
$030F 783 | Default value of status register
for SYS.
Value of status register after SYS.
|
$0310-$0312 784-786 | JMP ABS machine
instruction, jump to USR() function.
$0311-$0312, 785-786: Execution address of USR() function.
|
$0313 787 | Unused.
|
$0314-$0315 788-789 | Execution address of
interrupt service routine.
Default: $EA31.
|
$0316-$0317 790-791 | Execution address of BRK
service routine.
Default: $FE66.
|
$0318-$0319 792-793 | Execution address of
non-maskable interrupt service routine.
Default: $FE47.
|
$031A-$031B 794-795 | Execution address of
OPEN, routine opening files.
Default: $F34A.
|
$031C-$031D 796-797 | Execution address of
CLOSE, routine closing files.
Default: $F291.
|
$031E-$031F 798-799 | Execution address of
CHKIN, routine defining file as default input.
Default: $F20E.
|
$0320-$0321 800-801 | Execution address of
CHKOUT, routine defining file as default output.
Default: $F250.
|
$0322-$0323 802-803 | Execution address of
CLRCHN, routine initializating input/output.
Default: $F333.
|
$0324-$0325 804-805 | Execution address of
CHRIN, data input routine, except for keyboard and RS232 input.
Default: $F157.
|
$0326-$0327 806-807 | Execution address of
CHROUT, general purpose data output routine.
Default: $F1CA.
|
$0328-$0329 808-809 | Execution address of
STOP, routine checking the status of Stop key indicator, at memory address
$0091.
Default: $F6ED.
|
$032A-$032B 810-811 | Execution address of
GETIN, general purpose data input routine.
Default: $F13E.
|
$032C-$032D 812-813 | Execution address of
CLALL, routine initializing input/output and clearing all file assignment
tables.
Default: $F32F.
|
$032E-$032F 814-815 | Unused.
Default: $FE66.
|
$0330-$0331 816-817 | Execution address of
LOAD, routine loading files.
Default: $F4A5.
|
$0332-$0333 818-819 | Execution address of
SAVE, routine saving files.
Default: $F5ED.
|
$0334-$033B 820-827 | Unused (8 bytes).
|
$033C-$03FB 828-1019 | Datasette buffer (192
bytes).
|
$03FC-$03FF 1020-1023 | Unused (4 bytes).
|
$0400-$07FF, 1024-2047 Default screen
memory
|
$0400-$07E7 1024-2023 | Default area of screen
memory (1000 bytes).
|
$07E8-$07F7 2024-2039 | Unused (16 bytes).
|
$07F8-$07FF 2040-2047 | Default area for sprite
pointers (8 bytes).
|
$0800-$9FFF, 2048-40959 BASIC area
|
$0800 2048 | Unused. (Must contain a value of 0
so that the BASIC program can be RUN.)
|
$0801-$9FFF 2049-40959 | Default BASIC area
(38911 bytes).
|
$8000-$9FFF 32768-40959 | Optional cartridge
ROM (8192 bytes).
$8000-$8001, 32768-32769: Execution address of cold reset.
$8002-$8003, 32770-32771: Execution address of non-maskable interrupt
service routine.
$8004-$8008, 32772-32776: Cartridge signature. If contains the uppercase
PETSCII string "CBM80" ($C3,$C2,$CD,$38,$30) then the routine vectors are
accepted by the KERNAL.
|
$A000-$BFFF, 40960-49151 BASIC ROM
|
$A000-$BFFF 40960-49151 | BASIC ROM or RAM area
(8192 bytes); depends on the value of bits #0-#2 of the processor port at
memory address $0001:
|
$C000-$CFFF, 49152-53247 Upper RAM
area
|
$C000-$CFFF 49152-53247 | Upper RAM area (4096
bytes).
|
$D000-$DFFF, 53248-57343 I/O Area
|
$D000-$DFFF 53248-57343 | I/O Area (memory
mapped chip registers), Character ROM or RAM area (4096 bytes); depends on
the value of bits #0-#2 of the processor port at memory address $0001:
%x00: RAM area.
%0xx: Character ROM. (Except for the value %000, see
above.)
%1xx: I/O Area. (Except for the value %100, see
above.)
|
$D000-$DFFF, 53248-57343 Character
ROM
|
$D000-$DFFF 53248-57343 | Character ROM, shape
of characters (4096 bytes).
|
$D000-$D7FF 53248-55295 | Shape of characters
in uppercase/graphics character set (2048 bytes, 256 entries).
|
$D800-$DFFF 55295-57343 | Shape of characters
in lowercase/uppercase character set (2048 bytes, 256 entries).
|
$D000-$D3FF, 53248-54271 VIC-II; video
display
|
$D000 53248 | Sprite #0 X-coordinate (only bits
#0-#7).
|
$D001 53249 | Sprite #0 Y-coordinate.
|
$D002 53250 | Sprite #1 X-coordinate (only bits
#0-#7).
|
$D003 53251 | Sprite #1 Y-coordinate.
|
$D004 53252 | Sprite #2 X-coordinate (only bits
#0-#7).
|
$D005 53253 | Sprite #2 Y-coordinate.
|
$D006 53254 | Sprite #3 X-coordinate (only bits
#0-#7).
|
$D007 53255 | Sprite #3 Y-coordinate.
|
$D008 53256 | Sprite #4 X-coordinate (only bits
#0-#7).
|
$D009 53257 | Sprite #4 Y-coordinate.
|
$D00A 53258 | Sprite #5 X-coordinate (only bits
#0-#7).
|
$D00B 53259 | Sprite #5 Y-coordinate.
|
$D00C 53260 | Sprite #6 X-coordinate (only bits
#0-#7).
|
$D00D 53261 | Sprite #6 Y-coordinate.
|
$D00E 53262 | Sprite #7 X-coordinate (only bits
#0-#7).
|
$D00F 53263 | Sprite #7 Y-coordinate.
|
$D010 53264 | Sprite #0-#7 X-coordinates (bit
#8). Bits:
|
$D011 53265 | Screen control register #1.
Bits:
Bits #0-#2: Vertical raster scroll.
Bit #3: Screen height; 0 = 24 rows; 1 = 25 rows.
Bit #4: 0 = Screen off, complete screen is covered by
border; 1 = Screen on, normal screen contents are visible.
Bit #5: 0 = Text mode; 1 = Bitmap mode.
Bit #6: 1 = Extended background mode on.
Bit #7: Read: Current raster line (bit #8).
Write: Raster line to generate interrupt at (bit #8).
Default: $1B, %00011011.
|
$D012 53266 | Read: Current raster line (bits
#0-#7).
Write: Raster line to generate interrupt at (bits #0-#7).
|
$D013 53267 | Light pen X-coordinate (bits
#1-#8).
Read-only.
|
$D014 53268 | Light pen Y-coordinate.
Read-only.
|
$D015 53269 | Sprite enable register. Bits:
|
$D016 53270 | Screen control register #2.
Bits:
Bits #0-#2: Horizontal raster scroll.
Bit #3: Screen width; 0 = 38 columns; 1 = 40
columns.
Bit #4: 1 = Multicolor mode on.
Default: $C8, %11001000.
|
$D017 53271 | Sprite double height register.
Bits:
|
$D018 53272 | Memory setup register. Bits:
Bits #1-#3: In text mode, pointer to character memory
(bits #11-#13), relative to VIC bank, memory address $DD00. Values:
%000, 0: $0000-$07FF, 0-2047.
%001, 1: $0800-$0FFF, 2048-4095.
%010, 2: $1000-$17FF, 4096-6143.
%011, 3: $1800-$1FFF, 6144-8191.
%100, 4: $2000-$27FF, 8192-10239.
%101, 5: $2800-$2FFF, 10240-12287.
%110, 6: $3000-$37FF, 12288-14335.
%111, 7: $3800-$3FFF, 14336-16383.
Values %010 and %011 in VIC bank #0 and #2 select
Character ROM instead.
In bitmap mode, pointer to bitmap memory (bit #13), relative to VIC bank,
memory address $DD00. Values:
%0xx, 0: $0000-$1FFF, 0-8191.
%1xx, 4: $2000-$3FFF, 8192-16383.
Bits #4-#7: Pointer to screen memory (bits #10-#13),
relative to VIC bank, memory address $DD00. Values:
%0000, 0: $0000-$03FF, 0-1023.
%0001, 1: $0400-$07FF, 1024-2047.
%0010, 2: $0800-$0BFF, 2048-3071.
%0011, 3: $0C00-$0FFF, 3072-4095.
%0100, 4: $1000-$13FF, 4096-5119.
%0101, 5: $1400-$17FF, 5120-6143.
%0110, 6: $1800-$1BFF, 6144-7167.
%0111, 7: $1C00-$1FFF, 7168-8191.
%1000, 8: $2000-$23FF, 8192-9215.
%1001, 9: $2400-$27FF, 9216-10239.
%1010, 10: $2800-$2BFF, 10240-11263.
%1011, 11: $2C00-$2FFF, 11264-12287.
%1100, 12: $3000-$33FF, 12288-13311.
%1101, 13: $3400-$37FF, 13312-14335.
%1110, 14: $3800-$3BFF, 14336-15359.
%1111, 15: $3C00-$3FFF, 15360-16383.
|
$D019 53273 | Interrupt status register. Read
bits:
Bit #0: 1 = Current raster line is equal to the
raster line to generate interrupt at.
Bit #1: 1 = Sprite-background collision occurred.
Bit #2: 1 = Sprite-sprite collision occurred.
Bit #3: 1 = Light pen signal arrived.
Bit #7: 1 = An event, that may generate an interrupt,
occurred.
Write bits:
Bit #0: 0 = Acknowledge raster interrupt.
Bit #1: 0 = Acknowledge sprite-background collision
interrupt.
Bit #2: 0 = Acknowledge sprite-sprite collision
interrupt.
Bit #3: 0 = Acknowledge light pen interrupt.
|
$D01A 53274 | Interrupt control register.
Bits:
Bit #0: 1 = Raster interrupt enabled.
Bit #1: 1 = Sprite-background collision interrupt
enabled.
Bit #2: 1 = Sprite-sprite collision interrupt
enabled.
Bit #3: 1 = Light pen interrupt enabled.
|
$D01B 53275 | Sprite priority register.
Bits:
|
$D01C 53276 | Sprite multicolor mode register.
Bits:
|
$D01D 53277 | Sprite double width register.
Bits:
|
$D01E 53278 | Sprite-sprite collision register.
Read bits:
Write: Enable further detection of sprite-sprite
collisions.
|
$D01F 53279 | Sprite-background collision
register. Read bits:
Write: Enable further detection of sprite-background
collisions.
|
$D020 53280 | Border color (only bits
#0-#3).
|
$D021 53281 | Background color (only bits
#0-#3).
|
$D022 53282 | Extra background color #1 (only
bits #0-#3).
|
$D023 53283 | Extra background color #2 (only
bits #0-#3).
|
$D024 53284 | Extra background color #3 (only
bits #0-#3).
|
$D025 53285 | Sprite extra color #1 (only bits
#0-#3).
|
$D026 53286 | Sprite extra color #1 (only bits
#0-#3).
|
$D027 53287 | Sprite #0 color (only bits
#0-#3).
|
$D028 53288 | Sprite #1 color (only bits
#0-#3).
|
$D029 53289 | Sprite #2 color (only bits
#0-#3).
|
$D02A 53290 | Sprite #3 color (only bits
#0-#3).
|
$D02B 53291 | Sprite #4 color (only bits
#0-#3).
|
$D02C 53292 | Sprite #5 color (only bits
#0-#3).
|
$D02D 53293 | Sprite #6 color (only bits
#0-#3).
|
$D02E 53294 | Sprite #7 color (only bits
#0-#3).
|
$D02F-$D03F 53295-53311 | Unusable (17
bytes).
|
$D040-$D3FF 53312-54271 | VIC-II register
images (repeated every $40, 64 bytes).
|
$D400-$D7FF, 54272-55295 SID; audio
|
$D400-$D401 54272-54273 | Voice #1
frequency.
Write-only.
|
$D402-$D403 54274-54275 | Voice #1 pulse
width.
Write-only.
|
$D404 54276 | Voice #1 control register.
Bits:
Bit #0: 0 = Voice off, Release cycle; 1 = Voice on,
Attack-Decay-Sustain cycle.
Bit #1: 1 = Synchronization enabled.
Bit #2: 1 = Ring modulation enabled.
Bit #3: 1 = Disable voice, reset noise generator.
Bit #4: 1 = Triangle waveform enabled.
Bit #5: 1 = Saw waveform enabled.
Bit #6: 1 = Rectangle waveform enabled.
Bit #7: 1 = Noise enabled.
Write-only.
|
$D405 54277 | Voice #1 Attack and Decay length.
Bits:
Write-only.
|
$D406 54278 | Voice #1 Sustain volume and
Release length. Bits:
Write-only.
|
$D407-$D408 54279-54280 | Voice #2
frequency. Write-only.
|
$D409-$D40A 54281-54282 | Voice #2 pulse
width. Write-only.
|
$D40B 54283 | Voice #2 control register.
Write-only.
|
$D40C 54284 | Voice #2 Attack and Decay
length.
Write-only.
|
$D40D 54285 | Voice #2 Sustain volume and
Release length.
Write-only.
|
$D40E-$D40F 54286-54287 | Voice #3
frequency.
Write-only.
|
$D410-$D411 54288-54289 | Voice #3 pulse
width.
Write-only.
|
$D412 54290 | Voice #3 control register.
Write-only.
|
$D413 54291 | Voice #3 Attack and Decay
length.
Write-only.
|
$D414 54292 | Voice #3 Sustain volume and
Release length.
Write-only.
|
$D415 54293 | Filter cut off frequency (bits
#0-#2).
Write-only.
|
$D416 54294 | Filter cut off frequency (bits
#3-#10).
Write-only.
|
$D417 54295 | Filter control. Bits:
Bit #0: 1 = Voice #1 filtered.
Bit #1: 1 = Voice #2 filtered.
Bit #2: 1 = Voice #3 filtered.
Bit #3: 1 = External voice filtered.
Bits #4-#7: Filter resonance.
Write-only.
|
$D418 54296 | Volume and filter modes.
Bits:
Bits #0-#3: Volume.
Bit #4: 1 = Low pass filter enabled.
Bit #5: 1 = Band pass filter enabled.
Bit #6: 1 = High pass filter enabled.
Bit #7: 1 = Voice #3 disabled.
Write-only.
|
$D419 54297 | X value of paddle selected at
memory address $DD00. (Updates at every 512 system cycles.)
Read-only.
|
$D41A 54298 | Y value of paddle selected at
memory address $DD00. (Updates at every 512 system cycles.)
Read-only.
|
$D41B 54299 | Voice #3 waveform output.
Read-only.
|
$D41C 54300 | Voice #3 ADSR output.
Read-only.
|
$D41D-$D41F 54301-54303 | Unusable (3
bytes).
|
$D420-$D7FF 54304-55295 | SID register images
(repeated every $20, 32 bytes).
|
$D800-$DBFF, 55296-56319 Color RAM
|
$D800-$DBE7 55296-56295 | Color RAM (1000
bytes, only bits #0-#3).
|
$DBE8-$DBFF 56296-56319 | Unused (24 bytes,
only bits #0-#3).
|
$DC00-$DCFF, 56320-56575 CIA#1; inputs
(keyboard, joystick, mouse), datasette, IRQ control
|
$DC00 56320 | Port A, keyboard matrix columns
and joystick #2. Read bits:
Bit #0: 0 = Port 2 joystick up pressed.
Bit #1: 0 = Port 2 joystick down pressed.
Bit #2: 0 = Port 2 joystick right pressed.
Bit #3: 0 = Port 2 joystick left pressed.
Bit #4: 0 = Port 2 joystick fire pressed.
Write bits:
|
$DC01 56321 | Port B, keyboard matrix rows and
joystick #1. Bits:
Bit #x: 0 = A key is currently being pressed in
keyboard matrix row #x, in the column selected at memory address
$DC00.
Bit #0: 0 = Port 1 joystick up pressed.
Bit #1: 0 = Port 1 joystick down pressed.
Bit #2: 0 = Port 1 joystick right pressed.
Bit #3: 0 = Port 1 joystick left pressed.
Bit #4: 0 = Port 1 joystick fire pressed.
|
$DC02 56322 | Port A data direction
register.
|
$DC03 56323 | Port B data direction
register.
|
$DC04-$DC05 56324-56325 | Timer A. Read:
Current timer value.
Write: Set timer start value.
|
$DC06-$DC07 56326-56327 | Timer B. Read:
Current timer value.
Write: Set timer start value.
|
$DC08 56328 | Time of Day, tenth seconds (in
BCD). Values: $00-$09. Read: Current TOD value.
Write: Set TOD or alarm time.
|
$DC09 56329 | Time of Day, seconds (in BCD).
Values: $00-$59. Read: Current TOD value.
Write: Set TOD or alarm time.
|
$DC0A 56330 | Time of Day, minutes (in BCD).
Values: $00-$59. Read: Current TOD value.
Write: Set TOD or alarm time.
|
$DC0B 56331 | Time of Day, hours (in BCD). Read
bits:
Bits #0-#5: Hours.
Bit #7: 0 = AM; 1 = PM.
Write: Set TOD or alarm time.
|
$DC0C 56332 | Serial shift register. (Bits are
read and written upon every positive edge of the CNT pin.)
|
$DC0D 56333 | Interrupt control and status
register. Read bits:
Bit #0: 1 = Timer A underflow occurred.
Bit #1: 1 = Timer B underflow occurred.
Bit #2: 1 = TOD is equal to alarm time.
Bit #3: 1 = A complete byte has been received into or
sent from serial shift register.
Bit #4: Signal level on FLAG pin, datasette
input.
Bit #7: An interrupt has been generated.
Write bits:
Bit #0: 1 = Enable interrupts generated by timer A
underflow.
Bit #1: 1 = Enable interrupts generated by timer B
underflow.
Bit #2: 1 = Enable TOD alarm interrupt.
Bit #3: 1 = Enable interrupts generated by a byte
having been received/sent via serial shift register.
Bit #4: 1 = Enable interrupts generated by positive
edge on FLAG pin.
Bit #7: Fill bit; bits #0-#6, that are set to 1, get
their values from this bit; bits #0-#6, that are set to 0, are left
unchanged.
|
$DC0E 56334 | Timer A control register.
Bits:
Bit #0: 0 = Stop timer; 1 = Start timer.
Bit #1: 1 = Indicate timer underflow on port B bit
#6.
Bit #2: 0 = Upon timer underflow, invert port B bit
#6; 1 = upon timer underflow, generate a positive edge on port B bit #6
for 1 system cycle.
Bit #3: 0 = Timer restarts upon underflow; 1 = Timer
stops upon underflow.
Bit #4: 1 = Load start value into timer.
Bit #5: 0 = Timer counts system cycles; 1 = Timer
counts positive edges on CNT pin.
Bit #6: Serial shift register direction; 0 = Input,
read; 1 = Output, write.
Bit #7: TOD speed; 0 = 60 Hz; 1 = 50 Hz.
|
$DC0F 56335 | Timer B control register.
Bits:
Bit #0: 0 = Stop timer; 1 = Start timer.
Bit #1: 1 = Indicate timer underflow on port B bit
#7.
Bit #2: 0 = Upon timer underflow, invert port B bit
#7; 1 = upon timer underflow, generate a positive edge on port B bit #7
for 1 system cycle.
Bit #3: 0 = Timer restarts upon underflow; 1 = Timer
stops upon underflow.
Bit #4: 1 = Load start value into timer.
Bits #5-#6: %00 = Timer counts system cycles; %01 =
Timer counts positive edges on CNT pin; %10 = Timer counts underflows of
timer A; %11 = Timer counts underflows of timer A occurring along with a
positive edge on CNT pin.
Bit #7: 0 = Writing into TOD registers sets TOD; 1 =
Writing into TOD registers sets alarm time.
|
$DC10-$DCFF 56336-56575 | CIA#1 register images
(repeated every $10 bytes).
|
$DD00-$DDFF, 56576-56831 CIA#2; serial
bus, RS232, NMI control
|
$DD00 56576 | Port A, serial bus access.
Bits:
Bits #0-#1: VIC bank. Values:
%00, 0: Bank #3, $C000-$FFFF, 49152-65535.
%01, 1: Bank #2, $8000-$BFFF, 32768-49151.
%10, 2: Bank #1, $4000-$7FFF, 16384-32767.
%11, 3: Bank #0, $0000-$3FFF, 0-16383.
Bit #2: RS232 TXD line, output bit.
Bit #3: Serial bus ATN OUT; 0 = High; 1 = Low.
Bit #4: Serial bus CLOCK OUT; 0 = High; 1 = Low.
Bit #5: Serial bus DATA OUT; 0 = High; 1 = Low.
Bit #6: Serial bus CLOCK IN; 0 = High; 1 = Low.
Bit #7: Serial bus DATA IN; 0 = High; 1 = Low.
|
$DD01 56577 | Port B, RS232 access. Read
bits:
Bit #0: RS232 RXD line, input bit.
Bit #3: RS232 RI line.
Bit #4: RS232 DCD line.
Bit #5: User port H pin.
Bit #6: RS232 CTS line; 1 = Sender is ready to
send.
Bit #7: RS232 DSR line; 1 = Receiver is ready to
receive.
Write bits:
|
$DD02 56578 | Port A data direction
register.
|
$DD03 56579 | Port B data direction
register.
|
$DD04-$DD05 56580-56581 | Timer A. Read:
Current timer value.
Write: Set timer start value.
|
$DD06-$DD07 56582-56583 | Timer B. Read:
Current timer value.
Write: Set timer start value.
|
$DD08 56584 | Time of Day, tenth seconds (in
BCD). Values: $00-$09. Read: Current TOD value.
Write: Set TOD or alarm time.
|
$DD09 56585 | Time of Day, seconds (in BCD).
Values: $00-$59. Read: Current TOD value.
Write: Set TOD or alarm time.
|
$DD0A 56586 | Time of Day, minutes (in BCD).
Values: $00-$59. Read: Current TOD value.
Write: Set TOD or alarm time.
|
$DD0B 56587 | Time of Day, hours (in BCD). Read
bits:
Bits #0-#5: Hours.
Bit #7: 0 = AM; 1 = PM.
Write: Set TOD or alarm time.
|
$DD0C 56588 | Serial shift register. (Bits are
read and written upon every positive edge of the CNT pin.)
|
$DD0D 56589 | Interrupt control and status
register. Read bits:
Bit #0: 1 = Timer A underflow occurred.
Bit #1: 1 = Timer B underflow occurred.
Bit #2: 1 = TOD is equal to alarm time.
Bit #3: 1 = A complete byte has been received into or
sent from serial shift register.
Bit #4: Signal level on FLAG pin.
Bit #7: A non-maskable interrupt has been
generated.
Write bits:
Bit #0: 1 = Enable non-maskable interrupts generated
by timer A underflow.
Bit #1: 1 = Enable non-maskable interrupts generated
by timer B underflow.
Bit #2: 1 = Enable TOD alarm non-maskable
interrupt.
Bit #3: 1 = Enable non-maskable interrupts generated
by a byte having been received/sent via serial shift register.
Bit #4: 1 = Enable non-maskable interrupts generated
by positive edge on FLAG pin.
Bit #7: Fill bit; bits #0-#6, that are set to 1, get
their values from this bit; bits #0-#6, that are set to 0, are left
unchanged.
|
$DD0E 56590 | Timer A control register.
Bits:
Bit #0: 0 = Stop timer; 1 = Start timer.
Bit #1: 1 = Indicate timer underflow on port B bit
#6.
Bit #2: 0 = Upon timer underflow, invert port B bit
#6; 1 = upon timer underflow, generate a positive edge on port B bit #6
for 1 system cycle.
Bit #3: 0 = Timer restarts upon underflow; 1 = Timer
stops upon underflow.
Bit #4: 1 = Load start value into timer.
Bit #5: 0 = Timer counts system cycles; 1 = Timer
counts positive edges on CNT pin.
Bit #6: Serial shift register direction; 0 = Input,
read; 1 = Output, write.
Bit #7: TOD speed; 0 = 60 Hz; 1 = 50 Hz.
|
$DD0F 56591 | Timer B control register.
Bits:
Bit #0: 0 = Stop timer; 1 = Start timer.
Bit #1: 1 = Indicate timer underflow on port B bit
#7.
Bit #2: 0 = Upon timer underflow, invert port B bit
#7; 1 = upon timer underflow, generate a positive edge on port B bit #7
for 1 system cycle.
Bit #3: 0 = Timer restarts upon underflow; 1 = Timer
stops upon underflow.
Bit #4: 1 = Load start value into timer.
Bits #5-#6: %00 = Timer counts system cycles; %01 =
Timer counts positive edges on CNT pin; %10 = Timer counts underflows of
timer A; %11 = Timer counts underflows of timer A occurring along with a
positive edge on CNT pin.
Bit #7: 0 = Writing into TOD registers sets TOD; 1 =
Writing into TOD registers sets alarm time.
|
$DD10-$DDFF 56592-56831 | CIA#2 register images
(repeated every $10 bytes).
|
$DE00-$DEFF, 56832-57087 I/O Area
#1
|
$DE00-$DEFF 56832-57087 | I/O Area #1, memory
mapped registers or machine code routines of optional external devices (256
bytes). Layouta and contents depend on the actual device.
|
$DF00-$DFFF, 57088-57343 I/O Area
#2
|
$DF00-$DFFF 57088-57343 | I/O Area #2, memory
mapped registers or machine code routines of optional external devices (256
bytes). Layout and contents depend on the actual device.
|
$E000-$FFFF, 57344-65535 KERNAL ROM
|
$E000-$FFFF 57344-65535 | KERNAL ROM or RAM
area (8192 bytes); depends on the value of bits #0-#2 of the processor port
at memory address $0001:
%x0x: RAM area.
%x1x: KERNAL ROM.
|
$FFFA-$FFFF, 65530-65535 Hardware
vectors
|
$FFFA-$FFFB 65530-65531 | Execution address of
non-maskable interrupt service routine.
Default: $FE43.
|
$FFFC-$FFFD 65532-65533 | Execution address of
cold reset.
Default: $FCE2.
|
$FFFE-$FFFF 65534-65535 | Execution address of
interrupt service routine.
Default: $FF48.
|


👑
Support 🎥
On the way to getting your crown there will always be people around you mending you exposing you to better and great opportunities this section is for those kinds of people who have been supportive. Getting here was no joke.🙏
Click the icon to go back 📷 <<<


You have no collections. To create a new
collection, collect projects using the search feature and create a collection
from them in the Projects tab or clone an existing collection.
id {{element.id}}
Name
{{element.name}} Description
{{element.description}} Creation Date
{{element.creation_date}}


Example: Different sources and destinations
Purpose
Sometimes you are in need to transfer data across databases on different server or to integrate flat files. ETLBox is an excellent tool of choice for integrating data from different sources. This example will guide you through the most common scenarios.
Prerequisites
The example code will not go into the details of the sql code to create the necessary table or files. It will focus on how to move the data from the source to the destinations. If you are interest how you can create the tables or databases with ETLBox, have a look at the ControlFlow tasks
Import or exporting CSV files
The easiest (and yet very powerful) example is to import or export data from a database table from/into a csv file.
Let's start with the import of a csv file.
CSV Import
First, we need to create a connection manager which describe the connection to our database. In this example, we will connect to a Postgres database - but this will also work with any other supported database.
string PostgresConnectionString = @"Server=.;Database=demodataflow;User Id=postgres;Password=etlboxpassword;";
PostgresConnectionManager conMan = new PostgresConnectionManager(PostgresConnectionString);
No we need to create the components for the CSV source and the database destination.
//Import CSV
CsvSource sourceCSV = new CsvSource("NameList.csv");
DbDestination importDest = new DbDestination(conMan, "NameTable");
No we link the components together and execute the data flow.
sourceCSV.LinkTo(importDest);
sourceCSV.Execute();
importDest.Wait();
In our demo we start the data flow with Execute()
- this will read all data from the source
and post it into the dataflow. While reading data, incoming batches will already be written into the destination.
With the Wait()
method we wait for all data to be written into the target. The program
won't continue until the flow has finished (though most of the data processing will be done in a separate task).
If you know how to deal with the Tasks Parallel library, you can use ExecuteAsync()
and Completion()
instead.
This example only works if you have a csv file named NameList.csv
copied into your output directory. It should
look like this:
LastName,FirstName
Bunny,Bugs
,Tweety
Devil,Tasmanian
Duck,Daffy
Sylvester,
Porky Pig
Yosemite,Sam
Fudd,Elmer
Finally, here is the code to create the necessary table on your database of choice. I used the CreateTableTask
which offers a database neutral way to create a table (this will work on SqlServer, Postgres, MySql, SQLite ...)
But of course you can always use regular Sql or other frameworks like Entitiy Framework...
List<TableColumn> tc = new List<TableColumn>()
{
new TableColumn("Id","INTEGER",allowNulls:false, isPrimaryKey:true, isIdentity:true),
new TableColumn("FirstName", "VARCHAR(500)", allowNulls: true),
new TableColumn("LastName", "VARCHAR(500)", allowNulls: true),
};
CreateTableTask.Create(conMan, "NameTable", tc);
Note: Please note that the table created above has an identity column (or serial called in Postgres, or auto increment in MySql). This column has an integer value starting with 1, that auto increments for every inserted entry.
Of course, execute the create table code before you run the dataflow...
Running this example will import the csv file into the Postgres table. It should look like this:
| Id | FirstName | LastName |
|---|---|---|
| 1 | Bunny | Bugs |
| 2 | Tweety | |
| 3 | Devil | Tasmanian |
| 4 | Duck | Daffy |
| 6 | Porky Pig | NULL |
| 7 | Yosemite | Sam |
| 8 | Fudd | Elmer |
Export CSV
No we want to export the data again, which is just the other way round.
But to spice this example a little bit up, we now add an object type that hold the data during the processing. You don't need to specify the object type as shown above - in this case, ETLBox will use a string array instead. But if you are in the need to work with your data, e.g. by add a transformation in the flow, it is easier if you have defined a class that specifies your data type.
public class NameListElement
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
No we create the components for the export, link them together and start the data flow.
DbSource<NameListElement> sourceTable = new DbSource<NameListElement>(conMan, "NameTable");
CsvDestination<NameListElement> destCSV = new CsvDestination<NameListElement>("Export.csv");
destCSV.Configuration.Delimiter = ";";
sourceTable.LinkTo(destCSV);
sourceTable.Execute();
destCSV.Wait();
You will find a file called Export.csv
in your output directory. As you have
perhaps noted, we changed the default csv separator from "," to ";" by changing the configuration.
The csv will look like this:
Id;FirstName;LastName
1;Bunny;Bugs
2;;Tweety
3;Devil;Tasmanian
4;Duck;Daffy
5;Sylvester;
6;Porky Pig;
7;Yosemite;Sam
8;Fudd;Elmer
Note: As we create a table with an Identity column, our object also now contains an Id
property. If we
would want to export the data without Id, just remove the property from the object.
Transfer across databases
Sometimes you just want to transfer data across different database. Let's say we want to take the data
in the table NameTable
(which we just used for our csv import) and transfer it into a Sql Server database. (It
could have be any other database, or another Postgres database on another server).
And to make it a little bit more complicated, the destination table on Sql Server looks a little bit different - it will also have an Id column (again as an Identity), but instead of FirstName and LastName it does only have a FullName column which is obviously a combination of first and last name.
First let's create the destination table on Sql Server with a CreateTableTask (or do this manually): To do so, we will also need a new connection manager that can connect with Sql Server:
string SqlServerConnectionString = @"Data Source=.;Initial Catalog=ETLBox_DataFlow;Integrated Security=false;User=sa;password=reallyStrongPwd123";
SqlConnectionManager conMan = new SqlConnectionManager(SqlServerConnectionString);#
List<TableColumn> tc = new List<TableColumn>()
{
new TableColumn("Id","INTEGER",allowNulls:false, isPrimaryKey:true, isIdentity:true),
new TableColumn("FullName", "VARCHAR(1000)", allowNulls: true)
};
CreateTableTask.Create(conMan, "FullNameTable", tc);
Now we extend our NameListElement
by a new Property that will store the FullName:
public class NameListElement
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string FullName { get; set; }
}
With this preparations, we can now create the data flow. This time, we will add a RowTransformation
in between
the source and the destination.
PostgresConnectionManager postgresConMan = new PostgresConnectionManager(PostgresConnectionString);
SqlConnectionManager sqlConMan = new SqlConnectionManager(SqlServerConnectionString);
DbSource<NameListElement> source = new DbSource<NameListElement>(postgresConMan, "NameTable");
RowTransformation<NameListElement> trans = new RowTransformation<NameListElement>(
row =>
{
row.FullName = row.LastName + "," + row.FirstName;
return row;
}) ;
DbDestination<NameListElement> dest = new DbDestination<NameListElement>(sqlConMan, "FullNameTable");
//Linking the components
source.LinkTo(trans);
trans.LinkTo(dest);
The RowTransformation has a function that concatenates first and last name and writes it into the property
FullName
. Actually, this transformation wouldn't been necessary for this example - instead, you could have
defined the property with public string FullName => LastName + "," + FirstName;
in your NameListElement
object. But this way this example demonstrated the power of the RowTransformation a little bit.
Finally, we execute the data flow and wait for the completion.
source.Execute();
dest.Wait();
The destination table on Sql Server should now look like this:
| Id | FullName |
|---|---|
| 1 | Bugs,Bunny |
| 2 | Tweety, |
| 3 | Tasmanian,Devil |
| 4 | Daffy,Duck |
| 5 | ,Sylvester |
| 6 | ,Porky Pig |
| 7 | Sam,Yosemite |
| 8 | Elmer,Fudd |
You have successfully transfered table data from a Postgres database into a Sql Server database and transformed it on-the-fly. This is one simple example of an ETL process (Extract, Transform, Load).


What is the most appropriate way to associate CSS styles with text in a particular language in a multilingual HTML or XML document?
Presentation styles are commonly used to control changes in fonts, font sizes and line heights when language changes occur in the document. This can be particularly useful when dealing with Simplified versus Traditional Chinese, where users tend to prefer different fonts, even though they may be using many of the same characters. It can also be useful to better harmonize the look of mixed, script-specific fonts, such as when mixing Arabic and Latin fonts.
This page looks at available options for doing this most effectively.
The best way to style content by language in HTML is to use the :lang
selector in your CSS style sheet. For example:
The rest of the article adds some detail about :lang
, and compares with two other approaches.
Three CSS selectors are commonly used to apply styles where the language changes in a document.
All match the value of a lang
attribute in HTML, and all are supported by major browsers (see the test results).
[lang="..."]
selector Use this selector to style an element where the lang
value exactly matches that in the selector.
The following CSS:
Will style the span
element below:
However, it will not match a span
element with the lang
value of zh-Hans
. The attribute value has to match the selector value exactly.
[lang|="..."]
selector Use this selector to style an element where the lang
value starts with the value in the selector.
The following CSS:
Will style the span
element below:
In fact, it will match any element with a lang
value that starts with the zh
language subtag, including zh
, zh-Hant
, zh-TW
, zh-Hans-CN
, etc.
A significant difference between :lang
and the other methods is that it recognizes the language of the content of an element even
if the language is declared outside the element in question.
Suppose, for example, that in a future English document containing Japanese text you wanted to style emphasized Japanese text using special Asian CSS3 properties, rather than italicization (which doesn't always work well with the complex characters of Japanese). You might have the following rules in your style sheet:
Now assume that you have the following content, that the user agent supports :lang
, and that the html
tag
states that this is an English document.
You would expect to see the emphasized English word italicized, but the emphasized Japanese word in regular text with small dots above each character, something like this:
The important point to be made in this section is that this would not be possible using the [lang|="..."]
or [lang="..."]
selectors. For those to work you would have to declare the language explicitly on each Japanese em
tag.
This is a significant difference between the usefulness of these different selectors.
The lang
attribute is used to identify the language of text served as HTML. Text served as XML should use the xml:lang
attribute.
For XHTML that is served as text/html, it is recommended that you use both attributes, since the HTML parser will pick up on the lang
attribute, whereas if you parse the content as XML the xml:lang
attribute will be used by your XML parser.
The article will first discuss the various options for styling by language in HTML, using the lang
attribute. There then follows a section about how to style XML documents based on xml:lang
.
:lang(...)
pseudo-class selectorThe HTML fragment:
could have the following styling:
The Greek and Russian use the styling set for the body
element.
This is the ideal way to style language fragments, because it is the only selector that can apply styling to the content of an element when the language of that content is declared earlier in a page.
A rule for :lang(zh)
would match elements with a language value of zh
. It would also match more specific
language specifications such as zh-Hant
, zh-Hans
and zh-TW
.
The selector :lang(zh-Hant)
will only match elements that have a language value of zh-Hant
or have inherited
that language value. If the CSS rule specified :lang(zh-TW)
, the rule would not match our sample paragraph.
[lang|="..."]
selector that matches the beginning of a value of an attributeFor markup example we saw in the previous section, the style sheet could be written as:
Unlike :lang
, this selector will only work for elements which carry a lang
attribute (see Inheritance of language values).
There is a significant difference between this selector and [lang="..."]
. Whereas [lang="..."]
will
only match elements when the selector value and the attribute value are identical, this selector value will match a language attribute
value that has additional hyphen-separated values. Therefore the selector [lang|="sl"]
would match sl-IT
, sl-nedis
or sl-IT-nedis
, and the selector [lang|="zh-Hans"]
would also match zh-Hans-CN
.
This method avoids the need to match the language declarations at all, and relies on class
or id
attribute markup. Using an ordinary CSS class or id selector works with most browsers that support CSS. The disadvantage is that adding the attributes takes up time and bandwidth.
For the markup example above, this would require us to change the HTML code by adding class
attributes as follows:
We could then have the following styling:
xml:lang
As mentioned earlier, in a document that is parsed as XML you need to use the xml:lang
attribute (rather than the lang
attribute) to express language information.
Using :lang
Use of :lang
is straightforward. If the document is parsed as HTML, the :lang
selector will match content where the language was defined using a lang
attribute value. However, if the document is parsed as XML, the :lang
selector will match content labeled with an xml:lang
attribute value and ignore any lang
attribute value.
Using attr= and attr|=
Use of these selectors involves some additional considerations.
The xml:
part of the xml:lang
attribute indicates that this is the lang
attribute used in the XML namespace. CSS3 Namespaces describes how to handle xml:lang
as an attribute in a namespace. Basically you need to declare the namespace and then replace the colon with a vertical bar. For example:
or:
Any @namespace
rules must follow all @charset
and @import
rules and precede all other non-ignored at-rules and rule sets in a style sheet. Note, also, that the URI for the namespace declaration must be exactly correct.
Fallbacks
For browsers that are not namespace aware, you can fall back to escaped characters. For this you need no @namespace
declaration, just one of the following:
or:
Note, however, that if you try to use this approach with a namespace-aware browser (ie. most recent, major browsers), it will not work, so if you feel it is needed, you should use this approach in addition to the namespace-based selectors.
I have used the language codes zh-Hant
and zh-Hans
. These language codes do not represent specific languages. zh-Hant
would
indicate Chinese written in Traditional Chinese script. Similarly zh-Hans
represents Chinese written in Simplified Chinese script. This
could refer to Mandarin or many other Chinese languages.
Until recently the codes zh-TW
and zh-CN
were used to indicate Traditional and Simplified versions of Chinese writing, respectively.
In reality, zh-TW
should indicate Chinese spoken in Taiwan, although there is more than one Chinese language spoken in Taiwan. Similarly zh-CN
represents Chinese spoken in China (PRC). This could refer to Mandarin or any other Chinese language.
If you need to use language tags to differentiate between Chinese languages, the IANA language subtag registry has more precise language codes for a range of Chinese languages. For more information see Language tags in HTML and XML.
Getting started? Language on the Web http://www.w3.org/International/getting-started/language
Related links, Authoring web pages


assets/css/less/bootstrap/variables.less
assets/css/less/bootstrap/mixins.less
assets/css/less/bootstrap/variables.less
with original Bootstrap variables that you download,
and re-compile Ace's LESS files into CSS again.
@gutterWidth
from 30 to 24
and changed @grid-float-breakpoint-max
from @screen-sm-min(768px) to @screen-md-min(992px).
768px
but now it's been modified to 992px
.
1000px
.
assets/css/
folder.
dist/css/
folder.
ace.css
or ace.min.css
) is generated by compiling LESS files.
assets/css/less
and compile them into CSS using Node.js and LESS compiler using the following command:
lessc ace.less ../ace.css
lessc ace.less --clean-css ../ace.min.css
assets/css/less/ace.less
assets/css/less/variables.less
assets/css/less/fonts.less
assets/css/less/ace-features.less
npm install -g less
lessc ace.less ../ace.css
ace-ie.css
which has some rules for IE9 and below and should be included for IE only using conditional comments:
<!--[if lte IE 9> <link rel="stylesheet" href="path/to/assets/ace-ie.css" /> <![endif]-->
ace-part2.css
which is used when main CSS file (ace.css) is too large for IE9 and below (the 4096 selector limit).
<!--[if lte IE 9> <link rel="stylesheet" href="path/to/assets/ace-part2.css" /> <![endif]-->See the following links for more info about this IE limitation:
ace-rtl.css
file which is used for RTL (right to left) direction suitable for languages such as Arabic, Hebrew and Persian.
ace-fonts.css
which is the font definition file.
ace-fonts.css
on top of your main CSS file to reduce number of files.
ace-skins.css
file is generated by compiling
assets/css/less/skins/skins.less
lessc skins/skins.less ../ace-skins.css
lessc skins/skins.less --clean-css ../ace-skins.min.css
ace.less
using your skin of choice.
assets/css/less/sidebar.less
@import "skins/no-skin.less"
@import "skins/skin-1.less
mustache/app/views/layouts/partials/_shared/_template/fonts.mustache
<link href="path/to/bootstrap.min.css" rel="stylesheet" /> <link href="path/to/fontawesome.min.css" rel="stylesheet" /><!-- only if needed --> <link href="path/to/ace-fonts.css" rel="stylesheet" /><!-- you can also use google hosted fonts --> <link href="path/to/ace.min.css" rel="stylesheet" class="ace-main-stylesheet" /> <!--[if lte IE 9]> <link href="path/to/ace-part2.min.css" rel="stylesheet" class="ace-main-stylesheet" /> <![endif]--> <link href="path/to/ace-skins.min.css" rel="stylesheet" /><!-- only if needed --> <link href="path/to/ace-rtl.min.css" rel="stylesheet" /><!-- only if needed --> <!--[if lte IE 9]> <link href="path/to/ace-ie.min.css" rel="stylesheet" /> <![endif]--> <style> /* not recommended to define new CSS rules inside your HTML page */ .some-selector { color: red; } </style>
http://fonts.googleapis.com/css?family=Open+Sans:400,300
<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Open+Sans:400,300" />Or serve from your own server: (especially good during development, so that your pages load faster)
<link rel="stylesheet" href="path/to/ace-fonts.css" />You can also embed the contents of "ace-fonts.css" files in your main CSS file to reduce number of files:
@font-face { font-family: 'Open Sans'; font-style: normal; font-weight: 300; src: local('Open Sans Light'), local('OpenSans-Light'), url(path/to/font/DXI1ORHCpsQm3Vp6mXoaTXhCUOGz7vYGh680lGh-uXM.woff) format('woff'); } @font-face { font-family: 'Open Sans'; font-style: normal; font-weight: 400; src: local('Open Sans'), local('OpenSans'), url(path/to/font/cJZKeOuBrn4kERxqtaUH3T8E0i7KZn-EPnyo3HZu7kw.woff) format('woff'); }Font files are located inside:
assets/font
assets/fonts
and you can also serve CDN hosted fonts, for example:
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" />Please also see Icons section for more info.


An odd one this!
If I restart the emonGLCD by unplugging / turning off the USB power of restart it doesn't receive / display any data., the screen comes up OK with Zeros for the 'received' data, and only the startup temperature, i.e. the screen isn't being refreshed.
As soon as I plug in the USB to serial UART connector, (FDTi euivalent), it reboots and starts displaying data
I've tried it with different scripts and get the same result - they load up fine, and run fine only after rebooting by plugging the cable in.
Interestingly I've just tried it without the connector connected to the PC, and that also reboots it and it starts displaying data...
It sounds as though the script isn;t loading correctly (or I need a reboot button)
Any ideas where to start?
As an aside I did have the screen contrast problem which eventually resolved it self after being left on (capacitors wrong way round)
Re: RESOLVED - EmonGLCD not restarting via USB power
I've seen with mine that the choice of external power supply can be critical. In fact, I'm even of the opinion that a poor USB supply was responsible for frying one of my programmers.
Some USB chargers, for example, for phones are built to a very poor standard while USB ports on PC's have to meet the USB power source and sync specifications.
Try a different external supply and see what happens.
Re: RESOLVED - EmonGLCD not restarting via USB power
I've tried it with numerous supplies, even directly connected to the PC, - because we have more than one or two Pi's about here we are very aware of power supply variances :)
It's the action of plugging the UART adapter in to the programming header - and it makes no difference whether or not the adapter is connected to the pc that causes a reboot of the GLCD and hence kickstarts the script...
The script is definitely hung as the the on-screen timer isn't refreshed either
Re: RESOLVED - EmonGLCD not restarting via USB power
Bump to retrigger this thread, As it is still unresolved, (I kept quiet whilst the Jeelib challenges were fixed :) )
I can plug the USB to serial UART connector direct into the power supply that I am using, and it will boot up properly, just not when powered by the USB cable...
The script doesn't look like it's hung, as the timer runs (the TX resolved that) however it isn't receiving / processing and data from the emonTx's or it's on board temperature sensor.
It has been suggested elsewhere that this behaviour, may be:
Is this likely to be the cause?
If so, how do I go about viewing and configuring the fuses?
TIA
Re: RESOLVED - EmonGLCD not restarting via USB power
Avontech I have had the same problem. After quite a bit of time investigating I seem to have struck on a solution or at least I haven't had a reoccurrence since implementing it.
Of course as the emonGLCD is now operating as expected I have only restarted on a small number of occasions generally as I have developed the code for my purpose, but it has fired up fine on each occasion using the same power supply (obtained from the shop) as when it used to hang.
As I write I don't have access to the sketch so I will endeavor to post the relevant code later but the change I made that has made all the difference in my case was during setup(). I decided to initialize the RFM12B last after the calls to the glcd methods and the temperature sensor. I also placed a short delay before and after the call to rf12_initialize. My reasoning was to allow the other components to have started-up/reset etc for the first time and then initialize the RFM12B module also giving it some time to settle down. Notwithstanding I recall the the rf12_initialize code does a check to see if the device is ready.
Avontech maybe if you make a similar change in the setup() method this will work for you also.
Whilst I was trying to troubleshoot this issue I also noted that much much rarely the emonGLCD would exhibit the same behavior when started via the programming header.
Apart from real basics the electronics side of this is outside my domain so I pursued trying to work out what what was happening via the code after all the emonGLCD did update the screen and display a temperature at least once.
I eventually determined that the RFM12B code was putting the processor into sleep mode from which it never resumed. This was when the emonGLCD was attempting to send the first temperature reading. The state machine indicated that it was attempting to send the first PRE bytes and nothing further happened. Eventually I concluded that no interrupts were being raised rather than an issue with the unit resuming once an interrupt was raised.
In the case when all worked correctly by the time the code tried to send this first reading there had normally been many RFM12B interrupts. I have a number of temperature nodes, emonTX and nanodeRF already deployed. In the case where it hung there were no interrupts.
After reading about the differing quality of USB power supplies I tried a branded supply which came with an iPad and yes the emonGLCD worked. However this only raised a false hope as whilst it improved the chance of the emonGLCD working it did still on occasion hang.
This did however make me wonder if the problem concerned the various components powering-up plus my choice of USB power supply which led me to make the change described above.
As noted it has worked for me. So much so I am about to build my second emonGLCD.
During this process I have tried various sketches but the latest HomeEnergyMonitor sketch on GitHub was used in my recent effort to understand what was going on and is the basis of what I have deployed at the moment. I first had this problem about the time the updated jeelib was issued for a previous issue with the RFM12B and have used the updated library since it was made available.
More than happy for someone to 'put me right' regards my conclusion but I hope this helps.
Tim
Re: RESOLVED - EmonGLCD not restarting via USB power
Hi Tim, thanks for those pointers, I'm running a custom written sketch as I have 2 emontx's each with 3 CT's to monitor 3 pv systems and the house, and display all that info on the screen.
Because of the other emonGLCD issues with the jeelib library I had disabled all the transmit options of the RFM12B module, though of course it is (or isn't :) ) still receiving.
If in the meantime you get access to your sketch please post :)
Many Thanks, Gordon
Re: RESOLVED - EmonGLCD not restarting via USB power
That works!
I changed the sketch by the moving the rf12 command to the end of the setup section and added delays;
..
Many thanks.
Re: RESOLVED - EmonGLCD not restarting via USB power
Thanks for the fix, I've added it into the github examples in case this also effects other people. I've never had this issue but the only side effect is a second or so longer boot up...we can live with that!
Cheers,
Re: RESOLVED - EmonGLCD not restarting via USB power
Gordon that was exactly the change I made to the sketch so glad to see it improved matters for you also.
Would have replied earlier but I have been having fun with the nanodeRF_multinode_bulksend where a small(!) change has made it misbehave. :-(
Tim
Re: RESOLVED - EmonGLCD not restarting via USB power
Thanks for the fix, I've added it into the github examples in case this also effects other people. I've never had this issue but the only side effect is a second or so longer boot up...we can live with that!
Oh dear, I was hoping we’d all learned something from the “emonGLCD – Not responding” thread. This really isn’t the way to fix problems. It’s one thing to try something to get some more information about a problem but then you really need to find the root cause before incorporating the change as a permanent solution.
It may only be a couple of seconds delay now but if you apply this philosophy to all your problem solving you end up with slow, bloated code that nobody can improve because nobody really understands what it is doing in the first place.
OK, I’ll get off my soapbox now :)
Re: RESOLVED - EmonGLCD not restarting via USB power
Can I join you - on the soapbox? Putting a delay in is fine if the cause of the problem is something not completing and there's no means of determining when it has, otherwise as you say it's messy and given time it will enter tribal memory and no-one will know the reason why it's there - and it will be retained even if the cause of the original problem is found and cured.


Params
Iterations:
Apply
Actions
getByToken
getByKey
getChild
instantiate
createVariety
createVarietyResolved
$SCRIPTS$


Live stream: Watch Deontay Wilder vs Luis Ortiz 2 online video
by Anton TabuenaThe Deontay Wilder vs Luis Ortiz 2 pay-per-view is currently live! The main event heavyweight rematch is expected to start shortly, at around 12 a.m. ET. If you’re still looking for a way to catch the WBC title fight, all the live streaming details can be found below:
For those in the US, you can purchase the online PPV from FOX Sports here, or you can stream it from the Fox Sports Go app.
Fite TV also has a live stream of the event which you can check out on the video embed below, although it isn’t available in all countries.
If your country can’t watch from the clip above, you still have various options.
Those from Austria, Germany, Spain and Switzerland can stream this on DAZN. Viewers in the UK and Ireland can live stream Sky Sports here.
Wilder won the original back-and-forth contest with Ortiz with a 10th round TKO in March 2018.


Package it.polimi.ingsw.Game
Class Game
java.lang.Object
it.polimi.ingsw.Game.Game
- All Implemented Interfaces:
EndGameEventBroadcaster
,PlayerChoseGodEventBroadcaster
,PlayerLoseEventBroadcaster
,PlayerTurnUpdateBroadcaster
public class Game extends java.lang.Object implements PlayerTurnUpdateBroadcaster, PlayerLoseEventBroadcaster, EndGameEventBroadcaster, PlayerChoseGodEventBroadcaster
-
Nested Class Summary
Nested Classes Modifier and Type Class Description class
Game.GodPoolSelectionState
class
Game.GodSelectionState
class
Game.PlayingState
class
Game.WorkerPlacingState
-
Constructor Summary
-
Method Summary
-
Constructor Details
-
Game
Create a game object- Parameters:
players
- the players taking part of this gamerules
- the rules to follow
-
-
Method Details
-
getRules
-
getBoard
-
getStorage
-
getCurrentPlayer
-
getGodPool
public java.util.List<java.lang.String> getGodPool() -
getState
-
SetGodPool
public void SetGodPool(Player player, java.util.List<java.lang.String> godPool) throws InvalidCommandExceptionHandle a set god-pool command- Parameters:
player
- the player performing this actiongodPool
- the chosen god-pool- Throws:
InvalidCommandException
- if it's not this player's turn, if the player is not the challenger, if the god-pool has not been chosen yet, if the god-pool contains unknown god names, if the game proceeded past the god selection phase,
-
SetGod
Handle a set god command- Parameters:
player
- the player performing this actiongod
- the chosen god- Throws:
InvalidCommandException
- if it's not this player's turn, if the player already chose a god, if the god name is unknown, if the game proceeded past the god selection phase
-
PlaceWorker
Handle a place worker command- Parameters:
player
- the player performing this actionx
- the x-axis coordinate on the board the worker will be placed aty
- the y-axis coordinate on the board the worker will be placed at- Throws:
InvalidCommandException
- if it's not this player's turn, if the player has already placed down all its workers (depends on game rules), if x or y are invalid, if the tile at (x, y) is already occupied, if the game hasn't started playing (StartPlaying())
-
Move
public void Move(Player player, int fromX, int fromY, int toX, int toY) throws InvalidCommandException, InvalidMoveActionExceptionHandle a move command- Parameters:
player
- the player that invokes this callfromX
- the starting X coordinate on the boardfromY
- the starting Y coordinate on the boardtoX
- the destination X coordinate on the boardtoY
- the destination Y coordinate on the board- Throws:
InvalidCommandException
- if it's not this player's turn, if the starting or destination positions are invalid, if the game hasn't entered the playing phase (StartPlaying())InvalidMoveActionException
- if the move is invalid based on the player's god modifiers
-
Build
public void Build(Player player, int fromX, int fromY, int toX, int toY, int lvl) throws InvalidCommandException, InvalidBuildActionExceptionHandle a build command- Parameters:
player
- the player that invokes this callfromX
- the starting X coordinate on the boardfromY
- the starting Y coordinate on the boardtoX
- the destination X coordinate on the boardtoY
- the destination Y coordinate on the boardlvl
- the block to build, usually should be either corresponding to the current height or a dome- Throws:
InvalidCommandException
- if it's not this player's turn, if the starting or destination positions are invalid, if the game hasn't entered the playing phase (StartPlaying())InvalidBuildActionException
- if the build is invalid based on the player's god modifiers
-
EndTurn
End the current turn- Parameters:
player
- the player that invokes this calllose
- if the player has lost and we're skipping to the next one- Returns:
- the next player to play
- Throws:
InvalidCommandException
- if it's not this player's turn, if the player must complete other actions before ending the turn
-
computeAvailableActions
public Pair<java.util.List<MoveCommandMessage>,java.util.List<BuildCommandMessage>> computeAvailableActions(Player p)- Parameters:
p
- the player- Returns:
- a pair containing two lists representing the available move actions and build actions for the player
-
getWorkersOf
- Parameters:
player
- the player- Returns:
- a list of the player's workers on the board
-
addPlayerTurnUpdateListener
- Specified by:
addPlayerTurnUpdateListener
in interfacePlayerTurnUpdateBroadcaster
-
removePlayerTurnUpdateListener
- Specified by:
removePlayerTurnUpdateListener
in interfacePlayerTurnUpdateBroadcaster
-
notifyPlayerTurnUpdate
- Specified by:
notifyPlayerTurnUpdate
in interfacePlayerTurnUpdateBroadcaster
-
onRegisterForPlayerTurnUpdate
- Specified by:
onRegisterForPlayerTurnUpdate
in interfacePlayerTurnUpdateBroadcaster
-
addPlayerLoseEventListener
- Specified by:
addPlayerLoseEventListener
in interfacePlayerLoseEventBroadcaster
-
removePlayerLoseEventListener
- Specified by:
removePlayerLoseEventListener
in interfacePlayerLoseEventBroadcaster
-
notifyPlayerLoseEvent
- Specified by:
notifyPlayerLoseEvent
in interfacePlayerLoseEventBroadcaster
-
addEndGameEventListener
- Specified by:
addEndGameEventListener
in interfaceEndGameEventBroadcaster
-
removeEndGameEventListener
- Specified by:
removeEndGameEventListener
in interfaceEndGameEventBroadcaster
-
notifyEndGameEvent
- Specified by:
notifyEndGameEvent
in interfaceEndGameEventBroadcaster
-
addPlayerChoseGodEventListener
- Specified by:
addPlayerChoseGodEventListener
in interfacePlayerChoseGodEventBroadcaster
-
removePlayerChoseGodEventListener
- Specified by:
removePlayerChoseGodEventListener
in interfacePlayerChoseGodEventBroadcaster
-
notifyPlayerChoseGodEvent
- Specified by:
notifyPlayerChoseGodEvent
in interfacePlayerChoseGodEventBroadcaster
-


Mt. Hood was buried in clouds this morning. Looked like a big pile of smooth clay lit gold by the sun.
2/13/2009, 8:50:38 AM
Favs: 0
Retweets: 0
link--- layout: tweet ---
Mt. Hood was buried in clouds this morning. Looked like a big pile of smooth clay lit gold by the sun.
2/13/2009, 8:50:38 AM
Favs: 0
Retweets: 0
link


Languages & Libraries
- Java
- HTML
- CSS
- SQL
- PostgreSQL
- Spring Boot
- JavaScript
- JUnit
- Thyleaf
- React
Practices
- Test Driven Developement
- Agile Developement
- Pair Programming
Engaged in a full-time, 5-star-rated coding boot camp, learning agile full-stack software development from expert instructors and intensive hands-on projects. Planned, designed, and developed professionally programmed applications in collaborative team-based and independent settings, demonstrating the proficiency to earn Software Development Certificate.
Review website of movies to show case the use of HTML, Spring, and Thymeleaf.
Fullstack review website for movies. Java back end Spring MVC and Thymeleaf is used to populate the page. HTML, Javascript, CSS used for styling. Using the side buttons, the layout can be rearranged alphabetically. Searching by tag or genre is also added.
Fullstack financial planner
Boot camp capstone project. This is a full stack, single-page financial planning application. Using this, the user can use a single savings account to plan and save for multiple goals such as a vacation, education, etc. Users assign tags as funds to an account, with this they can allocation savings into different funds. Users can deposit into a savings and choose how much of the deposit goes into each fund. They can also view the transaction history of each fund to stay on track on meeting their financial goals.
Virtual Pet Simulator
This application is a virtual pet simulation similar to that of a Tomagachi. Pets can be cats, dogs, robotic cats, or robotic dogs. Robotic versions of pets do not require to eat or drink, but do require maintenance.
Operations Manager & Logistics
Manager, Logistics, Bartender
Project Manager Assistant, Field Engineer
Kappa Pi Beta Fraternity Inc.
President, Educator, National Board Education Chair
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
University of Illinois at Chicago, Greek Pan Asian American Council
Founder, Greek Man of the Year
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.


Hi my name is Henrique and for 10 years I dedicated myself to learn and teach science and biology, one of my many passions. By doing so I was fortunate enough to work with amazing people in different universities and places.
As I have always been an technology enthusiast I started working with molecular and chemistry biology using data analysis and statistics as a tool, so I was already working with Information Technology (IT) without realising that.
In 2018, while facing big challenges, chasing new dreams and having some spare time, I finally decided to start my new career in IT. So to pursue that dream, in that same year, I started to take Systems Analysis and Development course in Fatec (a technology college in the state of São Paulo, Brazil) and in the beginning of 2019 I started working in IT.
As an IT intern I had a big opportunity to work with a great team and learn a lot about SQL Server, C#, ASP.NET Core MVC, JavaScript, Html, CSS and Azure Cloud services. As a result, today I work as a self-employed junior software developer, building web applications, improving and bug fixing implemented services for the company I first started as an intern (SG - Car Rental Services) and some other business.
Therefore, I also develop a few other projects in Python, NodeJs, React and React Native for personal use and tests. In short, I am still learning a lot from my work colleagues and small online courses and I am happy with this new career and looking for new challenges in this amazing area.


Last Week in ManageIQ: Hacktoberfest, Faster Trees, and Chargeback Reports!
Hello again! Tim here with a wrap-up of all the ManageIQ activity from last week.
Featured
Last week 116 PRs got merged into master, consisting of 336 commits.
If you’d like to see yourself on the
contributors board why not check out one of our
open issues? There are some t-shirts up for grabs if
you tackle some issues labeled hacktoberfest
during the month of
October. Head over to the official website for more
details! 🍻
Improved
Improve Retrieval of VMware Host Storage Devices
Host storage devices are retrieved one at a time to limit the chance of a timeout resulting from too much data going over the line. However, that is no longer a concern and requests can be packaged into one API call thanks to this PR.
Move most of TreeNodeBuilder#build to hash lookup
By moving to a constant time hash lookup for calls made to nodes in trees, Nick LaMuro was able to squeeze some extra performance out of some large trees. 🌲
Remove to_a at core of Automate
By removing the call of to_a
, these Active Record relations can
continue without loading every single row into memory until
needed. Especially handy if you were just going to throw most of them
away anyway!
Fixed
Show shared networks in the OpenStack provisioning dialog
Shared networks in the OpenStack provisioning dialog were lost during a prior refactoring. This PR ensures they are back in their rightful place. 🐛
New
Add chargeback report for Services
This PR adds a monthly chargeback report for Services. 📊
Add UI to create/update/delete OpenStack cloud tenants
As of this PR, a user is now able to do full CRUD on OpenStack cloud tenants. 🎉
Deleted
Some old comments get the heave-ho
Last week Joe Rafaniello found some truly vintage comments going back before 2011. They are gone now thanks to these PRs, but their intentions will always be around in our hearts (and in the commit history). 🔥
Remove unused toolbar buttons from toolbar builder
Apparently these toolbar buttons were no longer needed, meaning that 32 lines of code could be straight-up deleted! ✂
Remove leftover rubyrep password checking code
When rubyrep was removed back in #9696 this code was left behind, resulting in a bug in the UI. On the bright side, this PR lets us say goodbye to rubyrep one more time! 👋
Wrapping up
That’s about all we have time for! As always, there were too many great PRs to cover fully, but you can check them all out here. Until next week!


Main
About
Data
v1.10
Nearest marker
Status:
My latitude:
My longitude:
My position accuracy:
Distance to nearest mile mark:


{% extends 'layout.html' %} {% block pageTitle %} v2 - Stop users in a journey to tell them important information {% endblock %} {% block beforeContent %}
Prototype This is a prototype - your feedback will help us improve it. (Link opens in new tab)
This is where body copy can be placed.
Find out more link


open class OSGiFrameworkException : BundleException
Extends the BundleException class keeping a reference to the location of the bundle at the origin of the exception.
bundleException
- instance of the superclass.
bundle
- at the origin of the exception.
<init> |
Extends the BundleException class keeping a reference to the location of the bundle at the origin of the exception. OSGiFrameworkException(bundleException: BundleException, bundle: Bundle) |
bundleLocation |
Description of the location or jar name of the bundle origin of the exception: UNKNOWN_LOCATION if bundle location is val bundleLocation: String |
UNKNOWN_LOCATION |
const val UNKNOWN_LOCATION: String |


The Role
We are seeking machine learning developers with natural language processing experience.
In general, we are looking for people who are self-motivated and passionate about the field of machine learning and the vast applications of it. These folks will have the ability to work with / understand / and build on top of an existing code base using their deep knowledge of various machine learning algorithms (e.g. neural networks, bayesian methods, etc).
Key responsibilities include, but not limited to:
In Your Application Please Include
What Brightidea Offers
Background
Helping large companies innovate isn’t easy, but it is vital. Vital to creating new jobs, vital to igniting growth, vital to ensuring a safe, healthy and prosperous future for billions around the globe.
But, innovation at large companies is a mess. Employees often have lots of ideas to improve the business, but, with no formal process, their ideas go unheard, and they eventually give up trying to make a difference. Corporate innovation teams are expected to support a growing list of activities but have historically lacked strong tools designed for the job. Executives, despite having millions to invest, live in fear of disruption, and still have no idea where their “next big idea” will come from, or if it will come at all.
At Brightidea, we’ve built a software platform that’s solving these problems. We’ve been helping organizations be more efficient with the 1.5 trillion dollars invested in R&D annually.
Our Company & Culture
We are a tight-knit, entrepreneurial minded team of self-starters who show up every day with a singular mission: to create a world where the best ideas win. Our primary focus this year is to continue to add exceptionally talented and motivated individuals to the Brightidea team. We are ambitious, bold, highly-collaborative, focused, and we aim to win. We take a humble approach to changing the way corporate R&D teams run innovation challenges.
Anyone joining our company will have the opportunity to shape the culture and be an integral part of setting it up for long term success. If you identify with being humble, T-shaped, and relentlessly resourceful then this could be the perfect team for you to shine in.
Brightidea believes that everyone has the ability to make a difference and that a diverse team generates more innovation and bigger ideas. Just as our product invites organizations to crowd source innovation across their workforce, Brightidea is inclusive and does not discriminate. We accept everybody.


{% extends "base.html" %} {% block main %} Your corpus must be quite extensive... This may take some time. Explore your own text collection with a topic model – without prior knowledge. The text mining technique topic modeling has become a popular procedure for clustering documents into semantic groups. This application introduces a user-friendly workflow which leads from raw text data to an interactive visualization of the topic model. All you need is a text corpus and a little time. Topic modeling algorithms are statistical methods that analyze the words of the original texts to discover the themes that run through them, how those themes are connected to each other, and how they change over time. 1 Preprocessing The corpus is tokenized first. This splits a text into individual words, so-called tokens. Token frequencies are typical units of analysis when working with text corpora. It may come as a surprise that reducing a book to a list of token frequencies retains useful information, but practice has shown this to be the case. One assumption that topic models make is the bag of words assumption, that the order of the words in the document does not matter. You can select any plain text files – markup will be stripped. Check out TextGrid for an extensive collection of German texts. The frequency distribution of words in a text corpus follows Zipf’s law, which implies that few types occur very frequently, and many types occur very rarely. In topic modeling, we are only interested in words in the middle frequency range; the most common words are usually empty function words, and the rarest words so specific that they are of no use to the model. You can either set a threshold for the most common words to remove: or select an external list of words to be removed (which is recommended): 2 Modeling A parameter is any characteristic that can help in defining or classifying a particular system – the topic model. You will have to adjust two model parameters: the number of topics, i.e. how many semantic clusters should be formed, and the number of iterations, i.e. how long the model should learn from the data. Latent Dirichlet allocation, a generative probabilistic topic model, is a three-level hierarchical Bayesian model, in which each item of a collection is modeled as a finite mixture over an underlying set of topics. The ideal number of topics depends on what you are looking for in the model. The default value gives a broad overview of your text collection’s contents: The number of sampling iterations should be a trade-off between the time taken to complete sampling and the quality of the model: 3 Visualizing When using topic models to explore text collections, one is typically interested in examining texts in terms of their constituent topics – instead of pure word frequencies. Because the number of topics is so much smaller than the number of unique vocabulary elements (say, 10 versus 10,000), a range of data visualization methods become available. You will be able to navigate through topics and documents, get similar topics and documents displayed, read excerpts from the original texts, and inspect the document-topic distributions in a heatmap. Topic models are high-level statistical tools. A user must scrutinize numerical distributions to understand and explore their results; the raw output of the model is not enough to create an easily explored corpus. Train Topic Model {% endblock %}
This may take some time.
The text mining technique topic modeling has become a popular procedure for clustering documents into semantic groups. This application introduces a user-friendly workflow which leads from raw text data to an interactive visualization of the topic model. All you need is a text corpus and a little time.
Topic modeling algorithms are statistical methods that analyze the words of the original texts to discover the themes that run through them, how those themes are connected to each other, and how they change over time.
The corpus is tokenized first. This splits a text into individual words, so-called tokens. Token frequencies are typical units of analysis when working with text corpora. It may come as a surprise that reducing a book to a list of token frequencies retains useful information, but practice has shown this to be the case.
One assumption that topic models make is the bag of words assumption, that the order of the words in the document does not matter.
You can select any plain text files – markup will be stripped. Check out TextGrid for an extensive collection of German texts.
The frequency distribution of words in a text corpus follows Zipf’s law, which implies that few types occur very frequently, and many types occur very rarely. In topic modeling, we are only interested in words in the middle frequency range; the most common words are usually empty function words, and the rarest words so specific that they are of no use to the model.
You can either set a threshold for the most common words to remove:
or select an external list of words to be removed (which is recommended):
A parameter is any characteristic that can help in defining or classifying a particular system – the topic model. You will have to adjust two model parameters: the number of topics, i.e. how many semantic clusters should be formed, and the number of iterations, i.e. how long the model should learn from the data.
Latent Dirichlet allocation, a generative probabilistic topic model, is a three-level hierarchical Bayesian model, in which each item of a collection is modeled as a finite mixture over an underlying set of topics.
The ideal number of topics depends on what you are looking for in the model. The default value gives a broad overview of your text collection’s contents:
The number of sampling iterations should be a trade-off between the time taken to complete sampling and the quality of the model:
When using topic models to explore text collections, one is typically interested in examining texts in terms of their constituent topics – instead of pure word frequencies. Because the number of topics is so much smaller than the number of unique vocabulary elements (say, 10 versus 10,000), a range of data visualization methods become available.
You will be able to navigate through topics and documents, get similar topics and documents displayed, read excerpts from the original texts, and inspect the document-topic distributions in a heatmap.
Topic models are high-level statistical tools. A user must scrutinize numerical distributions to understand and explore their results; the raw output of the model is not enough to create an easily explored corpus.
Train Topic Model


Public Types | |
| enum | type { no_context, has_context } |
| no_context | manipulator has no context - that is, any two values of this type are considered equal (operator== will automatically return true) |
| has_context | manipulator has context - that is, you have to implement operator== in your manipulator class |


Full name
${fullName}
Email
${email}
Paper file number
${paperFileNumber}
Individuals to reschedule
${fullName}${familyOption}
Reason for rescheduling
${reason}
Explanation
${explanation}
Availability
${datesHtml}