PLUS4-MACHINE-LANGUAGE-MONITOR-{Hypra-Monitor+4} -------------------------------------------------------------------------------------------------- TOOL: Hypra-Monitor+4 EXPLORING-ADVENTURE {Commodore PLUS4} Language: Machine Language {assembler editor, viewer} Extra: none Author: Misel Zivanovic Note: (C) 13th of OCTOBER 2026 - www.lived.ch, mzretro.ch Doc Revision: 1.0 Last update: 15:30 13.10.2026 Remark: After including D-MON and StarMon+4 in the download section there still is one ML-Monitor left to give it a chance. Unfortunately, all other ML-Monitor failed due to different reasons! Let's hope Hypra-Monitor+4 will not join them! It has a short guide in form of a small BASIC program, in Hungarian language. So let's start from there... --------------------------------------------------------------------------------------------------- Floppy Disk Content: 0 "commodore plus4 " 2a 17 "hypraDmonitor" prg 0 "basic = sys28672" seq 0 "ml-mon= g7000" prg 0 "----------------" prg 0 "by callisto 1989" prg 647 blocks free. --------------------------------------------------------------------------------------------------- BASIC and Hypra-Monitor+4 Yes, this will work! From the default address $1000 and also from $4000 {until $7000} in case you need the access to hires graphics. --------------------------------------------------------------------------------------------------- HYPRA-MONITOR+4 COMMANDS: {Program itself is located between $7000 and $8000} NOTE: When using D, M, N etc. commands {where you can continue listing with SPACE}, you can use numbers 1-9 to set the scroll speed {1 = fast 9 = slow} --------------------------------------------------------------------------------------------------- COMMAND EXAMPLE LINE INFORMATION A or . A 2000 lda $3000 A {or .} is used to start assembly programing Nice! It is showing the addresses, tokens and values... a 2000 a9 00 lda #$00 a 2002 8d 15 ff sta $ff15 a 2005 18 clc a 2006 69 10 adc #$10 a 2008 8d 19 ff sta $ff19 a 200b ee 01 20 inc $2001 a 200e a9 00 lda #$00 a 2010 8d 00 0c sta $0c00 a 2013 ee 0f 20 inc $200f a 2016 60 rts a 2017 B B 2000 2100 100 5 0 This will list 100 DATA lines starting line is 100 then the next 105, 110, 115 etc. I tried this one many possible ways and it never wrote anything into BASIC memory. Meaning you cannot list and save it. My workaround was to list just 20 lines and then press ENTER each line to PUT it into the BASIC memory C C 2000 2020 3000 3020 This will list the differences in this area. E.g. 2007, 201a is different than compared to 3007 and 3001a. All other mem locations are the same {bytes} D D 2000 This will show the mem cell 2000 and then wait on you to press SPACE to show the next mem location. Can be stopped with STOP {ESC} key. D D 2000 2100 This will also show the memory location 2000 and again, wait on you to press SPACE. Difference to previous one is that you do not need to press STOP {ESC}, it will stop when 2100 is reached! E E 2000 2500 Looks to me like a private version of the fill command to save some bytes. It is actually a fill command with the difference that you can save a byte. Meaning the fill-in byte is automatically a ZERO {0} F F 0c00 0c58 01 02 03 04 05 The REAL Fill-in command where you can define your own fill-in byte! Not only one, but many! How many? Well, no information is given! G G 2000 This will execute any assembly code located at $2000 Last command should be BRK {unless you want to go to BASIC!} H H 2000 2100 b5 This will search for all locations containing "b5" It cannot be searched for strings. I tried! I I {address} Assign new IRQ address! Can't find any reason why would I wanna do this here? But there are better ways to do this anyway! Use with precaution and take care not to crash your PC! K K "Listen to cassette" - Original function description! I have no Datasette. Can't tell if this will do or not! M M 2000 Same as D command {with 8 bytes line / characters} M M 2000 2100 Same as D command {with 8 bytes line / characters} N N 2000 Same as D and M {with 32 characters only listing} N N 2000 2100 Same as D and M {with 32 characters only listing} R R Lists REGISTERS, FLAGS and IRQ address T T 0c00 0c28 0d00 Copy a memory block (from $0c00 to $0c28) to $0d00 and up the start address of the new location can be higher than the original, or lower than the end address! U U 2000 Starting from $2000, the next following $400 bytes {1024} will be copied to the screen address area {$0c00} V V 2000 2000 (X char addr.) This is list a character at the location $2000 as an 8 byte block {code base} Note: If X character address is not included, default set is used! V V 2000 2010 (X char addr.) This will list the next 16 characters as an 8 byte block for each memory location {code based} One full screen is listed and you need to hit SPACE to continue or STOP {ESC} to stop. Note: If X character address is not included, default set is used! V V '0' (X char addr.) This will list zero as an 8 byte block! {String based} Note: If X character address is not included, default set is used! V '0' Example: v '0' >025d 30 'd180 00111100 : $3c #60 'd181 01100110 : $66 #102 'd182 01101110 : $6e #110 'd183 01110110 : $76 #118 'd184 01100110 : $66 #102 'd185 01100110 : $66 #102 'd186 00111100 : $3c #60 'd187 00000000 : $00 #0 X X I guess you know this one! RELOCATOR --------------------------------------------------------------------------------------------------- This is a heavy one. I'll give him more room! Y ADDR1 ADDR2 ADDR3 ADDR4 ADDR5 ADDR1 - Program start address ADDR2 - Program end address ADDR3 - Program new start address ADDR4 - Start address of range to relocate ADDR5 - End address of range to relocate --------------------------------------------------------------------------------------------------- Y Y 2000 2500 3000 1000 df00 I guess this should work if JMP/JSR isn't going lower than $1000 or higher than $df00. Basically, i didn't tried this in real life scenario I will add results as soon as i do! {18:40 13.10.2026} --------------------------------------------------------------------------------------------------- The original warning message: 560 print"qVigyazat! A program az adatokat nem" 570 print"tudja megkulonboztetni a program-tol!":gosub830 580 print"“_-Az utolso parancs kiirasa.":gosub830 I bet you are looking now for this below, haha... 560 print"qWarning! The program cannot" 570 print"distinguish data from the program itself!":gosub830 580 print"“_-Output the last command.":gosub830 --------------------------------------------------------------------------------------------------- DIFFERENT NUMBERS SYSTEM What a surprise. The Hypra Monitor+4 is actually supporting this! Wonderful! # #100 Will convert decimal to hexadecimal and binary $ $100 Will convert hexadecimal to decimal and binary % %001 Will convert binary to decimal and hexadecimal % %10000001 Will also convert binary to decimal and hexadecimal Unfortunately, this nice commands cannot be used in assembly {A or .} mode. Meaning: A 2000 lda #100 will not work MYSTERIOUS ONE! --------------------------------------------------------------------------------------------------- < <2000 11110000 I DOUBT THAT THIS IS WORKING LIKE ORIGINAL DOC IS SAYING: "660 print"“<-Enter binary data into memory.":gosub830" This will add 4x 1111 and 4x 0000 in cells between 2000 and 2007. So it is actually not doing what i was expecting If you write it like this: <2000 1111 It will add 4x 1111 and delete the remain bits {bytes} Actually it will fill the cells in with a space {$20} m 2000 2000 >2000 31 31 31 31 20 20 20 20 :1111 ' ' THIS ONE IS ALSO NOT WORKING HOWEVER, ENTERING A TEXT CAN BE DONE WITH < command above < <2000 hello all commodore guys This will be written to the memory from $2000 RESULT: n 2000 2020 <2000 hello all commodore guys <2020 @@????@@@@????@@@@????@@@@????@@ --------------------------------------------------------------------------------------------------- NOT IT ALL LOOKED SO COOL AND GREAT..... And then you start to read this: LOAD | SAVING |---- ALL NOT AVAILABLE VERIFY | OKAY, IT IS NOT A BIG TRAGEDY OR NOT A TRAGEDY AT ALL! You just need to switch to TEDMON to load/save your work and all is good again. ---------------------------------------------------------------------------------------------------