my68mon.x68 Page 1 68000 Assembler - version 2.71.F3w (Jul 27, 2006) Copyright 1985 by Brian R. Anderson. AmigaDOS conversion copyright 1991 by Charlie Gibbs. 1 100000 2 ORG $100000 3 700000 4 astat equ $700000 700000 5 actrl equ $700000 700002 6 ainp equ $700002 700002 7 aout equ $700002 8 100000 000F0000 9 DC.L STACK ;RESET: initial SSP 100004 00100400 10 DC.L START ;RESET: initial PC 11 100008 001007BA 12 st_excp DC.L BUS_ERROR 10000C 001007C2 13 DC.L ADRS_ERROR 100010 001007CA 14 DC.L ILLEGAL_INST 100014 001007D2 15 DC.L DIV_ZERO 100018 00100400 16 DC.L START ;CHK not implemented 10001C 001007DA 17 DC.L TRAP_V 18 ; 10007C 19 ORG $10007C ;skip reserved vectors 10007C 001007E2 20 DC.L LEVEL_7 100080 001007EA 21 DC.L TO_CHAR_IN ;TRAP vector 0 100084 001007F0 22 DC.L TO_CHAR_OUT ;TRAP vector 1 100088 001007F6 23 DC.L TO_CRLF ;TRAP vector 2 10008C 001007FC 24 DC.L TO_PRINT_MSG ;TRAP vector 3 100090 00100802 25 DC.L TO_PRINT_BYTE ;TRAP vector 4 100094 00100808 26 DC.L TO_PRINT_WORD ;TRAP vector 5 100098 0010080E 27 DC.L TO_PRINT_LONG ;TRAP vector 6 10009C 00100814 28 DC.L TO_GET_BYTE ;TRAP vector 7 1000A0 0010081A 29 DC.L TO_GET_ADDR ;TRAP vector 8 1000A4 00100426 30 DC.L GETCMD ;TRAP vector 9 1000A8 31 nd_excp equ * 32 ; 100400 33 ORG $100400 ;start of monitor 34 0F0000 35 STACK EQU $0F0000 36 100400 227C 00100008 37 START MOVEA.L #st_excp,A1 ;start of copy 100406 247C 00000008 38 MOVEA.L #$8,A2 ;copy destination 10040C 267C 001000A8 39 MOVEA.L #nd_excp,A3 ;end of copy 100412 14D9 40 cplp MOVE.B (A1)+,(A2)+ ;do copy 100414 B7C9 41 CMP.L A1,A3 ;done? 100416 66FA 42 BNE cplp ;no 100418 2E7C 000F0000 43 MOVEA.L #STACK,A7 ;init stack 10041E 6100 0170 44 BSR INIT_ACIA ;init serial chip 100422 6100 01E2 45 BSR SIGN_ON ;greet user 100426 2E7C 000F0000 46 GETCMD MOVEA.L #STACK,A7 ;init stack 10042C 6100 01B2 47 BSR CRLF 100430 123C 002A 48 MOVE.B #'*',D1 ;output command prompt 100434 6100 0192 49 BSR CHAR_OUT 100438 4282 50 CLR.L D2 ;init command-text buffer 10043A 2C7C 00008F00 51 MOVEA.L #$8F00,A6 ;load buffer location 100440 6100 0304 52 BSR GETLINE ;fill buffer with text 100444 2C7C 00008F00 53 MOVEA.L #$8F00,A6 ;reset buffer pointer 10044A 6100 035E 54 BSR SKIP_BLK ;skip leading blanks 10044E 121E 55 INCOM MOVE.B (A6)+,D1 100450 6100 02E2 56 BSR UPPER_CASE 100454 0C01 000D 57 CMPI.B #$0D,D1 100458 670C 58 BEQ SEARCH 10045A 0C01 0020 59 CMPI.B #$20,D1 ;test for SP 10045E 6706 60 BEQ SEARCH 100460 E19A 61 ROL.L #8,D2 ;prepare D2 for new letter 100462 1401 62 MOVE.B D1,D2 ;insert it into D2 100464 60E8 63 BRA INCOM ;get next letter 100466 7A05 64 SEARCH MOVE.L #5,D5 ;number of commands to check 100468 247C 0010048E 65 MOVEA.L #COMMANDS,A2 ;init command text pointer 10046E 227C 001004B6 66 MOVEA.L #COM_ADRS,A1 ;init command address pointer 100474 B492 67 TEST_NEXT CMP.L (A2),D2 ;compare command text 100476 6712 68 BEQ DO_JUMP ;branch if match 100478 588A 69 ADDQ.L #4,A2 ;point to abbreviated command 10047A B492 70 CMP.L (A2),D2 ;test again 10047C 670C 71 BEQ DO_JUMP 10047E 588A 72 ADDQ.L #4,A2 ;point to next command 100480 5889 73 ADDQ.L #4,A1 ;point to next address 100482 5385 74 SUBQ.L #1,D5 ;all commands checked yet? 100484 66EE 75 BNE TEST_NEXT 100486 6000 01D6 76 BRA ERROR ;illegal command entered 10048A 2251 77 DO_JUMP MOVEA.L (A1),A1 ;get command address 10048C 4ED1 78 JMP (A1) ;and go execute command 10048E 44554D50 79 COMMANDS DC.B 'DUMP' ;full command name 100492 000000 80 DC.B 0,0,0 ;abbreviated name 100495 44 81 DC.B 'D' 100496 474F2020 82 DC.B 'GO ' 10049A 000000 83 DC.B 0,0,0 10049D 47 84 DC.B 'G' 10049E 45444954 85 DC.B 'EDIT' 1004A2 000000 86 DC.B 0,0,0 1004A5 45 87 DC.B 'E' 1004A6 4D4F5645 88 DC.B 'MOVE' 1004AA 000000 89 DC.B 0,0,0 1004AD 4D 90 DC.B 'M' 1004AE 48454C50 91 DC.B 'HELP' 1004B2 000000 92 DC.B 0,0,0 1004B5 48 93 DC.B 'H' 1004B6 001004CA 94 COM_ADRS DC.L DUMP ;DUMP execution address 1004BA 0010053A 95 DC.L GO 1004BE 00100564 96 DC.L EDIT 1004C2 00100542 97 DC.L MOOV 1004C6 00100820 98 DC.L HELP 99 ; 1004CA 6100 020C 100 DUMP BSR GET_ADDR ;get the starting address 1004CE 0202 00F0 101 ANDI.B #$F0,D2 ;make lower nibble zero 1004D2 2842 102 MOVEA.L D2,A4 ;A4 is memory read register 1004D4 6100 0202 103 BSR GET_ADDR ;get the ending address 1004D8 2A42 104 MOVEA.L D2,A5 1004DA 6100 0104 105 ADR_OUT BSR CRLF ;new line please 1004DE 240C 106 MOVE.L A4,D2 ;print address 1004E0 6100 0156 107 BSR PRINT_LONG 1004E4 6100 0108 108 BSR BLANK ;and some blanks 1004E8 6100 0104 109 BSR BLANK 1004EC 141C 110 BYTE_OUT MOVE.B (A4)+,D2 ;get a byte and increment A4 1004EE 6100 0120 111 BSR PRINT_BYTE ;print the byte 1004F2 6100 00FA 112 BSR BLANK 1004F6 220C 113 MOVE.L A4,D1 ;done 16 yet? 1004F8 0281 0000000F 114 ANDI.L #$0F,D1 1004FE 66EC 115 BNE BYTE_OUT 100500 99FC 00000010 116 SUBA.L #16,A4 ;back up 16 bytes 100506 6100 00E6 117 BSR BLANK 10050A 121C 118 ASCII_OUT MOVE.B (A4)+,D1 ;get a byte 10050C 0201 007F 119 ANDI.B #$7F,D1 100510 0C01 0020 120 CMPI.B #$20,D1 ;is it printable? 100514 6B06 121 BMI UN_PRINT 100516 0C01 007D 122 CMPI.B #$7D,D1 10051A 6B04 123 BMI SEND_IT 10051C 123C 002E 124 UN_PRINT MOVE.B #$2E,D1 ;use period for unprintables 100520 6100 00A6 125 SEND_IT BSR CHAR_OUT ;print the ASCII equivalent 100524 240C 126 MOVE.L A4,D2 ;done 16 yet? 100526 0282 0000000F 127 ANDI.L #$0F,D2 10052C 66DC 128 BNE ASCII_OUT 10052E 6100 01E8 129 BSR FREEZE ;hold display? 100532 BBCC 130 CMPA.L A4,A5 ;done with dump? 100534 6B00 FEF0 131 BMI GETCMD 100538 60A0 132 BRA ADR_OUT 133 ; 10053A 6100 019C 134 GO BSR GET_ADDR ;get execution address 10053E 2242 135 MOVEA.L D2,A1 100540 4ED1 136 JMP (A1) 137 ; 100542 6100 0194 138 MOOV BSR GET_ADDR ;get starting address 100546 2242 139 MOVEA.L D2,A1 100548 6100 018E 140 BSR GET_ADDR ;get ending address 10054C 2442 141 MOVEA.L D2,A2 10054E D5FC 00000001 142 ADDA.L #1,A2 ;include last location 100554 6100 0182 143 BSR GET_ADDR ;get destination address 100558 2642 144 MOVEA.L D2,A3 10055A 16D9 145 MOOVEM MOVE.B (A1)+,(A3)+ ;move and increment pointers 10055C B5C9 146 CMPA.L A1,A2 ;at ending address yet? 10055E 66FA 147 BNE MOOVEM 100560 6000 FEC4 148 BRA GETCMD 149 ; 100564 6100 0172 150 EDIT BSR GET_ADDR ;get starting address 100568 2442 151 MOVEA.L D2,A2 ;A2 is the memory pointer 10056A 6174 152 NEW_DATA BSR CRLF ;new line please 10056C 240A 153 MOVE.L A2,D2 ;print data address 10056E 6100 00C8 154 BSR PRINT_LONG 100572 617A 155 BSR BLANK 100574 1412 156 MOVE.B (A2),D2 ;get the data 100576 6100 0098 157 BSR PRINT_BYTE ;and show it 10057A 123C 003F 158 MOVE.B #'?',D1 ;output change prompt 10057E 6148 159 BSR CHAR_OUT 100580 6100 0102 160 BSR GET_BYTE_T ;get new data 100584 0C02 002A 161 CMPI.B #'*',D2 ;no change requested? 100588 6602 162 BNE ENTER_IT ;jump if new data entered 10058A 1212 163 MOVE.B (A2),D1 ;get old data back 10058C 14C1 164 ENTER_IT MOVE.B D1,(A2)+ ;save data and increment pointer 10058E 61DA 165 BSR NEW_DATA 166 ; 100590 207C 00700000 167 INIT_ACIA MOVEA.L #actrl,A0 ;point to ACIA Control reg. 100596 10BC 0003 168 MOVE.B #3,(A0) ;ACIA master reset 10059A 303C 0FFF 169 MOVE #$FFF,D0 10059E 5340 170 DLAY SUBQ #1,D0 1005A0 66FC 171 BNE DLAY 1005A2 10BC 0015 172 MOVE.B #$15,(A0) ;select options 1005A6 4E75 173 RTS 174 ; 1005A8 207C 00700000 175 INSTAT MOVEA.L #actrl,A0 ;point to ACIA Status reg. 1005AE 1010 176 MOVE.B (A0),D0 ;get ACIA status 1005B0 0200 0001 177 ANDI.B #1,D0 ;test RRDY bit 1005B4 4E75 178 RTS 179 ; 1005B6 61F0 180 CHAR_IN BSR INSTAT ;check receiver status 1005B8 67FC 181 BEQ CHAR_IN ;loop if no character waiting 1005BA 207C 00700002 182 MOVEA.L #ainp,A0 ;point to ACIA Data reg. 1005C0 1210 183 MOVE.B (A0),D1 ;get the ASCII character 1005C2 0201 007F 184 ANDI.B #$7F,D1 ;strip off MSB 1005C6 4E75 185 RTS 186 ; 1005C8 207C 00700000 187 CHAR_OUT MOVEA.L #actrl,A0 ;point to ACIA Status reg. 1005CE 1010 188 CHAR_OUT2 MOVE.B (A0),D0 ;read the ACIA status 1005D0 0200 0002 189 ANDI.B #2,D0 ;check the TRDY bit 1005D4 67F8 190 BEQ CHAR_OUT2 ;loop if not ready 1005D6 207C 00700002 191 MOVEA.L #aout,A0 ;point to ACIA Data reg. 1005DC 1081 192 MOVE.B D1,(A0) ;send the character 1005DE 4E75 193 RTS 194 ; 1005E0 123C 000D 195 CRLF MOVE.B #$0D,D1 ;send ASCII CR 1005E4 61E2 196 BSR CHAR_OUT 1005E6 123C 000A 197 MOVE.B #$0A,D1 ;send ASCII LF 1005EA 61DC 198 BSR CHAR_OUT 1005EC 4E75 199 RTS 200 ; 1005EE 123C 0020 201 BLANK MOVE.B #$20,D1 ;send ASCII SP 1005F2 61D4 202 BSR CHAR_OUT 1005F4 4E75 203 RTS 204 ; 1005F6 1213 205 PRINT_MSG MOVE.B (A3),D1 ;get a character 1005F8 0C01 0000 206 CMP.B #0,D1 ;end of message? 1005FC 6706 207 BEQ PRINT_MSG2 1005FE 61C8 208 BSR CHAR_OUT ;send character to display 100600 528B 209 ADDQ.L #1,A3 ;point to next character 100602 60F2 210 BRA PRINT_MSG 100604 4E75 211 PRINT_MSG2 RTS 212 ; 100606 267C 0010089E 213 SIGN_ON MOVEA.L #HELLO,A3 ;get starting message address 10060C 61E8 214 BSR PRINT_MSG ;send the message 10060E 4E75 215 RTS 216 ; 100610 2202 217 PRINT_BYTE MOVE.L D2,D1 ;init conversion register 100612 E919 218 ROL.B #4,D1 ;look at upper nibble first 100614 6102 219 BSR TO_ASCII ;print ASCII equivalent 100616 2202 220 MOVE.L D2,D1 ;repeat for lower nibble 100618 0201 000F 221 TO_ASCII ANDI.B #$0F,D1 ;strip off upper nibble 10061C 0601 0030 222 ADDI.B #$30,D1 ;add ASCII bias 100620 0C01 003A 223 CMPI.B #$3A,D1 ;test for alpha conversion 100624 6B04 224 BMI NO_ADD 100626 0601 0007 225 ADDI.B #7,D1 ;correct to 41H-47H (A-F) 10062A 619C 226 NO_ADD BSR CHAR_OUT ;send character 10062C 4E75 227 RTS 228 ; 10062E E15A 229 PRINT_WORD ROL.W #8,D2 ;get upper 8 bits 100630 61DE 230 BSR PRINT_BYTE ;output first two characters 100632 E15A 231 ROL.W #8,D2 ;now do the lower 8 bits 100634 61DA 232 BSR PRINT_BYTE 100636 4E75 233 RTS 234 ; 100638 4842 235 PRINT_LONG SWAP D2 ;get upper 16 bits 10063A 61F2 236 BSR PRINT_WORD ;do 4 character conversion 10063C 4842 237 SWAP D2 ;and repeat for lower word 10063E 61EE 238 BSR PRINT_WORD 100640 4E75 239 RTS 240 ; 100642 0C01 0047 241 VALDIG CMPI.B #'G',D1 ;greater than F? 100646 6A16 242 BPL ERROR 100648 0C01 0030 243 CMPI.B #'0',D1 ;less than 0? 10064C 6B10 244 BMI ERROR 10064E 0C01 003A 245 CMPI.B #'9'+1,D1 ;is it now A-F? 100652 6A02 246 BPL NEXT_TST 100654 4E75 247 RTS ;range is 0-9 100656 0C01 0041 248 NEXT_TST CMPI.B #'A',D1 ;less than A? 10065A 6B02 249 BMI ERROR 10065C 4E75 250 RTS ;range is A-F 251 ; 10065E 267C 0010066A 252 ERROR MOVEA.L #WHAT,A3 ;get message pointer 100664 6190 253 BSR PRINT_MSG 100666 6000 FDBE 254 BRA GETCMD ;restart monitor program 10066A 0D0A 255 WHAT DC.B $0D,$0A ;newline 10066C 576861743F 256 DC.B 'What?' 100671 0D0A00 257 DC.B $0D,$0A,0 ;newline and end characters 258 ; 100674 0401 0030 259 TO_HEX SUBI.B #$30,D1 ;remove ASCII bias 100678 0C01 000A 260 CMPI.B #$0A,D1 ;0-9? 10067C 6B04 261 BMI FIN_CONV 10067E 0401 0007 262 SUBI.B #7,D1 ;remove alpha bias 100682 4E75 263 FIN_CONV RTS 264 ; 100684 2C7C 00008F00 265 GET_BYTE_T MOVEA.L #$8F00,A6 ;TRAP entry point 10068A 6100 00BA 266 BSR GETLINE 10068E 2C7C 00008F00 267 MOVEA.L #$8F00,A6 100694 6100 0114 268 GET_BYTE BSR SKIP_BLK ;MON entry point 100698 121E 269 MOVE.B (A6)+,D1 ;get first digit 10069A 6100 0098 270 BSR UPPER_CASE 10069E 0C01 000D 271 CMPI.B #$0D,D1 ;test for CR 1006A2 6720 272 BEQ NO_CHAN 1006A4 0C01 0020 273 CMPI.B #$20,D1 ;test for SP 1006A8 671A 274 BEQ NO_CHAN 1006AA 6196 275 BSR VALDIG ;check for valid digit 1006AC 61C6 276 BSR TO_HEX ;convert into hex 1006AE E919 277 ROL.B #4,D1 ;move first digit 1006B0 1401 278 MOVE.B D1,D2 ;save first digit 1006B2 121E 279 MOVE.B (A6)+,D1 ;get second digit 1006B4 6100 007E 280 BSR UPPER_CASE 1006B8 6188 281 BSR VALDIG ;check for valid digit 1006BA 61B8 282 BSR TO_HEX ;convert into hex 1006BC D202 283 ADD.B D2,D1 ;form final result 1006BE 143C 0030 284 MOVE.B #'0',D2 ;change entered 1006C2 4E75 285 RTS 1006C4 143C 002A 286 NO_CHAN MOVE.B #'*',D2 ;no change character 1006C8 4E75 287 RTS 288 ; 1006CA 2C7C 00008F00 289 GET_ADDR_T MOVEA.L #$8F00,A6 1006D0 6174 290 BSR GETLINE 1006D2 2C7C 00008F00 291 MOVEA.L #$8F00,A6 1006D8 6100 00D0 292 GET_ADDR BSR SKIP_BLK 1006DC 4281 293 CLR.L D1 ;init temp register 1006DE 4282 294 CLR.L D2 ;init result register 1006E0 121E 295 NEXT_CHAR MOVE.B (A6)+,D1 ;get a character 1006E2 6150 296 BSR UPPER_CASE 1006E4 0C01 000D 297 CMPI.B #$0D,D1 ;exit if CR 1006E8 6718 298 BEQ EXIT_ADR 1006EA 0C01 0020 299 CMPI.B #$20,D1 ;exit if SP 1006EE 6712 300 BEQ EXIT_ADR 1006F0 6100 FF50 301 BSR VALDIG ;test for valid digit 1006F4 6100 FF7E 302 BSR TO_HEX ;convert digit into hex 1006F8 E99A 303 ROL.L #4,D2 ;prepare D2 for new digit 1006FA 0202 00F0 304 ANDI.B #$F0,D2 1006FE D401 305 ADD.B D1,D2 ;insert new digit 100700 60DE 306 BRA NEXT_CHAR ;and continue 100702 4E75 307 EXIT_ADR RTS 308 ; 100704 6100 FEA2 309 PANIC BSR INSTAT ;check for key 100708 670C 310 BEQ EXIT_BRK ;return if none hit 10070A 6100 FEAA 311 TEST_KEY BSR CHAR_IN ;get key 10070E 0C01 0003 312 TEST_KEY2 CMPI.B #3,D1 ;Control-C? 100712 6700 FD12 313 BEQ GETCMD ;if yes, restart monitor 100716 4E75 314 EXIT_BRK RTS 315 ; 100718 6100 FE8E 316 FREEZE BSR INSTAT ;check for key 10071C 670C 317 BEQ EXIT_FREZ ;return if none hit 10071E 6100 FE96 318 BSR CHAR_IN ;get key 100722 0C01 0013 319 CMPI.B #$13,D1 ;Control-S? 100726 6704 320 BEQ HOLD_IT 100728 60E4 321 BRA TEST_KEY2 ;Control-C? 10072A 4E75 322 EXIT_FREZ RTS 10072C 6100 FE7A 323 HOLD_IT BSR INSTAT ;wait for another key 100730 67FA 324 BEQ HOLD_IT 100732 60D6 325 BRA TEST_KEY ;let PANIC check for Control-C 326 ; 100734 0C01 0061 327 UPPER_CASE CMPI.B #'a',D1 ;check for lower case 100738 6B0A 328 BMI NO_CHG 10073A 0C01 007B 329 CMPI.B #'z'+1,D1 ;first code after 'z' 10073E 6A04 330 BPL NO_CHG 100740 0201 00DF 331 ANDI.B #$DF,D1 ;switch to upper case 100744 4E75 332 NO_CHG RTS 333 ; 100746 2A4E 334 GETLINE MOVEA.L A6,A5 ;copy pointer 100748 2C4D 335 GETLINE2 MOVEA.L A5,A6 ;reset pointer and 10074A 4206 336 CLR.B D6 ;counter for scraped lines 10074C 6100 FE68 337 GET_CHARS BSR CHAR_IN ;get character 100750 0C01 000D 338 CMPI.B #$0D,D1 ;CR ends get line 100754 671C 339 BEQ EXIT 100756 0C01 0008 340 CMPI.B #$08,D1 ;back space key and the 10075A 6726 341 BEQ BKSPS ;delete key are 10075C 0C01 007F 342 CHECK_DELETE CMPI.B #$7F,D1 ;back space keys 100760 6720 343 BEQ BKSPS 100762 0C01 0015 344 CMPI.B #$15,D1 ;check for ^U and scrap the 100766 6714 345 BEQ LINE_REDO ;line if encountered 100768 1CC1 346 MOVE.B D1,(A6)+ ;otherwise place character 10076A 5206 347 ADDQ.B #1,D6 ;in buffer, update counter and 10076C 6100 FE5A 348 BSR CHAR_OUT ;echo it to the screen 100770 60DA 349 BRA GET_CHARS ;get another character 100772 1C81 350 EXIT MOVE.B D1,(A6) ;on exit place $0D in buffer and 100774 5206 351 ADDQ.B #1,D6 ;count it 100776 6100 FE68 352 BSR CRLF 10077A 4E75 353 RTS 10077C 6100 FE62 354 LINE_REDO BSR CRLF ;clean up the screen 100780 60C6 355 BRA GETLINE2 ;start over 100782 0C06 0000 356 BKSPS CMPI.B #0,D6 100786 67C4 357 BEQ GET_CHARS 100788 5306 358 SUBQ.B #1,D6 10078A 9DFC 00000001 359 SUBA.L #1,A6 100790 123C 0008 360 MOVE.B #8,D1 100794 6100 FE32 361 BSR CHAR_OUT 100798 123C 0020 362 MOVE.B #' ',D1 10079C 6100 FE2A 363 BSR CHAR_OUT 1007A0 123C 0008 364 MOVE.B #8,D1 1007A4 6100 FE22 365 BSR CHAR_OUT 1007A8 60A2 366 BRA GET_CHARS 367 ; 1007AA 0C16 0020 368 SKIP_BLK CMPI.B #' ',(A6) 1007AE 6608 369 BNE EXIT_SKIP 1007B0 DDFC 00000001 370 ADDA.L #1,A6 1007B6 60F2 371 BRA SKIP_BLK 1007B8 4E75 372 EXIT_SKIP RTS 373 ; 1007BA 267C 00100836 374 BUS_ERROR MOVEA.L #MSG_1,A3 1007C0 6064 375 BRA REPORT 1007C2 267C 00100840 376 ADRS_ERROR MOVEA.L #MSG_2,A3 1007C8 605C 377 BRA REPORT 1007CA 267C 0010084E 378 ILLEGAL_INST MOVEA.L #MSG_3,A3 1007D0 6054 379 BRA REPORT 1007D2 267C 00100868 380 DIV_ZERO MOVEA.L #MSG_4,A3 1007D8 604C 381 BRA REPORT 1007DA 267C 0010087D 382 TRAP_V MOVEA.L #MSG_5,A3 1007E0 6044 383 BRA REPORT 1007E2 267C 0010088C 384 LEVEL_7 MOVEA.L #MSG_6,A3 1007E8 603C 385 BRA REPORT 1007EA 6100 FDCA 386 TO_CHAR_IN BSR CHAR_IN 1007EE 4E73 387 RTE 1007F0 6100 FDD6 388 TO_CHAR_OUT BSR CHAR_OUT 1007F4 4E73 389 RTE 1007F6 6100 FDE8 390 TO_CRLF BSR CRLF 1007FA 4E73 391 RTE 1007FC 6100 FDF8 392 TO_PRINT_MSG BSR PRINT_MSG 100800 4E73 393 RTE 100802 6100 FE0C 394 TO_PRINT_BYTE BSR PRINT_BYTE 100806 4E73 395 RTE 100808 6100 FE24 396 TO_PRINT_WORD BSR PRINT_WORD 10080C 4E73 397 RTE 10080E 6100 FE28 398 TO_PRINT_LONG BSR PRINT_LONG 100812 4E73 399 RTE 100814 6100 FE6E 400 TO_GET_BYTE BSR GET_BYTE_T 100818 4E73 401 RTE 10081A 6100 FEAE 402 TO_GET_ADDR BSR GET_ADDR_T 10081E 4E73 403 RTE 100820 267C 001008CA 404 HELP MOVEA.L #H_MSG1,A3 100826 6100 FDB8 405 REPORT BSR CRLF ;new line thank you 10082A 6100 FDCA 406 BSR PRINT_MSG ;print message pointed to by A3 10082E 6100 FDB0 407 BSR CRLF 100832 6000 FBF2 408 BRA GETCMD 409 100836 427573204572726F7200 410 MSG_1 DC.B 'Bus Error',0 100840 41646472657373204572726F 411 MSG_2 DC.B 'Address Error',0 10084E 496C6C6567616C20496E7374 412 MSG_3 DC.B 'Illegal Instruction Error',0 100868 446976696465206279205A65 413 MSG_4 DC.B 'Divide by Zero Error',0 10087D 5452415056204F766572666C 414 MSG_5 DC.B 'TRAPV Overflow',0 10088C 4C6576656C2D3720496E7465 415 MSG_6 DC.B 'Level-7 Interrupt',0 416 10089E 0D0A 417 HELLO DC.B $0D,$0A ;newline 1008A0 3638303030204D6F6E69746F 418 DC.B '68000 Monitor, Version 7.5, C1995 JLACD' 1008C7 0D0A00 419 DC.B $0D,$0A,0 ;newline and end characters 420 1008CA 0D0A0D0A 421 H_MSG1 DC.B $0D,$0A,$0D,$0A 1008CE 2A2A2A203638303030204370 422 DC.B '*** 68000 Cpu-based Single Board Computer ***' 1008FB 0D0A 423 DC.B $0D,$0A 1008FD 436F6D6D616E642053796E74 424 DC.B 'Command Syntax Action' 10091A 0D0A0D0A 425 DC.B $0D,$0A,$0D,$0A 10091E 44554D502034303020343446 426 DC.B 'DUMP 400 44F Display memory contents' 10094C 0D0A 427 DC.B $0D,$0A 10094E 202020202020202020202020 428 DC.B ' Ctrl-S freezes display' 10097B 0D0A 429 DC.B $0D,$0A 10097D 202020202020202020202020 430 DC.B ' Any key restarts display' 1009AC 0D0A 431 DC.B $0D,$0A 1009AE 202020202020202020202020 432 DC.B ' Ctrl-C cancels dump' 1009D8 0D0A0D0A 433 DC.B $0D,$0A,$0D,$0A 1009DC 454449542038303030202020 434 DC.B 'EDIT 8000 Load RAM starting at 8000' 100A0C 0D0A 435 DC.B $0D,$0A 100A0E 202020202020202020202020 436 DC.B ' Use CR or blank to keep data' 100A41 0D0A 437 DC.B $0D,$0A 100A43 202020202020202020202020 438 DC.B ' Ctrl-C cancels patching' 100A71 0D0A0D0A 439 DC.B $0D,$0A,$0D,$0A 100A75 474F20383030302020202020 440 DC.B 'GO 8000 Execute program at 8000' 100AA3 0D0A0D0A 441 DC.B $0D,$0A,$0D,$0A 100AA7 4D4F56452038303030203830 442 DC.B 'MOVE 8000 80FF 8100 Move memory contents' 100AD2 0D0A0D0A 443 DC.B $0D,$0A,$0D,$0A 100AD6 416C6C20636F6D6D616E6473 444 DC.B 'All commands may be shortened to single letters.' 100B06 0D0A 445 DC.B $0D,$0A 100B08 55736520442C20452C20472C 446 DC.B 'Use D, E, G, M, or H. Lower case characters' 100B33 0D0A 447 DC.B $0D,$0A 100B35 61732077656C6C2E 448 DC.B 'as well.' 100B3D 0D0A0D0A 449 DC.B $0D,$0A,$0D,$0A 100B41 546869732036383030302073 450 DC.B 'This 68000 system was designed and programmed by' 100B71 0D0A 451 DC.B $0D,$0A 100B73 4A616D657320416E746F6E61 452 DC.B 'James Antonakos, Alan Dixon and Donovan McCarty.' 100BA3 0D0A00 453 DC.B $0D,$0A,0 100BA6 454 END START End of assembly - no errors were found. Heap usage: -w4095,92 Total hunk sizes: 100ba8 code, 0 data, 0 BSS