Mikro-Assembler-FOR-VIC-20 & Built-in Machine Language Monitor --------------------------------------------------------------------------------------------------- You need to have both files loaded and I was struggling a bit here. I almost gave up, damn it! Because we are occupying two Memory BANKs {Blocks 3 & 5}, my VIC 20 {Emulator} has all RAM BANKs occupied to make sure RAM won't be a problem here! --------------------------------------------------------------------------------------------------- Here is how i managed to make it work! 1st: load"mikro-asm-a000",8,1 and then type SYS 40960 {for the $A000 version} 2nd: load"mikro-asm-6000",8,1 3rd: RESET the computer now [DO NOT USE POWER CYCLE THE MACHINE form the reset menu in VICE} 4th: Type SYS 40960 to start the assembly adventures! --------------------------------------------------------------------------------------------------- Now, after this is running, let's go back to business! --------------------------------------------------------------------------------------------------- ** mikro assembler ** (c) a.j.trott 24575 bytes free ready. list 100 *=$0340 110 lda #$6a 120 sta $900f 130 lda #$03 140 sta $0286 150 rts ready. assemble * assembly complete * start address=0340 end address=0346 print out (y/n)? {this here didn't work! I get "OFF LINE" message} --------------------------------------------------------------------------------------------------- I will make just a quick commands listing, because there is more existing. Wardog1UK has a GitHub site for Mikro-Assembler {Commodore C64} and all the details you might wanna know additionally to my short command listings! Check his sites here: https://github.com/wardog1uk/mikro/tree/main PLEASE NOTE: Not all that Mikro-Assembler-C64 is offering, is supported by VIC-20 version of the Assembler! --------------------------------------------------------------------------------------------------- My part, the basic's, to get you started {I will probably extend this sooner or later with some additional code} ASSEMBLER: --------------------------------------------------------------------------------------------------- ASSEMBLE - assemble the source code {ASSEMBLE} will compile the source code AUTO - automatically provide line numbers {AUTO 160,10} will start from 160,170 etc.. DELETE - remove specified lines {DELETE 10-100, DELETE -100, DELETE 500-} {Not really VIC-20 friendly!} {can be executed, but nothing is deleted} FIND - display lines containing some text {FIND $ab, FIND jmp}, search & find FORMAT - display the formatted source code {FORMAT} listing with highlighted labels NUMBER - display a number in different formats {NUMBER $@%} $0340, @116, %00111100, 256, label number $100 result: hex=$0100 dec= 256 oct=@000400 bin=%0000000100000000 TIM - start the machine code monitor {Machine Language Monitor} tim result: call @ a35b irq sr ac xr yr sp .;eabf 4d 00 4d 42 fb .? --------------------------------------------------------------------------------------------------- MACHINE CODE MONITOR: {Type TIM to start it} {These are practically standard ML-Monitor commands} {I have mentioned the usage related to other ML-Monitor already several times} {just notice how the command syntax isn't always the same} --------------------------------------------------------------------------------------------------- D 0340 0350 {show listing of the assembly code in this range} G 0340 {execute the code} H 0340 0400 ab 1d {hunt for the bytes} L load"bronco",08 {will load "bronco"},{don't load BASIC programs with this!} M 0340 0350 {will list 16 bytes of memory locations} R R {let me see the register status} S S "0:game",08,0801,0900 {save the area under the name "game". end address should usually be +1} T T 1000 1200 1201 {transfer the content between A and B to C{start address}} X --------------------------------------------------------------------------------------------------- 26.05.2026 --------------------------------------------------------------------------------------------------- INTERESTING IS: When all RAM BANKS are occupied, the SCREEN ADDRESS is usually relocated to $1000, dec 4096 HOWEVER, Mikro Assembler sets this obviously back to $1e00, dec 7680 Can be seen here: @012345678 m 1e00 1e08 .: 1e00 00 30 31 32 .: 1e04 33 34 35 36 .: 1e08 37 38 20 20 x ready. list 100 *=$0340 110 lda #$6a 120 sta $900f 130 lda #$03 140 sta $0286 150 ldx #$00 160 hop lda #$05 170 sta $1e00,x 180 inx 190 cpx #$16 200 bne hop 210 rts ready.