** CBG PU17a assembler job t.s 1 2 3 4 ; /* pu17hdr.s - reset entry point to monitor rom 5 ; * 6 ; * 7 ; * Software Excellence from Tenison Technology. 8 ; * 9 ; * 10 ; * (C) 1995 Tenison Technology. 11 ; * (C) 1992 DJ Greaves. 12 ; * 13 ; */ 14 15 16 ; /* some of these values also in mymachdep.h */ 17 StackTop equ 0xF7FE 18 BSS_ORG equ 0xDF00 19 IOBASE equ 0xF800 20 21 uart_data .equ IOBASE+0x82 // Low byte at not at plus one - little end now. 22 uart_status .equ IOBASE+0x80 23 24 uart_status_txidle .equ 1 // bit 0 25 uart_status_rxav .equ 2 // bit 1 26 27 .text 28 29 .org 0 30 coldreset 31 32 0000 80F7FEF7 lod r7,#StackTop 33 0004 67D1 mov r2,r7 34 0006 28D8BA2D jmp __crt0 35 36 37 _open 38 000A 00F3 ret 39 40 ;; Polled I/O to onboard UART. 41 42 __sa_wrch 43 000C 80D480F8 ps0 lod r1,uart_status 44 0010 B900 and r1,#uart_status_txidle 45 0012 FDC0 beq ps0 ; Wait for last char to leave 46 0014 60D482F8 strb r0,uart_data 47 0018 00F3 ret 48 49 50 __sa_rdch 51 001A 00D480F8 ps1 lod r0,uart_status 52 001E 3A00 and r0,#uart_status_rxav 53 0020 FDC0 beq ps1 ; Wait for char to arrive 54 0022 40D482F8 lodb r0,uart_data 55 0026 00F3 ret 56 57 58 ;; Return non-zero if user attention (e.g. control C) 59 _checkend 60 0028 00D480F8 lod r0,uart_status 61 002C 3A00 and r0,#uart_status_rxav ; here, check any char 62 002E 00F3 ret 63 64 65 ;; Just give the sp for now 66 _read_cpu_control_reg 67 0030 67D0 mov r0,r7 68 0032 00F3 ret 69 70 ;; 71 _clear_breakpoint 72 73 ;; 74 _install_breakpoint 75 0034 00F3 ret 76 77 78 .bss 79 .org BSS_ORG 80 81 ;; Console flags should be set from the uart rx interrupt routine 82 ;; for a control C or so on. Not implemented. 83 _console_flags 84 DF00 0000 .defw 0 87 88 _bptaddr 89 DF02 0000 .defw 0 92 93 .text 94 ;; EOF 95 96 ; _open .extern 97 ; _close .extern 98 ; _main .extern 99 ; __sa_wrch .extern 100 ; __sa_rdch .extern 101 ; _getchar .extern 102 ; _putchar .extern 103 ; _toupper .extern 104 ; _tolower .extern 105 ; _strlen .extern 106 ; _strcmp .extern 107 ; _strncmp .extern 108 .bss 109 ;_console_flags .extern 110 ; _exit .extern 111 ; _malloc .extern 112 ; __exit .extern 113 ; _strlen .extern 114 ; _isdigit .extern 115 ; _atoi .extern 116 ; _checkend .extern 117 ; _strncpy .extern 118 ; _flush_dtoi .extern 119 ; _printf .extern 120 ; _mymon_main .extern 121 .text 122 123 124 ; Routine main 125 .align 2 126 _main .global 127 0036 809B str r7,[r2] 128 0038 E2D3 mov r7,r2 129 003A 7F9F str R6,[R7,#-2] 130 ; ------------------------------------------------- 131 ; 132 ; 133 ; 134 ; 135 ; 136 ; 137 ; 138 ; 139 ; 140 ; 141 ; 142 ; 143 ; 144 ; 145 ; 146 ; 147 ; 148 ; 149 ; 150 ; 151 ; 152 ; 153 ; 154 ; 155 ; 156 ; 157 ; 158 ; 159 ; 160 ; 161 ; typedef unsigned char uchar; 162 ; 163 ; 164 ; 165 ; 166 ; 167 ; 168 ; 169 ; 170 ; 171 ; 172 ; 173 ; typedef struct stdio 174 ; 175 ; { 176 ; 177 ; int flags; 178 ; 179 ; int sysfd; 180 ; 181 ; int mode; 182 ; 183 ; int bytes; 184 ; 185 ; char *poi; 186 ; 187 ; int error; 188 ; 189 ; int index; 190 ; 191 ; char data[32 ]; 192 ; 193 ; } STDIO; 194 ; 195 ; 196 ; 197 ; 198 ; 199 ; extern int open(char *, int); 200 ; 201 ; extern int close(char *, int); 202 ; 203 ; extern int main(int, char **); 204 ; 205 ; extern void _sa_wrch(char); 206 ; 207 ; extern char _sa_rdch(); 208 ; 209 ; 210 ; 211 ; extern char getchar(); 212 ; 213 ; extern void putchar(char); 214 ; 215 ; extern char toupper(char); 216 ; 217 ; extern char tolower(char); 218 ; 219 ; extern int strlen(const char *); 220 ; 221 ; extern int strcmp(const char *, const char *); 222 ; 223 ; extern int strncmp(char *, char *, int); 224 ; 225 ; extern int console_flags; 226 ; 227 ; extern void exit(int); 228 ; 229 ; extern char *malloc(int); 230 ; 231 ; extern int _exit(int); 232 ; 233 ; extern int strlen(char *); 234 ; 235 ; extern int isdigit(char); 236 ; 237 ; extern int atoi(char *); 238 ; 239 ; extern int checkend(); 240 ; 241 ; extern char *strncpy(char *, char *, int); 242 ; 243 ; extern void flush_dtoi(); 244 ; 245 ; extern void printf(); 246 ; 247 ; 248 ; 249 ; 250 ; 251 ; 252 ; 253 ; extern void mymon_main(); 254 ; 255 ; 256 ; 257 ; 258 ; 259 ; void main() 260 ; 261 ; { 262 ; 263 ; printf("CBG PU17 Monitor Running\n"); 264 ; 265 003C 00F45600 lod R0,#ua10 ; ltgd3 266 ; force VR0 to 0 ; call 267 0040 67D1 mov r2,r7 ; call 268 0042 1005 sub r2,#8 ; call 269 0044 3CD89628 jsr _printf ; call 270 ; force VR0 to 0 ; res 271 ; mymon_main(); 272 ; 273 0048 67D1 mov r2,r7 ; call 274 004A 1005 sub r2,#8 ; call 275 004C 3CD88E15 jsr _mymon_main ; call 276 ; force VR0 to 0 ; res 277 0050 7F8F lod R6,[R7,#-2] ; cr 278 0052 808F lod r7,[r7] ; cr 279 0054 00F3 ret ; cr 280 0056 43424720 ua10 .data "CBG PU17 Monitor Running",10,0 50553137204D6F6E69746F722052756E6E696E670A00 281 ; _open .extern 282 ; _close .extern 283 ; _main .extern 284 ; __sa_wrch .extern 285 ; __sa_rdch .extern 286 ; _getchar .extern 287 ; _putchar .extern 288 ; _toupper .extern 289 ; _tolower .extern 290 ; _strlen .extern 291 ; _strcmp .extern 292 ; _strncmp .extern 293 .bss 294 ;_console_flags .extern 295 ; _exit .extern 296 ; _malloc .extern 297 ; __exit .extern 298 ; _strlen .extern 299 ; _isdigit .extern 300 ; _atoi .extern 301 ; _checkend .extern 302 ; _strncpy .extern 303 ; _flush_dtoi .extern 304 ; _printf .extern 305 ; _init_mylinein .extern 306 ; _rhex .extern 307 ; _readcookedline_pe .extern 308 ; _shell_parse .extern 309 ; _myvict_main .extern 310 ; _init_myvict .extern 311 _errorf 312 DF04 0000 .defs 2 315 _ihex_offset 316 DF06 0000 .defs 2 319 ;_deb .extern 320 _last_addr 321 DF08 0000 .defs 2 324 _bytes_loaded 325 DF0A 0000 .defs 2 328 _monmode .global 329 DF0C 0000 .defs 2 332 ; _read_cpu_control_reg .extern 333 ; _flush_dtoi1 .extern 334 ; _clear_breakpoint .extern 335 ; _install_breakpoint .extern 336 ;_bptaddr .extern 337 _go_addr 338 DF0E 0000 .defs 2 341 ; _myadis .extern 342 ; _zog1 .extern 343 ; _zog2 .extern 344 ; _zog3 .extern 345 ; _zog4 .extern 346 ; _zog5 .extern 347 _inpoi .global 348 DF10 0000 .defs 2 351 .text 352 353 354 ; Routine sayprompt 355 .align 2 356 _sayprompt .global 357 0070 809B str r7,[r2] 358 0072 E2D3 mov r7,r2 359 0074 7F9F str R6,[R7,#-2] 360 ; ------------------------------------------------- 361 ; } 362 ; 363 ; 364 ; 365 ; 366 ; 367 ; sayprompt() 368 ; 369 ; { 370 ; 371 ; if (monmode==0) printf("mymon:"); 372 ; 373 0076 00D40CDF lod R0,_monmode ; ris 374 007A 2800 cmp R0,#0 ; gfv 375 007C 04D89000 bne dy10 ; fjump F ; cfj 376 0080 00F4C500 lod R0,#dy11 ; ltgd3 377 ; force VR0 to 0 ; call 378 0084 67D1 mov r2,r7 ; call 379 0086 1005 sub r2,#8 ; call 380 0088 3CD89628 jsr _printf ; call 381 ; force VR0 to 0 ; res 382 008C 28D8B600 bra dy12 ; anon 383 dy10 ; anon 384 ; else if (monmode==1) printf("V: "); 385 ; 386 0090 00D40CDF lod R0,_monmode ; ris 387 0094 2900 cmp R0,#1 ; alu_i 388 0096 04D8AA00 bne dy13 ; fjump F ; cfj 389 009A 00F4C100 lod R0,#dy14 ; ltgd3 390 ; force VR0 to 0 ; call 391 009E 67D1 mov r2,r7 ; call 392 00A0 1005 sub r2,#8 ; call 393 00A2 3CD89628 jsr _printf ; call 394 ; force VR0 to 0 ; res 395 00A6 28D8B600 bra dy15 ; anon 396 dy13 ; anon 397 ; else printf("WC: "); 398 ; 399 00AA 00F4BC00 lod R0,#dy16 ; ltgd3 400 ; force VR0 to 0 ; call 401 00AE 67D1 mov r2,r7 ; call 402 00B0 1005 sub r2,#8 ; call 403 00B2 3CD89628 jsr _printf ; call 404 ; force VR0 to 0 ; res 405 dy15 ; anon 406 dy12 ; anon 407 00B6 7F8F lod R6,[R7,#-2] ; cr 408 00B8 808F lod r7,[r7] ; cr 409 00BA 00F3 ret ; cr 410 00BC 57433A20 dy16 .data "WC: ",0 00 411 00C1 563A2000 dy14 .data "V: ",0 412 00C5 6D796D6F dy11 .data "mymon:",0 6E3A00 413 414 415 ; Routine intel_hex 416 .align 2 417 _intel_hex .global 418 00CC 809B str r7,[r2] 419 00CE E2D3 mov r7,r2 420 00D0 7F9F str R6,[R7,#-2] 421 00D2 019C str R0,[R7,#2] 422 ; ------------------------------------------------- 423 ; local t [R7,#2] 424 ; s 425 ; } 426 ; 427 ; 428 ; 429 ; 430 ; 431 ; intel_hex(char *t) 432 ; 433 ; { 434 ; 435 ; if (*t != ':') return; 436 ; 437 00D4 018C lod R0,[R7,#2] ; risf 438 00D6 80A0 lodb R1,[R0] ; risf 439 00D8 AA1C cmp R1,#58 ; alu_i 440 00DA 00D8E400 beq dy17 ; fjump F ; cfj 441 00DE 7F8F lod R6,[R7,#-2] ; cr 442 00E0 808F lod r7,[r7] ; cr 443 00E2 00F3 ret ; cr 444 dy17 ; anon 445 ; if (handle_ihex(0, t)) errorf = 1; 446 ; 447 00E4 6000 lod R0,#0 ; lti 448 00E6 818C lod R1,[R7,#2] ; risf 449 ; force VR0 to 0 ; call 450 ; force VR1 to 1 ; call 451 00E8 67D1 mov r2,r7 ; call 452 00EA 1005 sub r2,#8 ; call 453 00EC 3CD81801 jsr _handle_ihex ; call 454 ; force VR0 to 0 ; res 455 00F0 2800 cmp R0,#0 ; gfv 456 00F2 00D8FC00 beq dy18 ; fjmp1 ; cfj 457 00F6 6100 lod R0,#1 ; lti 458 00F8 20D404DF str R0,_errorf ; assign 459 dy18 ; anon 460 ; if (errorf == 0) handle_ihex(1, t); 461 ; 462 00FC 00D404DF lod R0,_errorf ; ris 463 0100 2800 cmp R0,#0 ; gfv 464 0102 04D81201 bne dy19 ; fjump F ; cfj 465 0106 6100 lod R0,#1 ; lti 466 0108 818C lod R1,[R7,#2] ; risf 467 ; force VR0 to 0 ; call 468 ; force VR1 to 1 ; call 469 010A 67D1 mov r2,r7 ; call 470 010C 1005 sub r2,#8 ; call 471 010E 3CD81801 jsr _handle_ihex ; call 472 ; force VR0 to 0 ; res 473 dy19 ; anon 474 0112 7F8F lod R6,[R7,#-2] ; cr 475 0114 808F lod r7,[r7] ; cr 476 0116 00F3 ret ; cr 477 478 479 ; Routine handle_ihex 480 .align 2 481 _handle_ihex .global 482 0118 809B str r7,[r2] 483 011A E2D3 mov r7,r2 484 011C 7F9F str R6,[R7,#-2] 485 011E 019C str R0,[R7,#2] 486 0120 829C str R1,[R7,#4] 487 ; ------------------------------------------------- 488 ; local write [R7,#2] 489 ; s 490 ; local src [R7,#4] 491 ; s 492 ; local llen [R7,#-4] 493 ; s 494 ; local laddr [R7,#-6] 495 ; s 496 ; local ltype [R7,#-8] 497 ; s 498 ; local lsum [R7,#-10] 499 ; s 500 ; local wq [R7,#-12] 501 ; s 502 ; } 503 ; 504 ; 505 ; 506 ; 507 ; 508 ; int handle_ihex(int write, char *src) 509 ; 510 ; { 511 ; 512 ; int llen, laddr, ltype; 513 ; 514 ; uchar lsum; 515 ; 516 ; int wq; 517 ; 518 ; inpoi = src+1; 519 ; 520 0122 028C lod R0,[R7,#4] ; risf 521 0124 0900 add R0,#1 ; alu_i 522 0126 20D410DF str R0,_inpoi ; assign 523 ; llen = iread(2); 524 ; 525 012A 6200 lod R0,#2 ; lti 526 ; force VR0 to 0 ; call 527 012C 67D1 mov r2,r7 ; call 528 012E 1209 sub r2,#18 ; call 529 0130 3CD8C802 jsr _iread ; call 530 ; force VR0 to 0 ; res 531 0134 7E9C str R0,[R7,#-4] ; assign 532 ; laddr = iread(4); 533 ; 534 0136 6400 lod R0,#4 ; lti 535 ; force VR0 to 0 ; call 536 0138 67D1 mov r2,r7 ; call 537 013A 1209 sub r2,#18 ; call 538 013C 3CD8C802 jsr _iread ; call 539 ; force VR0 to 0 ; res 540 0140 7D9C str R0,[R7,#-6] ; assign 541 ; ltype = iread(2); 542 ; 543 0142 6200 lod R0,#2 ; lti 544 ; force VR0 to 0 ; call 545 0144 67D1 mov r2,r7 ; call 546 0146 1209 sub r2,#18 ; call 547 0148 3CD8C802 jsr _iread ; call 548 ; force VR0 to 0 ; res 549 014C 7C9C str R0,[R7,#-8] ; assign 550 ; if (ltype == 2 && llen == 2) 551 ; 552 014E 7C8C lod R0,[R7,#-8] ; risf 553 0150 2A00 cmp R0,#2 ; alu_i 554 0152 04D88E01 bne dy20 ; fjump F ; cfj 555 0156 7E8C lod R0,[R7,#-4] ; risf 556 0158 2A00 cmp R0,#2 ; alu_i 557 015A 04D88E01 bne dy20 ; fjump F ; cfj 558 ; { 559 ; 560 ; ihex_offset = (uchar *) (iread(4) << 4); 561 ; 562 015E 6400 lod R0,#4 ; lti 563 ; force VR0 to 0 ; call 564 0160 67D1 mov r2,r7 ; call 565 0162 1209 sub r2,#18 ; call 566 0164 3CD8C802 jsr _iread ; call 567 ; force VR0 to 0 ; res 568 0168 4900 asl R0,#1 ; fshif 569 016A 4900 asl R0,#1 ; fshif 570 016C 4900 asl R0,#1 ; fshif 571 016E 4900 asl R0,#1 ; fshif 572 0170 20D406DF str R0,_ihex_offset ; assign 573 ; lsum = iread(2); 574 ; 575 0174 6200 lod R0,#2 ; lti 576 ; force VR0 to 0 ; call 577 0176 67D1 mov r2,r7 ; call 578 0178 1209 sub r2,#18 ; call 579 017A 3CD8C802 jsr _iread ; call 580 ; force VR0 to 0 ; res 581 017E 7BBC strb R0,[R7,#-10] ; assign 582 ; return errorf; 583 ; 584 0180 00D404DF lod R0,_errorf ; ris 585 ; force VR0 to 0 ; loadtod0 586 0184 7F8F lod R6,[R7,#-2] ; cr 587 0186 808F lod r7,[r7] ; cr 588 0188 00F3 ret ; cr 589 018A 28D8B801 bra dy21 ; anon 590 dy20 ; anon 591 ; } 592 ; 593 ; else if (ltype != 0) 594 ; 595 018E 7C8C lod R0,[R7,#-8] ; risf 596 0190 2800 cmp R0,#0 ; gfv 597 0192 00D8B801 beq dy22 ; fjump F ; cfj 598 ; { 599 ; 600 ; printf("Unknown type 0x%x encountered in line %s\n", ltype, src); 601 ; 602 0196 028C lod R0,[R7,#4] ; risf 603 0198 799C str R0,[R7,#-14] ; assign 604 019A 00F49E02 lod R0,#dy23 ; ltgd3 605 019E FC8C lod R1,[R7,#-8] ; risf 606 ; force VR0 to 0 ; call 607 ; force VR1 to 1 ; call 608 01A0 67D1 mov r2,r7 ; call 609 01A2 1409 sub r2,#20 ; call 610 01A4 3CD89628 jsr _printf ; call 611 ; force VR0 to 0 ; res 612 ; errorf = 1; 613 ; 614 01A8 6100 lod R0,#1 ; lti 615 01AA 20D404DF str R0,_errorf ; assign 616 ; return errorf; 617 ; 618 01AE 00D404DF lod R0,_errorf ; ris 619 ; force VR0 to 0 ; loadtod0 620 01B2 7F8F lod R6,[R7,#-2] ; cr 621 01B4 808F lod r7,[r7] ; cr 622 01B6 00F3 ret ; cr 623 dy22 ; anon 624 dy21 ; anon 625 ; } 626 ; 627 ; lsum = llen + laddr + ltype + (laddr >> 8); 628 ; 629 01B8 7E8C lod R0,[R7,#-4] ; risf 630 01BA FD8C lod R1,[R7,#-6] ; risf 631 01BC 09D0 add R0,R1 ; alu-l 632 01BE FC8C lod R1,[R7,#-8] ; risf 633 01C0 09D0 add R0,R1 ; alu-l 634 01C2 FD8C lod R1,[R7,#-6] ; risf 635 01C4 D100 asr R1,#1 ; fshif 636 01C6 D100 asr R1,#1 ; fshif 637 01C8 D100 asr R1,#1 ; fshif 638 01CA D100 asr R1,#1 ; fshif 639 01CC D100 asr R1,#1 ; fshif 640 01CE D100 asr R1,#1 ; fshif 641 01D0 D100 asr R1,#1 ; fshif 642 01D2 D100 asr R1,#1 ; fshif 643 01D4 09D0 add R0,R1 ; alu-l 644 01D6 7BBC strb R0,[R7,#-10] ; assign 645 ; for (wq=0; wq%s< >%s<\n", argv[0], argv[1]); 1294 ; 1295 05AE 67D1 mov r2,r7 ; call 1296 05B0 1005 sub r2,#8 ; call 1297 05B2 3CD87000 jsr _sayprompt ; call 1298 ; force VR0 to 0 ; res 1299 05B6 018C lod R0,[R7,#2] ; risf 1300 05B8 0A00 add R0,#2 ; alu_i 1301 05BA 8080 lod R1,[R0] ; risf 1302 05BC FE9C str R1,[R7,#-4] ; assign 1303 05BE 00F4D405 lod R0,#dy68 ; ltgd3 1304 05C2 018D lod R2,[R7,#2] ; risf 1305 05C4 8088 lod R1,[R2] ; risf 1306 ; force VR0 to 0 ; call 1307 ; force VR1 to 1 ; call 1308 05C6 67D1 mov r2,r7 ; call 1309 05C8 1205 sub r2,#10 ; call 1310 05CA 3CD89628 jsr _printf ; call 1311 ; force VR0 to 0 ; res 1312 05CE 7F8F lod R6,[R7,#-2] ; cr 1313 05D0 808F lod r7,[r7] ; cr 1314 05D2 00F3 ret ; cr 1315 05D4 506F7373 dy68 .data "Possibly an error >%s< >%s<",10,0 69626C7920616E206572726F72203E25733C203E25733C0A00 1316 05F1 6F666673 dy66 .data "offset",0 657400 1317 05F8 66696E64 dy64 .data "findl",0 6C00 1318 05FE 66696E64 dy61 .data "findb",0 6200 1319 0604 66696C6C dy59 .data "fill",0 00 1320 0609 636C6561 dy57 .data "clear",0 7200 1321 060F 64697300 dy55 .data "dis",0 1322 0613 676F00 dy53 .data "go",0 1323 0616 6D6D00 dy51 .data "mm",0 1324 0619 6D6D7200 dy49 .data "mmr",0 1325 061D 627000 dy47 .data "bp",0 1326 0620 6D6D7700 dy45 .data "mmw",0 1327 0624 6D647700 dy43 .data "mdw",0 1328 0628 6D6400 dy41 .data "md",0 1329 062B 68656C70 dy39 .data "help",0 00 1330 0630 3F00 dy37 .data "?",0 1331 1332 1333 ; Routine mymon_offset 1334 .align 2 1335 _mymon_offset .global 1336 0632 809B str r7,[r2] 1337 0634 E2D3 mov r7,r2 1338 0636 7F9F str R6,[R7,#-2] 1339 0638 019C str R0,[R7,#2] 1340 ; ------------------------------------------------- 1341 ; local argv [R7,#2] 1342 ; s 1343 ; } 1344 ; 1345 ; 1346 ; 1347 ; extern void zog1(void); 1348 ; 1349 ; extern void zog2(void); 1350 ; 1351 ; extern void zog3(void); 1352 ; 1353 ; extern void zog4(void); 1354 ; 1355 ; extern void zog5(void); 1356 ; 1357 ; 1358 ; 1359 ; int mymon_offset(char **argv) 1360 ; 1361 ; { 1362 ; 1363 ; if (argv[1]) ihex_offset = (uchar *) rhex(argv[1]); 1364 ; 1365 063A 018C lod R0,[R7,#2] ; risf 1366 063C 0A00 add R0,#2 ; alu_i 1367 063E 8080 lod R1,[R0] ; risf 1368 0640 A800 cmp R1,#0 ; gfv 1369 0642 00D85806 beq dy69 ; fjmp1 ; cfj 1370 0646 818C lod R1,[R7,#2] ; risf 1371 0648 8A00 add R1,#2 ; alu_i 1372 064A 0084 lod R0,[R1] ; risf 1373 ; force VR0 to 0 ; call 1374 064C 67D1 mov r2,r7 ; call 1375 064E 1005 sub r2,#8 ; call 1376 0650 3CD80E1E jsr _rhex ; call 1377 ; force VR0 to 0 ; res 1378 0654 20D406DF str R0,_ihex_offset ; assign 1379 dy69 ; anon 1380 ; printf("Offset for hex download 0x%08X\n", ihex_offset); 1381 ; 1382 0658 00F47006 lod R0,#dy70 ; ltgd3 1383 065C 80D406DF lod R1,_ihex_offset ; ris 1384 ; force VR0 to 0 ; call 1385 ; force VR1 to 1 ; call 1386 0660 67D1 mov r2,r7 ; call 1387 0662 1005 sub r2,#8 ; call 1388 0664 3CD89628 jsr _printf ; call 1389 ; force VR0 to 0 ; res 1390 ; return 0; 1391 ; 1392 0668 6000 lod R0,#0 ; lti 1393 ; force VR0 to 0 ; loadtod0 1394 066A 7F8F lod R6,[R7,#-2] ; cr 1395 066C 808F lod r7,[r7] ; cr 1396 066E 00F3 ret ; cr 1397 0670 4F666673 dy70 .data "Offset for hex download 0x%08X",10,0 657420666F722068657820646F776E6C6F6164203078253038580A00 1398 1399 1400 ; Routine mymon_clear 1401 .align 2 1402 _mymon_clear .global 1403 0690 809B str r7,[r2] 1404 0692 E2D3 mov r7,r2 1405 0694 7F9F str R6,[R7,#-2] 1406 ; ------------------------------------------------- 1407 ; } 1408 ; 1409 ; 1410 ; 1411 ; 1412 ; 1413 ; 1414 ; 1415 ; 1416 ; 1417 ; int mymon_clear() 1418 ; 1419 ; { 1420 ; 1421 ; 1422 ; 1423 ; printf("\n::%i bytes loaded\n", bytes_loaded - errorf); 1424 ; 1425 0696 00F4C006 lod R0,#dy71 ; ltgd3 1426 069A 80D40ADF lod R1,_bytes_loaded ; ris 1427 069E 00D504DF lod R2,_errorf ; ris 1428 06A2 92D0 sub R1,R2 ; alu-l 1429 ; force VR0 to 0 ; call 1430 ; force VR1 to 1 ; call 1431 06A4 67D1 mov r2,r7 ; call 1432 06A6 1005 sub r2,#8 ; call 1433 06A8 3CD89628 jsr _printf ; call 1434 ; force VR0 to 0 ; res 1435 ; errorf = 0; 1436 ; 1437 06AC 6000 lod R0,#0 ; lti 1438 06AE 20D404DF str R0,_errorf ; assign 1439 ; 1440 ; 1441 ; bytes_loaded = 0; 1442 ; 1443 06B2 6000 lod R0,#0 ; lti 1444 06B4 20D40ADF str R0,_bytes_loaded ; assign 1445 ; return 0; 1446 ; 1447 06B8 6000 lod R0,#0 ; lti 1448 ; force VR0 to 0 ; loadtod0 1449 06BA 7F8F lod R6,[R7,#-2] ; cr 1450 06BC 808F lod r7,[r7] ; cr 1451 06BE 00F3 ret ; cr 1452 06C0 0A3A3A25 dy71 .data 10,58,58,37,105,32,98,121,116,101,115,32,108,111,97,100,101,100,10,0 69206279746573206C6F616465640A00 1453 1454 1455 ; Routine mymon_md_w 1456 .align 2 1457 _mymon_md_w .global 1458 06D4 809B str r7,[r2] 1459 06D6 E2D3 mov r7,r2 1460 06D8 7F9F str R6,[R7,#-2] 1461 06DA 019C str R0,[R7,#2] 1462 ; ------------------------------------------------- 1463 ; local argv [R7,#2] 1464 ; s 1465 ; local b [R7,#-4] 1466 ; s 1467 06DC 6000 lod R0,#0 ; lti 1468 06DE 7E9C str R0,[R7,#-4] ; assign 1469 ; local l [R7,#-6] 1470 ; s 1471 06E0 6100 lod R0,#1 ; lti 1472 06E2 7D9C str R0,[R7,#-6] ; assign 1473 ; } 1474 ; 1475 ; 1476 ; 1477 ; int mymon_md_w(char **argv) 1478 ; 1479 ; { 1480 ; 1481 ; int b = 0; 1482 ; 1483 ; int l = 1; 1484 ; 1485 ; 1486 ; 1487 ; if (argv[1] && argv[1][0] != '.') b = rhex(argv[1]); else b = last_addr; 1488 ; 1489 06E4 018C lod R0,[R7,#2] ; risf 1490 06E6 0A00 add R0,#2 ; alu_i 1491 06E8 8080 lod R1,[R0] ; risf 1492 06EA A800 cmp R1,#0 ; gfv 1493 06EC 00D81207 beq dy72 ; fjmp1 ; cfj 1494 06F0 018C lod R0,[R7,#2] ; risf 1495 06F2 0A00 add R0,#2 ; alu_i 1496 06F4 8080 lod R1,[R0] ; risf 1497 06F6 00A4 lodb R0,[R1] ; risf 1498 06F8 2E14 cmp R0,#46 ; alu_i 1499 06FA 00D81207 beq dy72 ; fjump F ; cfj 1500 06FE 818C lod R1,[R7,#2] ; risf 1501 0700 8A00 add R1,#2 ; alu_i 1502 0702 0084 lod R0,[R1] ; risf 1503 ; force VR0 to 0 ; call 1504 0704 67D1 mov r2,r7 ; call 1505 0706 1405 sub r2,#12 ; call 1506 0708 3CD80E1E jsr _rhex ; call 1507 ; force VR0 to 0 ; res 1508 070C 7E9C str R0,[R7,#-4] ; assign 1509 070E 28D81807 bra dy73 ; anon 1510 dy72 ; anon 1511 0712 00D408DF lod R0,_last_addr ; ris 1512 0716 7E9C str R0,[R7,#-4] ; assign 1513 dy73 ; anon 1514 ; if (argv[2]) l = rhex(argv[2]); 1515 ; 1516 0718 018C lod R0,[R7,#2] ; risf 1517 071A 0C00 add R0,#4 ; alu_i 1518 071C 8080 lod R1,[R0] ; risf 1519 071E A800 cmp R1,#0 ; gfv 1520 0720 00D83407 beq dy74 ; fjmp1 ; cfj 1521 0724 818C lod R1,[R7,#2] ; risf 1522 0726 8C00 add R1,#4 ; alu_i 1523 0728 0084 lod R0,[R1] ; risf 1524 ; force VR0 to 0 ; call 1525 072A 67D1 mov r2,r7 ; call 1526 072C 1405 sub r2,#12 ; call 1527 072E 3CD80E1E jsr _rhex ; call 1528 ; force VR0 to 0 ; res 1529 0732 7D9C str R0,[R7,#-6] ; assign 1530 dy74 ; anon 1531 ; while (l-- > 0) 1532 ; 1533 dy75 ; anon 1534 0734 7D8C lod R0,[R7,#-6] ; risf 1535 0736 E0D0 mov R1,R0 ; qasp1 1536 0738 9100 sub R1,#1 ; qasp 1537 073A FD9C str R1,[R7,#-6] ; qasp 1538 073C 2800 cmp R0,#0 ; gfv 1539 073E 14D8D607 ble dy76 ; fjump F ; cfj 1540 ; { 1541 ; 1542 ; local i [R7,#-8] 1543 ; s 1544 ; local xw [R7,#-10] 1545 ; s 1546 0742 7E8C lod R0,[R7,#-4] ; risf 1547 0744 7B9C str R0,[R7,#-10] ; assign 1548 ; local x [R7,#-12] 1549 ; s 1550 0746 7E8C lod R0,[R7,#-4] ; risf 1551 0748 7A9C str R0,[R7,#-12] ; assign 1552 ; int i; 1553 ; 1554 ; int *xw = (int *) b; 1555 ; 1556 ; uchar *x = (uchar *) b; 1557 ; 1558 ; 1559 ; 1560 ; printf("%X ", b); 1561 ; 1562 074A 00F4F107 lod R0,#dy77 ; ltgd3 1563 074E FE8C lod R1,[R7,#-4] ; risf 1564 ; force VR0 to 0 ; call 1565 ; force VR1 to 1 ; call 1566 0750 67D1 mov r2,r7 ; call 1567 0752 1209 sub r2,#18 ; call 1568 0754 3CD89628 jsr _printf ; call 1569 ; force VR0 to 0 ; res 1570 ; 1571 ; 1572 ; for (i=0; i<4; i++) 1573 ; 1574 0758 6000 lod R0,#0 ; lti 1575 075A 7C9C str R0,[R7,#-8] ; assign 1576 dy78 ; anon 1577 075C 7C8C lod R0,[R7,#-8] ; risf 1578 075E 2C00 cmp R0,#4 ; alu_i 1579 0760 0CD88207 bge dy79 ; fjump F ; cfj 1580 ; { 1581 ; 1582 ; printf("%08X ", xw[i]); 1583 ; 1584 0764 00F4E907 lod R0,#dy80 ; ltgd3 1585 0768 FC8C lod R1,[R7,#-8] ; risf 1586 076A C900 asl R1,#1 ; anon 1587 076C 7B8D lod R2,[R7,#-10] ; risf 1588 076E 09D1 add R2,R1 ; alu-l 1589 0770 8088 lod R1,[R2] ; risf 1590 ; force VR0 to 0 ; call 1591 ; force VR1 to 1 ; call 1592 0772 67D1 mov r2,r7 ; call 1593 0774 1209 sub r2,#18 ; call 1594 0776 3CD89628 jsr _printf ; call 1595 ; force VR0 to 0 ; res 1596 077A 7C8C lod R0,[R7,#-8] ; risf 1597 077C 0900 add R0,#1 ; qas 1598 077E 7C9C str R0,[R7,#-8] ; qasmi 1599 0780 EECA bra dy78 ; anon 1600 dy79 ; anon 1601 ; } 1602 ; 1603 ; for (i=0; i<16; i++) 1604 ; 1605 0782 6000 lod R0,#0 ; lti 1606 0784 7C9C str R0,[R7,#-8] ; assign 1607 dy81 ; anon 1608 0786 7C8C lod R0,[R7,#-8] ; risf 1609 0788 2808 cmp R0,#16 ; alu_i 1610 078A 0CD8C207 bge dy82 ; fjump F ; cfj 1611 ; { 1612 ; 1613 ; local t [R7,#-14] 1614 ; s 1615 078E 7A8C lod R0,[R7,#-12] ; risf 1616 0790 FC8C lod R1,[R7,#-8] ; risf 1617 0792 09D0 add R0,R1 ; alu-l 1618 0794 80A0 lodb R1,[R0] ; risf 1619 0796 F9BC strb R1,[R7,#-14] ; assign 1620 ; uchar t = x[i]; 1621 ; 1622 ; if (t <32 || t >= 127) t = '.'; 1623 ; 1624 0798 79AC lodb R0,[R7,#-14] ; risf 1625 079A 2810 cmp R0,#32 ; alu_i 1626 079C 08D8A807 blt dy83 ; ctj 1627 07A0 79AC lodb R0,[R7,#-14] ; risf 1628 07A2 2F3C cmp R0,#127 ; alu_i 1629 07A4 08D8AC07 blt dy84 ; fjump F ; cfj 1630 dy83 ; anon 1631 07A8 6614 lod R0,#46 ; lti 1632 07AA 79BC strb R0,[R7,#-14] ; assign 1633 dy84 ; anon 1634 ; printf("%c", t); 1635 ; 1636 07AC 00F4E607 lod R0,#dy85 ; ltgd3 1637 07B0 F9AC lodb R1,[R7,#-14] ; risf 1638 ; force VR0 to 0 ; call 1639 ; force VR1 to 1 ; call 1640 07B2 67D1 mov r2,r7 ; call 1641 07B4 1409 sub r2,#20 ; call 1642 07B6 3CD89628 jsr _printf ; call 1643 ; force VR0 to 0 ; res 1644 07BA 7C8C lod R0,[R7,#-8] ; risf 1645 07BC 0900 add R0,#1 ; qas 1646 07BE 7C9C str R0,[R7,#-8] ; qasmi 1647 07C0 E3CA bra dy81 ; anon 1648 dy82 ; anon 1649 ; } 1650 ; 1651 ; printf("\n"); 1652 ; 1653 07C2 00F4E407 lod R0,#dy86 ; ltgd3 1654 ; force VR0 to 0 ; call 1655 07C6 67D1 mov r2,r7 ; call 1656 07C8 1209 sub r2,#18 ; call 1657 07CA 3CD89628 jsr _printf ; call 1658 ; force VR0 to 0 ; res 1659 ; b += 16; 1660 ; 1661 07CE 7E8C lod R0,[R7,#-4] ; risf 1662 07D0 0808 add R0,#16 ; alu_i 1663 07D2 7E9C str R0,[R7,#-4] ; assign 1664 07D4 B0CA bra dy75 ; anon 1665 dy76 ; anon 1666 ; } 1667 ; 1668 ; last_addr = b; 1669 ; 1670 07D6 7E8C lod R0,[R7,#-4] ; risf 1671 07D8 20D408DF str R0,_last_addr ; assign 1672 ; return 0; 1673 ; 1674 07DC 6000 lod R0,#0 ; lti 1675 ; force VR0 to 0 ; loadtod0 1676 07DE 7F8F lod R6,[R7,#-2] ; cr 1677 07E0 808F lod r7,[r7] ; cr 1678 07E2 00F3 ret ; cr 1679 07E4 0A00 dy86 .data 10,0 1680 07E6 256300 dy85 .data "%c",0 1681 07E9 25303858 dy80 .data "%08X ",0 20202000 1682 07F1 25582020 dy77 .data "%X ",0 00 1683 1684 1685 ; Routine mymon_md 1686 .align 2 1687 _mymon_md .global 1688 07F6 809B str r7,[r2] 1689 07F8 E2D3 mov r7,r2 1690 07FA 7F9F str R6,[R7,#-2] 1691 07FC 019C str R0,[R7,#2] 1692 ; ------------------------------------------------- 1693 ; local argv [R7,#2] 1694 ; s 1695 ; local b [R7,#-4] 1696 ; s 1697 07FE 6000 lod R0,#0 ; lti 1698 0800 7E9C str R0,[R7,#-4] ; assign 1699 ; local l [R7,#-6] 1700 ; s 1701 0802 6100 lod R0,#1 ; lti 1702 0804 7D9C str R0,[R7,#-6] ; assign 1703 ; } 1704 ; 1705 ; 1706 ; 1707 ; 1708 ; 1709 ; 1710 ; 1711 ; int mymon_md(char **argv) 1712 ; 1713 ; { 1714 ; 1715 ; int b = 0; 1716 ; 1717 ; int l = 1; 1718 ; 1719 ; if (argv[1] && argv[1][0] != '.') b = rhex(argv[1]); else b = last_addr; 1720 ; 1721 0806 018C lod R0,[R7,#2] ; risf 1722 0808 0A00 add R0,#2 ; alu_i 1723 080A 8080 lod R1,[R0] ; risf 1724 080C A800 cmp R1,#0 ; gfv 1725 080E 00D83408 beq dy87 ; fjmp1 ; cfj 1726 0812 018C lod R0,[R7,#2] ; risf 1727 0814 0A00 add R0,#2 ; alu_i 1728 0816 8080 lod R1,[R0] ; risf 1729 0818 00A4 lodb R0,[R1] ; risf 1730 081A 2E14 cmp R0,#46 ; alu_i 1731 081C 00D83408 beq dy87 ; fjump F ; cfj 1732 0820 818C lod R1,[R7,#2] ; risf 1733 0822 8A00 add R1,#2 ; alu_i 1734 0824 0084 lod R0,[R1] ; risf 1735 ; force VR0 to 0 ; call 1736 0826 67D1 mov r2,r7 ; call 1737 0828 1405 sub r2,#12 ; call 1738 082A 3CD80E1E jsr _rhex ; call 1739 ; force VR0 to 0 ; res 1740 082E 7E9C str R0,[R7,#-4] ; assign 1741 0830 28D83A08 bra dy88 ; anon 1742 dy87 ; anon 1743 0834 00D408DF lod R0,_last_addr ; ris 1744 0838 7E9C str R0,[R7,#-4] ; assign 1745 dy88 ; anon 1746 ; 1747 ; 1748 ; if (argv[2]) l = rhex(argv[2]); 1749 ; 1750 083A 018C lod R0,[R7,#2] ; risf 1751 083C 0C00 add R0,#4 ; alu_i 1752 083E 8080 lod R1,[R0] ; risf 1753 0840 A800 cmp R1,#0 ; gfv 1754 0842 00D85608 beq dy89 ; fjmp1 ; cfj 1755 0846 818C lod R1,[R7,#2] ; risf 1756 0848 8C00 add R1,#4 ; alu_i 1757 084A 0084 lod R0,[R1] ; risf 1758 ; force VR0 to 0 ; call 1759 084C 67D1 mov r2,r7 ; call 1760 084E 1405 sub r2,#12 ; call 1761 0850 3CD80E1E jsr _rhex ; call 1762 ; force VR0 to 0 ; res 1763 0854 7D9C str R0,[R7,#-6] ; assign 1764 dy89 ; anon 1765 ; console_flags = 0; 1766 ; 1767 0856 6000 lod R0,#0 ; lti 1768 0858 20D400DF str R0,_console_flags ; assign 1769 ; while (l-- > 0) 1770 ; 1771 dy90 ; anon 1772 085C 7D8C lod R0,[R7,#-6] ; risf 1773 085E E0D0 mov R1,R0 ; qasp1 1774 0860 9100 sub R1,#1 ; qasp 1775 0862 FD9C str R1,[R7,#-6] ; qasp 1776 0864 2800 cmp R0,#0 ; gfv 1777 0866 14D82C09 ble dy91 ; fjump F ; cfj 1778 ; { 1779 ; 1780 ; local i [R7,#-8] 1781 ; s 1782 ; local x [R7,#-10] 1783 ; s 1784 086A 7E8C lod R0,[R7,#-4] ; risf 1785 086C 7B9C str R0,[R7,#-10] ; assign 1786 ; int i; 1787 ; 1788 ; uchar *x = (uchar *) b; 1789 ; 1790 ; printf("%X ", b); 1791 ; 1792 086E 00F44A09 lod R0,#dy92 ; ltgd3 1793 0872 FE8C lod R1,[R7,#-4] ; risf 1794 ; force VR0 to 0 ; call 1795 ; force VR1 to 1 ; call 1796 0874 67D1 mov r2,r7 ; call 1797 0876 1009 sub r2,#16 ; call 1798 0878 3CD89628 jsr _printf ; call 1799 ; force VR0 to 0 ; res 1800 ; for (i=0; i<16; i++) 1801 ; 1802 087C 6000 lod R0,#0 ; lti 1803 087E 7C9C str R0,[R7,#-8] ; assign 1804 dy93 ; anon 1805 0880 7C8C lod R0,[R7,#-8] ; risf 1806 0882 2808 cmp R0,#16 ; alu_i 1807 0884 0CD8BA08 bge dy94 ; fjump F ; cfj 1808 ; { 1809 ; 1810 ; printf("%02X ", x[i]); 1811 ; 1812 0888 00F44409 lod R0,#dy95 ; ltgd3 1813 088C 7B8D lod R2,[R7,#-10] ; risf 1814 088E FC8C lod R1,[R7,#-8] ; risf 1815 0890 09D1 add R2,R1 ; alu-l 1816 0892 80A8 lodb R1,[R2] ; risf 1817 ; force VR0 to 0 ; call 1818 ; force VR1 to 1 ; call 1819 0894 67D1 mov r2,r7 ; call 1820 0896 1009 sub r2,#16 ; call 1821 0898 3CD89628 jsr _printf ; call 1822 ; force VR0 to 0 ; res 1823 ; if ((i & 3) == 3) printf(" "); 1824 ; 1825 089C 7C8C lod R0,[R7,#-8] ; risf 1826 089E 3B00 and R0,#3 ; alu_i 1827 08A0 2B00 cmp R0,#3 ; alu_i 1828 08A2 04D8B208 bne dy96 ; fjump F ; cfj 1829 08A6 00F44209 lod R0,#dy97 ; ltgd3 1830 ; force VR0 to 0 ; call 1831 08AA 67D1 mov r2,r7 ; call 1832 08AC 1009 sub r2,#16 ; call 1833 08AE 3CD89628 jsr _printf ; call 1834 ; force VR0 to 0 ; res 1835 dy96 ; anon 1836 08B2 7C8C lod R0,[R7,#-8] ; risf 1837 08B4 0900 add R0,#1 ; qas 1838 08B6 7C9C str R0,[R7,#-8] ; qasmi 1839 08B8 E4CA bra dy93 ; anon 1840 dy94 ; anon 1841 ; } 1842 ; 1843 ; printf(" "); 1844 ; 1845 08BA 00F43F09 lod R0,#dy98 ; ltgd3 1846 ; force VR0 to 0 ; call 1847 08BE 67D1 mov r2,r7 ; call 1848 08C0 1009 sub r2,#16 ; call 1849 08C2 3CD89628 jsr _printf ; call 1850 ; force VR0 to 0 ; res 1851 ; for (i=0; i<16; i++) 1852 ; 1853 08C6 6000 lod R0,#0 ; lti 1854 08C8 7C9C str R0,[R7,#-8] ; assign 1855 dy99 ; anon 1856 08CA 7C8C lod R0,[R7,#-8] ; risf 1857 08CC 2808 cmp R0,#16 ; alu_i 1858 08CE 0CD80609 bge dy100 ; fjump F ; cfj 1859 ; { 1860 ; 1861 ; local t [R7,#-12] 1862 ; s 1863 08D2 7B8C lod R0,[R7,#-10] ; risf 1864 08D4 FC8C lod R1,[R7,#-8] ; risf 1865 08D6 09D0 add R0,R1 ; alu-l 1866 08D8 80A0 lodb R1,[R0] ; risf 1867 08DA FABC strb R1,[R7,#-12] ; assign 1868 ; uchar t = x[i]; 1869 ; 1870 ; 1871 ; 1872 ; if (t <32 || t >= 127) t = '.'; 1873 ; 1874 08DC 7AAC lodb R0,[R7,#-12] ; risf 1875 08DE 2810 cmp R0,#32 ; alu_i 1876 08E0 08D8EC08 blt dy101 ; ctj 1877 08E4 7AAC lodb R0,[R7,#-12] ; risf 1878 08E6 2F3C cmp R0,#127 ; alu_i 1879 08E8 08D8F008 blt dy102 ; fjump F ; cfj 1880 dy101 ; anon 1881 08EC 6614 lod R0,#46 ; lti 1882 08EE 7ABC strb R0,[R7,#-12] ; assign 1883 dy102 ; anon 1884 ; printf("%c", t); 1885 ; 1886 08F0 00F43C09 lod R0,#dy103 ; ltgd3 1887 08F4 FAAC lodb R1,[R7,#-12] ; risf 1888 ; force VR0 to 0 ; call 1889 ; force VR1 to 1 ; call 1890 08F6 67D1 mov r2,r7 ; call 1891 08F8 1209 sub r2,#18 ; call 1892 08FA 3CD89628 jsr _printf ; call 1893 ; force VR0 to 0 ; res 1894 08FE 7C8C lod R0,[R7,#-8] ; risf 1895 0900 0900 add R0,#1 ; qas 1896 0902 7C9C str R0,[R7,#-8] ; qasmi 1897 0904 E3CA bra dy99 ; anon 1898 dy100 ; anon 1899 ; } 1900 ; 1901 ; printf("\n"); 1902 ; 1903 0906 00F43A09 lod R0,#dy104 ; ltgd3 1904 ; force VR0 to 0 ; call 1905 090A 67D1 mov r2,r7 ; call 1906 090C 1009 sub r2,#16 ; call 1907 090E 3CD89628 jsr _printf ; call 1908 ; force VR0 to 0 ; res 1909 ; b += 16; 1910 ; 1911 0912 7E8C lod R0,[R7,#-4] ; risf 1912 0914 0808 add R0,#16 ; alu_i 1913 0916 7E9C str R0,[R7,#-4] ; assign 1914 ; if (checkend()) break; 1915 ; 1916 0918 67D1 mov r2,r7 ; call 1917 091A 1009 sub r2,#16 ; call 1918 091C 3CD82800 jsr _checkend ; call 1919 ; force VR0 to 0 ; res 1920 0920 2800 cmp R0,#0 ; gfv 1921 0922 00D82A09 beq dy105 ; fjmp1 ; cfj 1922 0926 28D82C09 bra dy91 ; anon 1923 dy105 ; anon 1924 092A 99CA bra dy90 ; anon 1925 dy91 ; anon 1926 ; } 1927 ; 1928 ; last_addr = b; 1929 ; 1930 092C 7E8C lod R0,[R7,#-4] ; risf 1931 092E 20D408DF str R0,_last_addr ; assign 1932 ; return 0; 1933 ; 1934 0932 6000 lod R0,#0 ; lti 1935 ; force VR0 to 0 ; loadtod0 1936 0934 7F8F lod R6,[R7,#-2] ; cr 1937 0936 808F lod r7,[r7] ; cr 1938 0938 00F3 ret ; cr 1939 093A 0A00 dy104 .data 10,0 1940 093C 256300 dy103 .data "%c",0 1941 093F 202000 dy98 .data " ",0 1942 0942 2000 dy97 .data " ",0 1943 0944 25303258 dy95 .data "%02X ",0 2000 1944 094A 25582020 dy92 .data "%X ",0 00 1945 1946 1947 ; Routine MDEL 1948 094F 00 .align 2 1949 _MDEL .global 1950 0950 809B str r7,[r2] 1951 0952 E2D3 mov r7,r2 1952 ; ------------------------------------------------- 1953 ; local i [R7,#-4] 1954 ; s 1955 ; } 1956 ; 1957 ; 1958 ; 1959 ; 1960 ; 1961 ; 1962 ; 1963 ; void MDEL() 1964 ; 1965 ; { 1966 ; 1967 ; volatile int i; 1968 ; 1969 ; for (i=0;i<100;i++) continue; 1970 ; 1971 0954 6000 lod R0,#0 ; lti 1972 0956 7E9C str R0,[R7,#-4] ; assign 1973 dy106 ; anon 1974 0958 7E8C lod R0,[R7,#-4] ; risf 1975 095A 2C30 cmp R0,#100 ; alu_i 1976 095C 0CD86C09 bge dy107 ; fjump F ; cfj 1977 0960 28D86409 bra dy108 ; anon 1978 dy108 ; anon 1979 0964 7E8C lod R0,[R7,#-4] ; risf 1980 0966 0900 add R0,#1 ; qas 1981 0968 7E9C str R0,[R7,#-4] ; qasmi 1982 096A F7CA bra dy106 ; anon 1983 dy107 ; anon 1984 096C 808F lod r7,[r7] ; cr 1985 096E 00F3 ret ; cr 1986 1987 1988 ; Routine mymon_dis 1989 .align 2 1990 _mymon_dis .global 1991 0970 809B str r7,[r2] 1992 0972 E2D3 mov r7,r2 1993 0974 7F9F str R6,[R7,#-2] 1994 0976 019C str R0,[R7,#2] 1995 ; ------------------------------------------------- 1996 ; local argv [R7,#2] 1997 ; s 1998 ; local b [R7,#-4] 1999 ; s 2000 0978 6000 lod R0,#0 ; lti 2001 097A 7E9C str R0,[R7,#-4] ; assign 2002 ; local l [R7,#-6] 2003 ; s 2004 097C 6408 lod R0,#20 ; lti 2005 097E 7D9C str R0,[R7,#-6] ; assign 2006 ; } 2007 ; 2008 ; 2009 ; 2010 ; extern void myadis(int, int); 2011 ; 2012 ; 2013 ; 2014 ; int mymon_dis(char **argv) 2015 ; 2016 ; { 2017 ; 2018 ; int b = 0; 2019 ; 2020 ; int l = 20; 2021 ; 2022 ; if (argv[1] && argv[1][0] != '.') b = rhex(argv[1]); else b = last_addr; 2023 ; 2024 0980 018C lod R0,[R7,#2] ; risf 2025 0982 0A00 add R0,#2 ; alu_i 2026 0984 8080 lod R1,[R0] ; risf 2027 0986 A800 cmp R1,#0 ; gfv 2028 0988 00D8AE09 beq dy109 ; fjmp1 ; cfj 2029 098C 018C lod R0,[R7,#2] ; risf 2030 098E 0A00 add R0,#2 ; alu_i 2031 0990 8080 lod R1,[R0] ; risf 2032 0992 00A4 lodb R0,[R1] ; risf 2033 0994 2E14 cmp R0,#46 ; alu_i 2034 0996 00D8AE09 beq dy109 ; fjump F ; cfj 2035 099A 818C lod R1,[R7,#2] ; risf 2036 099C 8A00 add R1,#2 ; alu_i 2037 099E 0084 lod R0,[R1] ; risf 2038 ; force VR0 to 0 ; call 2039 09A0 67D1 mov r2,r7 ; call 2040 09A2 1405 sub r2,#12 ; call 2041 09A4 3CD80E1E jsr _rhex ; call 2042 ; force VR0 to 0 ; res 2043 09A8 7E9C str R0,[R7,#-4] ; assign 2044 09AA 28D8B409 bra dy110 ; anon 2045 dy109 ; anon 2046 09AE 00D408DF lod R0,_last_addr ; ris 2047 09B2 7E9C str R0,[R7,#-4] ; assign 2048 dy110 ; anon 2049 ; if (argv[2]) l = rhex(argv[2]); 2050 ; 2051 09B4 018C lod R0,[R7,#2] ; risf 2052 09B6 0C00 add R0,#4 ; alu_i 2053 09B8 8080 lod R1,[R0] ; risf 2054 09BA A800 cmp R1,#0 ; gfv 2055 09BC 00D8D009 beq dy111 ; fjmp1 ; cfj 2056 09C0 818C lod R1,[R7,#2] ; risf 2057 09C2 8C00 add R1,#4 ; alu_i 2058 09C4 0084 lod R0,[R1] ; risf 2059 ; force VR0 to 0 ; call 2060 09C6 67D1 mov r2,r7 ; call 2061 09C8 1405 sub r2,#12 ; call 2062 09CA 3CD80E1E jsr _rhex ; call 2063 ; force VR0 to 0 ; res 2064 09CE 7D9C str R0,[R7,#-6] ; assign 2065 dy111 ; anon 2066 ; while (l-- > 0) 2067 ; 2068 dy112 ; anon 2069 09D0 7D8C lod R0,[R7,#-6] ; risf 2070 09D2 E0D0 mov R1,R0 ; qasp1 2071 09D4 9100 sub R1,#1 ; qasp 2072 09D6 FD9C str R1,[R7,#-6] ; qasp 2073 09D8 2800 cmp R0,#0 ; gfv 2074 09DA 14D8EA09 ble dy113 ; fjump F ; cfj 2075 ; { 2076 ; 2077 ; local x [R7,#-8] 2078 ; s 2079 09DE 7E8C lod R0,[R7,#-4] ; risf 2080 09E0 7C9C str R0,[R7,#-8] ; assign 2081 ; int *x = (int *) b; 2082 ; 2083 ; 2084 ; 2085 ; b += 4; 2086 ; 2087 09E2 7E8C lod R0,[R7,#-4] ; risf 2088 09E4 0C00 add R0,#4 ; alu_i 2089 09E6 7E9C str R0,[R7,#-4] ; assign 2090 09E8 F4CA bra dy112 ; anon 2091 dy113 ; anon 2092 ; } 2093 ; 2094 ; last_addr = b; 2095 ; 2096 09EA 7E8C lod R0,[R7,#-4] ; risf 2097 09EC 20D408DF str R0,_last_addr ; assign 2098 ; return 0; 2099 ; 2100 09F0 6000 lod R0,#0 ; lti 2101 ; force VR0 to 0 ; loadtod0 2102 09F2 7F8F lod R6,[R7,#-2] ; cr 2103 09F4 808F lod r7,[r7] ; cr 2104 09F6 00F3 ret ; cr 2105 2106 2107 ; Routine mymon_go 2108 .align 2 2109 _mymon_go .global 2110 09F8 809B str r7,[r2] 2111 09FA E2D3 mov r7,r2 2112 09FC 7F9F str R6,[R7,#-2] 2113 09FE 019C str R0,[R7,#2] 2114 ; ------------------------------------------------- 2115 ; local argv [R7,#2] 2116 ; s 2117 ; local f [R7,#-4] 2118 ; s 2119 ; local rc [R7,#-6] 2120 ; s 2121 ; } 2122 ; 2123 ; 2124 ; 2125 ; 2126 ; 2127 ; static int go_addr; 2128 ; 2129 ; 2130 ; 2131 ; mymon_go(char **argv) 2132 ; 2133 ; { 2134 ; 2135 ; int (*f)(); 2136 ; 2137 ; int rc; 2138 ; 2139 ; if (argv[1]) 2140 ; 2141 0A00 018C lod R0,[R7,#2] ; risf 2142 0A02 0A00 add R0,#2 ; alu_i 2143 0A04 8080 lod R1,[R0] ; risf 2144 0A06 A800 cmp R1,#0 ; gfv 2145 0A08 00D81E0A beq dy114 ; fjmp1 ; cfj 2146 ; { 2147 ; 2148 ; go_addr = rhex(argv[1]); 2149 ; 2150 0A0C 818C lod R1,[R7,#2] ; risf 2151 0A0E 8A00 add R1,#2 ; alu_i 2152 0A10 0084 lod R0,[R1] ; risf 2153 ; force VR0 to 0 ; call 2154 0A12 67D1 mov r2,r7 ; call 2155 0A14 1405 sub r2,#12 ; call 2156 0A16 3CD80E1E jsr _rhex ; call 2157 ; force VR0 to 0 ; res 2158 0A1A 20D40EDF str R0,_go_addr ; assign 2159 dy114 ; anon 2160 ; } 2161 ; 2162 ; printf("Execute at $%08X\n", go_addr); 2163 ; 2164 0A1E 00F4610A lod R0,#dy115 ; ltgd3 2165 0A22 80D40EDF lod R1,_go_addr ; ris 2166 ; force VR0 to 0 ; call 2167 ; force VR1 to 1 ; call 2168 0A26 67D1 mov r2,r7 ; call 2169 0A28 1405 sub r2,#12 ; call 2170 0A2A 3CD89628 jsr _printf ; call 2171 ; force VR0 to 0 ; res 2172 ; f = (int *) go_addr; 2173 ; 2174 0A2E 00D40EDF lod R0,_go_addr ; ris 2175 0A32 7E9C str R0,[R7,#-4] ; assign 2176 ; rc = f(argv); 2177 ; 2178 0A34 018C lod R0,[R7,#2] ; risf 2179 ; force VR0 to 0 ; call 2180 0A36 67D1 mov r2,r7 ; call 2181 0A38 1405 sub r2,#12 ; call 2182 0A3A 7E8C lod R0,[R7,#-4] ; risf 2183 0A3C 01F0 bxl R0 ; call 2184 ; force VR0 to 0 ; res 2185 0A3E 7D9C str R0,[R7,#-6] ; assign 2186 ; printf("Returned %i\n", rc); 2187 ; 2188 0A40 00F4540A lod R0,#dy116 ; ltgd3 2189 0A44 FD8C lod R1,[R7,#-6] ; risf 2190 ; force VR0 to 0 ; call 2191 ; force VR1 to 1 ; call 2192 0A46 67D1 mov r2,r7 ; call 2193 0A48 1405 sub r2,#12 ; call 2194 0A4A 3CD89628 jsr _printf ; call 2195 ; force VR0 to 0 ; res 2196 0A4E 7F8F lod R6,[R7,#-2] ; cr 2197 0A50 808F lod r7,[r7] ; cr 2198 0A52 00F3 ret ; cr 2199 0A54 52657475 dy116 .data "Returned %i",10,0 726E65642025690A00 2200 0A61 45786563 dy115 .data "Execute at $%08X",10,0 7574652061742024253038580A00 2201 2202 2203 ; Routine mymon_ma 2204 0A73 00 .align 2 2205 _mymon_ma .global 2206 0A74 809B str r7,[r2] 2207 0A76 E2D3 mov r7,r2 2208 0A78 7F9F str R6,[R7,#-2] 2209 0A7A 019C str R0,[R7,#2] 2210 0A7C 829C str R1,[R7,#4] 2211 ; ------------------------------------------------- 2212 ; local write [R7,#2] 2213 ; s 2214 ; local argv [R7,#4] 2215 ; s 2216 ; local b [R7,#-4] 2217 ; s 2218 0A7E 6000 lod R0,#0 ; lti 2219 0A80 7E9C str R0,[R7,#-4] ; assign 2220 ; local l [R7,#-6] 2221 ; s 2222 0A82 6000 lod R0,#0 ; lti 2223 0A84 7D9C str R0,[R7,#-6] ; assign 2224 ; local byte [R7,#-8] 2225 ; s 2226 ; local m [R7,#-10] 2227 ; s 2228 0A86 028C lod R0,[R7,#4] ; risf 2229 0A88 0A00 add R0,#2 ; alu_i 2230 0A8A 8080 lod R1,[R0] ; risf 2231 0A8C 00A4 lodb R0,[R1] ; risf 2232 ; force VR0 to 0 ; call 2233 0A8E 67D1 mov r2,r7 ; call 2234 0A90 1605 sub r2,#14 ; call 2235 0A92 3CD8A821 jsr _tolower ; call 2236 ; force VR0 to 0 ; res 2237 0A96 7BBC strb R0,[R7,#-10] ; assign 2238 ; } 2239 ; 2240 ; 2241 ; 2242 ; 2243 ; 2244 ; 2245 ; 2246 ; 2247 ; 2248 ; 2249 ; 2250 ; 2251 ; 2252 ; mymon_ma(int write, char **argv) 2253 ; 2254 ; { 2255 ; 2256 ; int b = 0; 2257 ; 2258 ; int l = 0; 2259 ; 2260 ; int byte; 2261 ; 2262 ; char m = tolower(argv[1][0]); 2263 ; 2264 ; if (m != 'b' && m != 'w') 2265 ; 2266 0A98 7BAC lodb R0,[R7,#-10] ; risf 2267 0A9A 2A30 cmp R0,#98 ; alu_i 2268 0A9C 00D8CE0A beq dy117 ; fjump F ; cfj 2269 0AA0 7BAC lodb R0,[R7,#-10] ; risf 2270 0AA2 2F38 cmp R0,#119 ; alu_i 2271 0AA4 00D8CE0A beq dy117 ; fjump F ; cfj 2272 ; { 2273 ; 2274 ; printf("Syntax %s b addr [times] for byte access\n", argv[0]); 2275 ; 2276 0AA8 00F4490C lod R0,#dy118 ; ltgd3 2277 0AAC 028D lod R2,[R7,#4] ; risf 2278 0AAE 8088 lod R1,[R2] ; risf 2279 ; force VR0 to 0 ; call 2280 ; force VR1 to 1 ; call 2281 0AB0 67D1 mov r2,r7 ; call 2282 0AB2 1009 sub r2,#16 ; call 2283 0AB4 3CD89628 jsr _printf ; call 2284 ; force VR0 to 0 ; res 2285 ; printf("Syntax %s w addr [times] for word access\n", argv[0]); 2286 ; 2287 0AB8 00F41A0C lod R0,#dy119 ; ltgd3 2288 0ABC 028D lod R2,[R7,#4] ; risf 2289 0ABE 8088 lod R1,[R2] ; risf 2290 ; force VR0 to 0 ; call 2291 ; force VR1 to 1 ; call 2292 0AC0 67D1 mov r2,r7 ; call 2293 0AC2 1009 sub r2,#16 ; call 2294 0AC4 3CD89628 jsr _printf ; call 2295 ; force VR0 to 0 ; res 2296 ; return; 2297 ; 2298 0AC8 7F8F lod R6,[R7,#-2] ; cr 2299 0ACA 808F lod r7,[r7] ; cr 2300 0ACC 00F3 ret ; cr 2301 dy117 ; anon 2302 ; } 2303 ; 2304 ; if (argv[2]) b = rhex(argv[2]); 2305 ; 2306 0ACE 028C lod R0,[R7,#4] ; risf 2307 0AD0 0C00 add R0,#4 ; alu_i 2308 0AD2 8080 lod R1,[R0] ; risf 2309 0AD4 A800 cmp R1,#0 ; gfv 2310 0AD6 00D8EA0A beq dy120 ; fjmp1 ; cfj 2311 0ADA 828C lod R1,[R7,#4] ; risf 2312 0ADC 8C00 add R1,#4 ; alu_i 2313 0ADE 0084 lod R0,[R1] ; risf 2314 ; force VR0 to 0 ; call 2315 0AE0 67D1 mov r2,r7 ; call 2316 0AE2 1009 sub r2,#16 ; call 2317 0AE4 3CD80E1E jsr _rhex ; call 2318 ; force VR0 to 0 ; res 2319 0AE8 7E9C str R0,[R7,#-4] ; assign 2320 dy120 ; anon 2321 ; if (argv[3]) l = rhex(argv[3]); 2322 ; 2323 0AEA 028C lod R0,[R7,#4] ; risf 2324 0AEC 0E00 add R0,#6 ; alu_i 2325 0AEE 8080 lod R1,[R0] ; risf 2326 0AF0 A800 cmp R1,#0 ; gfv 2327 0AF2 00D8060B beq dy121 ; fjmp1 ; cfj 2328 0AF6 828C lod R1,[R7,#4] ; risf 2329 0AF8 8E00 add R1,#6 ; alu_i 2330 0AFA 0084 lod R0,[R1] ; risf 2331 ; force VR0 to 0 ; call 2332 0AFC 67D1 mov r2,r7 ; call 2333 0AFE 1009 sub r2,#16 ; call 2334 0B00 3CD80E1E jsr _rhex ; call 2335 ; force VR0 to 0 ; res 2336 0B04 7D9C str R0,[R7,#-6] ; assign 2337 dy121 ; anon 2338 ; if (l) printf("Loop poll of address %08X, %i times \n", b, l); 2339 ; 2340 0B06 7D8C lod R0,[R7,#-6] ; risf 2341 0B08 2800 cmp R0,#0 ; gfv 2342 0B0A 00D8240B beq dy122 ; fjmp1 ; cfj 2343 0B0E 7D8C lod R0,[R7,#-6] ; risf 2344 0B10 7A9C str R0,[R7,#-12] ; assign 2345 0B12 00F4F40B lod R0,#dy123 ; ltgd3 2346 0B16 FE8C lod R1,[R7,#-4] ; risf 2347 ; force VR0 to 0 ; call 2348 ; force VR1 to 1 ; call 2349 0B18 67D1 mov r2,r7 ; call 2350 0B1A 1209 sub r2,#18 ; call 2351 0B1C 3CD89628 jsr _printf ; call 2352 ; force VR0 to 0 ; res 2353 0B20 28D8320B bra dy124 ; anon 2354 dy122 ; anon 2355 ; else printf("Loop poll of address %08X forever more\n", b); 2356 ; 2357 0B24 00F4CC0B lod R0,#dy125 ; ltgd3 2358 0B28 FE8C lod R1,[R7,#-4] ; risf 2359 ; force VR0 to 0 ; call 2360 ; force VR1 to 1 ; call 2361 0B2A 67D1 mov r2,r7 ; call 2362 0B2C 1009 sub r2,#16 ; call 2363 0B2E 3CD89628 jsr _printf ; call 2364 ; force VR0 to 0 ; res 2365 dy124 ; anon 2366 ; console_flags = 0; 2367 ; 2368 0B32 6000 lod R0,#0 ; lti 2369 0B34 20D400DF str R0,_console_flags ; assign 2370 ; while (l != 1) 2371 ; 2372 dy126 ; anon 2373 0B38 7D8C lod R0,[R7,#-6] ; risf 2374 0B3A 2900 cmp R0,#1 ; alu_i 2375 0B3C 00D8B40B beq dy127 ; fjump F ; cfj 2376 ; { 2377 ; 2378 ; local dummy [R7,#-12] 2379 ; s 2380 ; local wa [R7,#-14] 2381 ; s 2382 0B40 7E8C lod R0,[R7,#-4] ; risf 2383 0B42 799C str R0,[R7,#-14] ; assign 2384 ; local ba [R7,#-16] 2385 ; s 2386 0B44 7E8C lod R0,[R7,#-4] ; risf 2387 0B46 789C str R0,[R7,#-16] ; assign 2388 ; volatile int dummy; 2389 ; 2390 ; int *wa = (int *) b; 2391 ; 2392 ; uchar *ba = (uchar *) b; 2393 ; 2394 ; if (console_flags) break; 2395 ; 2396 0B48 00D400DF lod R0,_console_flags ; ris 2397 0B4C 2800 cmp R0,#0 ; gfv 2398 0B4E 00D8560B beq dy128 ; fjmp1 ; cfj 2399 0B52 28D8B40B bra dy127 ; anon 2400 dy128 ; anon 2401 ; if (l > 1) l -= 1; 2402 ; 2403 0B56 7D8C lod R0,[R7,#-6] ; risf 2404 0B58 2900 cmp R0,#1 ; alu_i 2405 0B5A 14D8640B ble dy129 ; fjump F ; cfj 2406 0B5E 7D8C lod R0,[R7,#-6] ; risf 2407 0B60 1100 sub R0,#1 ; alu_i 2408 0B62 7D9C str R0,[R7,#-6] ; assign 2409 dy129 ; anon 2410 ; if (m == b) 2411 ; 2412 0B64 7BAC lodb R0,[R7,#-10] ; risf 2413 0B66 FE8C lod R1,[R7,#-4] ; risf 2414 0B68 29D0 cmp R0,R1 ; alu-l 2415 0B6A 04D8920B bne dy130 ; fjump F ; cfj 2416 ; { 2417 ; 2418 ; if (write==0) dummy = *ba; else *ba = dummy++; 2419 ; 2420 0B6E 018C lod R0,[R7,#2] ; risf 2421 0B70 2800 cmp R0,#0 ; gfv 2422 0B72 04D8820B bne dy131 ; fjump F ; cfj 2423 0B76 788C lod R0,[R7,#-16] ; risf 2424 0B78 80A0 lodb R1,[R0] ; risf 2425 0B7A BF7C and R1,#255 ; ccti 2426 0B7C FA9C str R1,[R7,#-12] ; assign 2427 0B7E 28D88E0B bra dy132 ; anon 2428 dy131 ; anon 2429 0B82 FA8C lod R1,[R7,#-12] ; risf 2430 0B84 61D0 mov R0,R1 ; qasp1 2431 0B86 0900 add R0,#1 ; qasp 2432 0B88 7A9C str R0,[R7,#-12] ; qasp 2433 0B8A 788C lod R0,[R7,#-16] ; risf 2434 0B8C 80B0 strb R1,[R0] ; assign 2435 dy132 ; anon 2436 0B8E 28D8B20B bra dy133 ; anon 2437 dy130 ; anon 2438 ; } 2439 ; 2440 ; else 2441 ; 2442 ; { 2443 ; 2444 ; if (write==0) dummy = *wa; else *wa = dummy++; 2445 ; 2446 0B92 018C lod R0,[R7,#2] ; risf 2447 0B94 2800 cmp R0,#0 ; gfv 2448 0B96 04D8A40B bne dy134 ; fjump F ; cfj 2449 0B9A 798C lod R0,[R7,#-14] ; risf 2450 0B9C 80A0 lodb R1,[R0] ; risf 2451 0B9E FABC strb R1,[R7,#-12] ; assign 2452 0BA0 28D8B20B bra dy135 ; anon 2453 dy134 ; anon 2454 0BA4 FAAC lodb R1,[R7,#-12] ; risf 2455 0BA6 61D0 mov R0,R1 ; qasp1 2456 0BA8 0900 add R0,#1 ; qasp 2457 0BAA 7ABC strb R0,[R7,#-12] ; qasp 2458 0BAC BF7C and R1,#255 ; ccti 2459 0BAE 798C lod R0,[R7,#-14] ; risf 2460 0BB0 8090 str R1,[R0] ; assign 2461 dy135 ; anon 2462 dy133 ; anon 2463 0BB2 C3CA bra dy126 ; anon 2464 dy127 ; anon 2465 ; } 2466 ; 2467 ; } 2468 ; 2469 ; printf("Done\n"); 2470 ; 2471 0BB4 00F4C60B lod R0,#dy136 ; ltgd3 2472 ; force VR0 to 0 ; call 2473 0BB8 67D1 mov r2,r7 ; call 2474 0BBA 1009 sub r2,#16 ; call 2475 0BBC 3CD89628 jsr _printf ; call 2476 ; force VR0 to 0 ; res 2477 0BC0 7F8F lod R6,[R7,#-2] ; cr 2478 0BC2 808F lod r7,[r7] ; cr 2479 0BC4 00F3 ret ; cr 2480 0BC6 446F6E65 dy136 .data "Done",10,0 0A00 2481 0BCC 4C6F6F70 dy125 .data "Loop poll of address %08X forever more",10,0 20706F6C6C206F662061646472657373202530385820666F7265766572206D6F72650A00 2482 0BF4 4C6F6F70 dy123 .data "Loop poll of address %08X, %i times ",10,0 20706F6C6C206F66206164647265737320253038582C2025692074696D6573200A00 2483 0C1A 53796E74 dy119 .data "Syntax %s w addr [times] for word access",10,0 6178202020257320772061646472205B74696D65735D20202020666F7220776F7264206163636573730A00 2484 0C49 53796E74 dy118 .data "Syntax %s b addr [times] for byte access",10,0 6178202020257320622061646472205B74696D65735D20202020666F722062797465206163636573730A00 2485 2486 2487 ; Routine mymon_fill 2488 .align 2 2489 _mymon_fill .global 2490 0C78 809B str r7,[r2] 2491 0C7A E2D3 mov r7,r2 2492 0C7C 7F9F str R6,[R7,#-2] 2493 0C7E 019C str R0,[R7,#2] 2494 ; ------------------------------------------------- 2495 ; local argv [R7,#2] 2496 ; s 2497 ; local r [R7,#-4] 2498 ; s 2499 0C80 6000 lod R0,#0 ; lti 2500 0C82 7E9C str R0,[R7,#-4] ; assign 2501 ; } 2502 ; 2503 ; 2504 ; 2505 ; 2506 ; 2507 ; int mymon_fill(char **argv) 2508 ; 2509 ; { 2510 ; 2511 ; unsigned int r = 0; 2512 ; 2513 ; if (argv[1] && argv[2]) 2514 ; 2515 0C84 018C lod R0,[R7,#2] ; risf 2516 0C86 0A00 add R0,#2 ; alu_i 2517 0C88 8080 lod R1,[R0] ; risf 2518 0C8A A800 cmp R1,#0 ; gfv 2519 0C8C 00D8060D beq dy137 ; fjmp1 ; cfj 2520 0C90 018C lod R0,[R7,#2] ; risf 2521 0C92 0C00 add R0,#4 ; alu_i 2522 0C94 8080 lod R1,[R0] ; risf 2523 0C96 A800 cmp R1,#0 ; gfv 2524 0C98 00D8060D beq dy137 ; fjmp1 ; cfj 2525 ; { 2526 ; 2527 ; local start [R7,#-6] 2528 ; s 2529 0C9C 818C lod R1,[R7,#2] ; risf 2530 0C9E 8A00 add R1,#2 ; alu_i 2531 0CA0 0084 lod R0,[R1] ; risf 2532 ; force VR0 to 0 ; call 2533 0CA2 67D1 mov r2,r7 ; call 2534 0CA4 1205 sub r2,#10 ; call 2535 0CA6 3CD80E1E jsr _rhex ; call 2536 ; force VR0 to 0 ; res 2537 0CAA 7D9C str R0,[R7,#-6] ; assign 2538 ; local end [R7,#-8] 2539 ; s 2540 0CAC 818C lod R1,[R7,#2] ; risf 2541 0CAE 8C00 add R1,#4 ; alu_i 2542 0CB0 0084 lod R0,[R1] ; risf 2543 ; force VR0 to 0 ; call 2544 0CB2 67D1 mov r2,r7 ; call 2545 0CB4 1405 sub r2,#12 ; call 2546 0CB6 3CD80E1E jsr _rhex ; call 2547 ; force VR0 to 0 ; res 2548 0CBA 7C9C str R0,[R7,#-8] ; assign 2549 ; local s [R7,#-10] 2550 ; s 2551 0CBC 7D8C lod R0,[R7,#-6] ; risf 2552 0CBE 7B9C str R0,[R7,#-10] ; assign 2553 ; local val [R7,#-12] 2554 ; s 2555 0CC0 6000 lod R0,#0 ; lti 2556 0CC2 7A9C str R0,[R7,#-12] ; assign 2557 ; int *start = (int *) rhex(argv[1]); 2558 ; 2559 ; int *end = (int *) rhex(argv[2]); 2560 ; 2561 ; int *s = (int *) start; 2562 ; 2563 ; int val = 0; 2564 ; 2565 ; if (argv[3]) val = rhex(argv[3]); 2566 ; 2567 0CC4 018C lod R0,[R7,#2] ; risf 2568 0CC6 0E00 add R0,#6 ; alu_i 2569 0CC8 8080 lod R1,[R0] ; risf 2570 0CCA A800 cmp R1,#0 ; gfv 2571 0CCC 00D8E00C beq dy138 ; fjmp1 ; cfj 2572 0CD0 818C lod R1,[R7,#2] ; risf 2573 0CD2 8E00 add R1,#6 ; alu_i 2574 0CD4 0084 lod R0,[R1] ; risf 2575 ; force VR0 to 0 ; call 2576 0CD6 67D1 mov r2,r7 ; call 2577 0CD8 1209 sub r2,#18 ; call 2578 0CDA 3CD80E1E jsr _rhex ; call 2579 ; force VR0 to 0 ; res 2580 0CDE 7A9C str R0,[R7,#-12] ; assign 2581 dy138 ; anon 2582 ; while (s <= end) 2583 ; 2584 dy139 ; anon 2585 0CE0 7B8C lod R0,[R7,#-10] ; risf 2586 0CE2 FC8C lod R1,[R7,#-8] ; risf 2587 0CE4 29D0 cmp R0,R1 ; alu-l 2588 0CE6 5900 lsr R0,#1 ; ps 2589 0CE8 10D8FA0C bgt dy140 ; fjump F ; cfj 2590 ; { 2591 ; 2592 ; *s++ = val; 2593 ; 2594 0CEC 7B8C lod R0,[R7,#-10] ; risf 2595 0CEE E0D0 mov R1,R0 ; qasp1 2596 0CF0 8A00 add R1,#2 ; qasp 2597 0CF2 FB9C str R1,[R7,#-10] ; qasp 2598 0CF4 FA8C lod R1,[R7,#-12] ; risf 2599 0CF6 8090 str R1,[R0] ; assign 2600 0CF8 F4CA bra dy139 ; anon 2601 dy140 ; anon 2602 ; } 2603 ; 2604 ; printf("done\n"); 2605 ; 2606 0CFA 00F40E0D lod R0,#dy141 ; ltgd3 2607 ; force VR0 to 0 ; call 2608 0CFE 67D1 mov r2,r7 ; call 2609 0D00 1209 sub r2,#18 ; call 2610 0D02 3CD89628 jsr _printf ; call 2611 ; force VR0 to 0 ; res 2612 dy137 ; anon 2613 ; } 2614 ; 2615 ; return 0; 2616 ; 2617 0D06 6000 lod R0,#0 ; lti 2618 ; force VR0 to 0 ; loadtod0 2619 0D08 7F8F lod R6,[R7,#-2] ; cr 2620 0D0A 808F lod r7,[r7] ; cr 2621 0D0C 00F3 ret ; cr 2622 0D0E 646F6E65 dy141 .data "done",10,0 0A00 2623 2624 2625 ; Routine mymon_findl 2626 .align 2 2627 _mymon_findl .global 2628 0D14 809B str r7,[r2] 2629 0D16 E2D3 mov r7,r2 2630 0D18 7F9F str R6,[R7,#-2] 2631 0D1A 019C str R0,[R7,#2] 2632 ; ------------------------------------------------- 2633 ; local argv [R7,#2] 2634 ; s 2635 ; local r [R7,#-4] 2636 ; s 2637 0D1C 6000 lod R0,#0 ; lti 2638 0D1E 7E9C str R0,[R7,#-4] ; assign 2639 ; } 2640 ; 2641 ; 2642 ; 2643 ; int mymon_findl(char **argv) 2644 ; 2645 ; { 2646 ; 2647 ; unsigned int r = 0; 2648 ; 2649 ; if (argv[1] && argv[2] && argv[3]) 2650 ; 2651 0D20 018C lod R0,[R7,#2] ; risf 2652 0D22 0A00 add R0,#2 ; alu_i 2653 0D24 8080 lod R1,[R0] ; risf 2654 0D26 A800 cmp R1,#0 ; gfv 2655 0D28 00D8BE0D beq dy142 ; fjmp1 ; cfj 2656 0D2C 018C lod R0,[R7,#2] ; risf 2657 0D2E 0C00 add R0,#4 ; alu_i 2658 0D30 8080 lod R1,[R0] ; risf 2659 0D32 A800 cmp R1,#0 ; gfv 2660 0D34 00D8BE0D beq dy142 ; fjmp1 ; cfj 2661 0D38 018C lod R0,[R7,#2] ; risf 2662 0D3A 0E00 add R0,#6 ; alu_i 2663 0D3C 8080 lod R1,[R0] ; risf 2664 0D3E A800 cmp R1,#0 ; gfv 2665 0D40 00D8BE0D beq dy142 ; fjmp1 ; cfj 2666 ; { 2667 ; 2668 ; local start [R7,#-6] 2669 ; s 2670 0D44 818C lod R1,[R7,#2] ; risf 2671 0D46 8A00 add R1,#2 ; alu_i 2672 0D48 0084 lod R0,[R1] ; risf 2673 ; force VR0 to 0 ; call 2674 0D4A 67D1 mov r2,r7 ; call 2675 0D4C 1205 sub r2,#10 ; call 2676 0D4E 3CD80E1E jsr _rhex ; call 2677 ; force VR0 to 0 ; res 2678 0D52 7D9C str R0,[R7,#-6] ; assign 2679 ; local end [R7,#-8] 2680 ; s 2681 0D54 818C lod R1,[R7,#2] ; risf 2682 0D56 8C00 add R1,#4 ; alu_i 2683 0D58 0084 lod R0,[R1] ; risf 2684 ; force VR0 to 0 ; call 2685 0D5A 67D1 mov r2,r7 ; call 2686 0D5C 1405 sub r2,#12 ; call 2687 0D5E 3CD80E1E jsr _rhex ; call 2688 ; force VR0 to 0 ; res 2689 0D62 7C9C str R0,[R7,#-8] ; assign 2690 ; local s [R7,#-10] 2691 ; s 2692 0D64 7D8C lod R0,[R7,#-6] ; risf 2693 0D66 7B9C str R0,[R7,#-10] ; assign 2694 ; local val [R7,#-12] 2695 ; s 2696 0D68 818C lod R1,[R7,#2] ; risf 2697 0D6A 8E00 add R1,#6 ; alu_i 2698 0D6C 0084 lod R0,[R1] ; risf 2699 ; force VR0 to 0 ; call 2700 0D6E 67D1 mov r2,r7 ; call 2701 0D70 1009 sub r2,#16 ; call 2702 0D72 3CD80E1E jsr _rhex ; call 2703 ; force VR0 to 0 ; res 2704 0D76 7A9C str R0,[R7,#-12] ; assign 2705 ; int *start = (int *) rhex(argv[1]); 2706 ; 2707 ; int *end = (int *) rhex(argv[2]); 2708 ; 2709 ; int *s = (int *) start; 2710 ; 2711 ; int val = rhex(argv[3]); 2712 ; 2713 ; while (s <= end && s!= start) 2714 ; 2715 dy143 ; anon 2716 0D78 7B8C lod R0,[R7,#-10] ; risf 2717 0D7A FC8C lod R1,[R7,#-8] ; risf 2718 0D7C 29D0 cmp R0,R1 ; alu-l 2719 0D7E 5900 lsr R0,#1 ; ps 2720 0D80 10D8B20D bgt dy144 ; fjump F ; cfj 2721 0D84 7B8C lod R0,[R7,#-10] ; risf 2722 0D86 FD8C lod R1,[R7,#-6] ; risf 2723 0D88 29D0 cmp R0,R1 ; alu-l 2724 0D8A 5900 lsr R0,#1 ; ps 2725 0D8C 00D8B20D beq dy144 ; fjump F ; cfj 2726 ; { 2727 ; 2728 ; if (*s == val) printf("Found at %x ", s); 2729 ; 2730 0D90 7B8C lod R0,[R7,#-10] ; risf 2731 0D92 8080 lod R1,[R0] ; risf 2732 0D94 7A8C lod R0,[R7,#-12] ; risf 2733 0D96 A8D0 cmp R1,R0 ; alu-l 2734 0D98 04D8AA0D bne dy145 ; fjump F ; cfj 2735 0D9C 00F4D00D lod R0,#dy146 ; ltgd3 2736 0DA0 FB8C lod R1,[R7,#-10] ; risf 2737 ; force VR0 to 0 ; call 2738 ; force VR1 to 1 ; call 2739 0DA2 67D1 mov r2,r7 ; call 2740 0DA4 1209 sub r2,#18 ; call 2741 0DA6 3CD89628 jsr _printf ; call 2742 ; force VR0 to 0 ; res 2743 dy145 ; anon 2744 ; s++; 2745 ; 2746 0DAA 7B8C lod R0,[R7,#-10] ; risf 2747 0DAC 0A00 add R0,#2 ; qas 2748 0DAE 7B9C str R0,[R7,#-10] ; qasmi 2749 0DB0 E4CA bra dy143 ; anon 2750 dy144 ; anon 2751 ; } 2752 ; 2753 ; printf("... done\n"); 2754 ; 2755 0DB2 00F4C60D lod R0,#dy147 ; ltgd3 2756 ; force VR0 to 0 ; call 2757 0DB6 67D1 mov r2,r7 ; call 2758 0DB8 1209 sub r2,#18 ; call 2759 0DBA 3CD89628 jsr _printf ; call 2760 ; force VR0 to 0 ; res 2761 dy142 ; anon 2762 ; } 2763 ; 2764 ; return 0; 2765 ; 2766 0DBE 6000 lod R0,#0 ; lti 2767 ; force VR0 to 0 ; loadtod0 2768 0DC0 7F8F lod R6,[R7,#-2] ; cr 2769 0DC2 808F lod r7,[r7] ; cr 2770 0DC4 00F3 ret ; cr 2771 0DC6 2E2E2E20 dy147 .data "... done",10,0 646F6E650A00 2772 0DD0 466F756E dy146 .data "Found at %x ",0 642061742025782000 2773 2774 2775 ; Routine mymon_findb 2776 0DDD 00 .align 2 2777 _mymon_findb .global 2778 0DDE 809B str r7,[r2] 2779 0DE0 E2D3 mov r7,r2 2780 0DE2 7F9F str R6,[R7,#-2] 2781 0DE4 019C str R0,[R7,#2] 2782 ; ------------------------------------------------- 2783 ; local argv [R7,#2] 2784 ; s 2785 ; local r [R7,#-4] 2786 ; s 2787 0DE6 6000 lod R0,#0 ; lti 2788 0DE8 7E9C str R0,[R7,#-4] ; assign 2789 ; 2790 ; 2791 ; } 2792 ; 2793 ; 2794 ; 2795 ; 2796 ; 2797 ; int mymon_findb(char **argv) 2798 ; 2799 ; { 2800 ; 2801 ; unsigned int r = 0; 2802 ; 2803 ; if (argv[1] && argv[2] && argv[3]) 2804 ; 2805 0DEA 018C lod R0,[R7,#2] ; risf 2806 0DEC 0A00 add R0,#2 ; alu_i 2807 0DEE 8080 lod R1,[R0] ; risf 2808 0DF0 A800 cmp R1,#0 ; gfv 2809 0DF2 00D87A0E beq dy148 ; fjmp1 ; cfj 2810 0DF6 018C lod R0,[R7,#2] ; risf 2811 0DF8 0C00 add R0,#4 ; alu_i 2812 0DFA 8080 lod R1,[R0] ; risf 2813 0DFC A800 cmp R1,#0 ; gfv 2814 0DFE 00D87A0E beq dy148 ; fjmp1 ; cfj 2815 0E02 018C lod R0,[R7,#2] ; risf 2816 0E04 0E00 add R0,#6 ; alu_i 2817 0E06 8080 lod R1,[R0] ; risf 2818 0E08 A800 cmp R1,#0 ; gfv 2819 0E0A 00D87A0E beq dy148 ; fjmp1 ; cfj 2820 ; { 2821 ; 2822 ; local start [R7,#-6] 2823 ; s 2824 0E0E 818C lod R1,[R7,#2] ; risf 2825 0E10 8A00 add R1,#2 ; alu_i 2826 0E12 0084 lod R0,[R1] ; risf 2827 ; force VR0 to 0 ; call 2828 0E14 67D1 mov r2,r7 ; call 2829 0E16 1205 sub r2,#10 ; call 2830 0E18 3CD80E1E jsr _rhex ; call 2831 ; force VR0 to 0 ; res 2832 0E1C 7D9C str R0,[R7,#-6] ; assign 2833 ; local end [R7,#-8] 2834 ; s 2835 0E1E 818C lod R1,[R7,#2] ; risf 2836 0E20 8C00 add R1,#4 ; alu_i 2837 0E22 0084 lod R0,[R1] ; risf 2838 ; force VR0 to 0 ; call 2839 0E24 67D1 mov r2,r7 ; call 2840 0E26 1405 sub r2,#12 ; call 2841 0E28 3CD80E1E jsr _rhex ; call 2842 ; force VR0 to 0 ; res 2843 0E2C 7C9C str R0,[R7,#-8] ; assign 2844 ; local s [R7,#-10] 2845 ; s 2846 0E2E 7D8C lod R0,[R7,#-6] ; risf 2847 0E30 7B9C str R0,[R7,#-10] ; assign 2848 ; local val [R7,#-12] 2849 ; s 2850 0E32 818C lod R1,[R7,#2] ; risf 2851 0E34 8E00 add R1,#6 ; alu_i 2852 0E36 0084 lod R0,[R1] ; risf 2853 ; force VR0 to 0 ; call 2854 0E38 67D1 mov r2,r7 ; call 2855 0E3A 1009 sub r2,#16 ; call 2856 0E3C 3CD80E1E jsr _rhex ; call 2857 ; force VR0 to 0 ; res 2858 0E40 7A9C str R0,[R7,#-12] ; assign 2859 ; char *start = (char *) rhex(argv[1]); 2860 ; 2861 ; char *end = (char *) rhex(argv[2]); 2862 ; 2863 ; char *s = (char *) start; 2864 ; 2865 ; int val = rhex(argv[3]); 2866 ; 2867 ; while (s <= end) 2868 ; 2869 dy149 ; anon 2870 0E42 7B8C lod R0,[R7,#-10] ; risf 2871 0E44 FC8C lod R1,[R7,#-8] ; risf 2872 0E46 29D0 cmp R0,R1 ; alu-l 2873 0E48 10D86E0E bgt dy150 ; fjump F ; cfj 2874 ; { 2875 ; 2876 ; if (*s == val) printf("Found at %x ", s); 2877 ; 2878 0E4C 7B8C lod R0,[R7,#-10] ; risf 2879 0E4E 80A0 lodb R1,[R0] ; risf 2880 0E50 7A8C lod R0,[R7,#-12] ; risf 2881 0E52 A8D0 cmp R1,R0 ; alu-l 2882 0E54 04D8660E bne dy151 ; fjump F ; cfj 2883 0E58 00F48C0E lod R0,#dy152 ; ltgd3 2884 0E5C FB8C lod R1,[R7,#-10] ; risf 2885 ; force VR0 to 0 ; call 2886 ; force VR1 to 1 ; call 2887 0E5E 67D1 mov r2,r7 ; call 2888 0E60 1209 sub r2,#18 ; call 2889 0E62 3CD89628 jsr _printf ; call 2890 ; force VR0 to 0 ; res 2891 dy151 ; anon 2892 ; s++; 2893 ; 2894 0E66 7B8C lod R0,[R7,#-10] ; risf 2895 0E68 0900 add R0,#1 ; qas 2896 0E6A 7B9C str R0,[R7,#-10] ; qasmi 2897 0E6C EBCA bra dy149 ; anon 2898 dy150 ; anon 2899 ; } 2900 ; 2901 ; printf("... done\n"); 2902 ; 2903 0E6E 00F4820E lod R0,#dy153 ; ltgd3 2904 ; force VR0 to 0 ; call 2905 0E72 67D1 mov r2,r7 ; call 2906 0E74 1209 sub r2,#18 ; call 2907 0E76 3CD89628 jsr _printf ; call 2908 ; force VR0 to 0 ; res 2909 dy148 ; anon 2910 ; } 2911 ; 2912 ; return 0; 2913 ; 2914 0E7A 6000 lod R0,#0 ; lti 2915 ; force VR0 to 0 ; loadtod0 2916 0E7C 7F8F lod R6,[R7,#-2] ; cr 2917 0E7E 808F lod r7,[r7] ; cr 2918 0E80 00F3 ret ; cr 2919 0E82 2E2E2E20 dy153 .data "... done",10,0 646F6E650A00 2920 0E8C 466F756E dy152 .data "Found at %x ",0 642061742025782000 2921 2922 2923 ; Routine mymon_bp 2924 0E99 00 .align 2 2925 _mymon_bp .global 2926 0E9A 809B str r7,[r2] 2927 0E9C E2D3 mov r7,r2 2928 0E9E 7F9F str R6,[R7,#-2] 2929 0EA0 019C str R0,[R7,#2] 2930 ; ------------------------------------------------- 2931 ; local argv [R7,#2] 2932 ; s 2933 ; } 2934 ; 2935 ; } 2936 ; 2937 ; 2938 ; 2939 ; 2940 ; 2941 ; 2942 ; 2943 ; extern void clear_breakpoint(); 2944 ; 2945 ; extern void install_breakpoint(int); 2946 ; 2947 ; extern int bptaddr; 2948 ; 2949 ; mymon_bp(char **argv) 2950 ; 2951 ; { 2952 ; 2953 ; if (argv[1] && strcmp(argv[1], "clear")==0) 2954 ; 2955 0EA2 018C lod R0,[R7,#2] ; risf 2956 0EA4 0A00 add R0,#2 ; alu_i 2957 0EA6 8080 lod R1,[R0] ; risf 2958 0EA8 A800 cmp R1,#0 ; gfv 2959 0EAA 00D8D20E beq dy154 ; fjmp1 ; cfj 2960 0EAE 818C lod R1,[R7,#2] ; risf 2961 0EB0 8A00 add R1,#2 ; alu_i 2962 0EB2 0084 lod R0,[R1] ; risf 2963 0EB4 80F41E0F lod R1,#dy155 ; ltgd3 2964 ; force VR0 to 0 ; call 2965 ; force VR1 to 1 ; call 2966 0EB8 67D1 mov r2,r7 ; call 2967 0EBA 1005 sub r2,#8 ; call 2968 0EBC 3CD81822 jsr _strcmp ; call 2969 ; force VR0 to 0 ; res 2970 0EC0 2800 cmp R0,#0 ; gfv 2971 0EC2 04D8D20E bne dy154 ; fjump F ; cfj 2972 ; { 2973 ; 2974 ; clear_breakpoint(); 2975 ; 2976 0EC6 67D1 mov r2,r7 ; call 2977 0EC8 1005 sub r2,#8 ; call 2978 0ECA 3CD83400 jsr _clear_breakpoint ; call 2979 ; force VR0 to 0 ; res 2980 0ECE 28D80C0F bra dy156 ; anon 2981 dy154 ; anon 2982 ; } 2983 ; 2984 ; else if (argv[1]) 2985 ; 2986 0ED2 018C lod R0,[R7,#2] ; risf 2987 0ED4 0A00 add R0,#2 ; alu_i 2988 0ED6 8080 lod R1,[R0] ; risf 2989 0ED8 A800 cmp R1,#0 ; gfv 2990 0EDA 00D8FC0E beq dy157 ; fjmp1 ; cfj 2991 ; { 2992 ; 2993 ; local a [R7,#-4] 2994 ; s 2995 0EDE 818C lod R1,[R7,#2] ; risf 2996 0EE0 8A00 add R1,#2 ; alu_i 2997 0EE2 0084 lod R0,[R1] ; risf 2998 ; force VR0 to 0 ; call 2999 0EE4 67D1 mov r2,r7 ; call 3000 0EE6 1005 sub r2,#8 ; call 3001 0EE8 3CD80E1E jsr _rhex ; call 3002 ; force VR0 to 0 ; res 3003 0EEC 7E9C str R0,[R7,#-4] ; assign 3004 ; int a = rhex(argv[1]); 3005 ; 3006 ; install_breakpoint(a); 3007 ; 3008 0EEE 7E8C lod R0,[R7,#-4] ; risf 3009 ; force VR0 to 0 ; call 3010 0EF0 67D1 mov r2,r7 ; call 3011 0EF2 1205 sub r2,#10 ; call 3012 0EF4 3CD83400 jsr _install_breakpoint ; call 3013 ; force VR0 to 0 ; res 3014 0EF8 28D80C0F bra dy158 ; anon 3015 dy157 ; anon 3016 ; } 3017 ; 3018 ; else printf("bp at %08X\n", bptaddr); 3019 ; 3020 0EFC 00F4120F lod R0,#dy159 ; ltgd3 3021 0F00 80D402DF lod R1,_bptaddr ; ris 3022 ; force VR0 to 0 ; call 3023 ; force VR1 to 1 ; call 3024 0F04 67D1 mov r2,r7 ; call 3025 0F06 1005 sub r2,#8 ; call 3026 0F08 3CD89628 jsr _printf ; call 3027 ; force VR0 to 0 ; res 3028 dy158 ; anon 3029 dy156 ; anon 3030 0F0C 7F8F lod R6,[R7,#-2] ; cr 3031 0F0E 808F lod r7,[r7] ; cr 3032 0F10 00F3 ret ; cr 3033 0F12 62702061 dy159 .data "bp at %08X",10,0 7420253038580A00 3034 0F1E 636C6561 dy155 .data "clear",0 7200 3035 3036 3037 ; Routine mymon_mm 3038 ; forced litpool here 3039 .align 2 3040 _mymon_mm .global 3041 0F24 809B str r7,[r2] 3042 0F26 E2D3 mov r7,r2 3043 0F28 7F9F str R6,[R7,#-2] 3044 0F2A 019C str R0,[R7,#2] 3045 ; ------------------------------------------------- 3046 ; local argv [R7,#2] 3047 ; s 3048 ; local b [R7,#-4] 3049 ; s 3050 0F2C 6000 lod R0,#0 ; lti 3051 0F2E 7E9C str R0,[R7,#-4] ; assign 3052 ; local byte [R7,#-6] 3053 ; s 3054 ; local fixf [R7,#-8] 3055 ; s 3056 0F30 6000 lod R0,#0 ; lti 3057 0F32 7C9C str R0,[R7,#-8] ; assign 3058 ; local m [R7,#-10] 3059 ; s 3060 ; } 3061 ; 3062 ; 3063 ; 3064 ; 3065 ; 3066 ; mymon_mm(char **argv) 3067 ; 3068 ; { 3069 ; 3070 ; int b = 0; 3071 ; 3072 ; int byte; 3073 ; 3074 ; int fixf = 0; 3075 ; 3076 ; char m; 3077 ; 3078 ; if (!strcmp(argv[1], "-fix")) 3079 ; 3080 0F34 818C lod R1,[R7,#2] ; risf 3081 0F36 8A00 add R1,#2 ; alu_i 3082 0F38 0084 lod R0,[R1] ; risf 3083 0F3A 80F4A211 lod R1,#dy160 ; ltgd3 3084 ; force VR0 to 0 ; call 3085 ; force VR1 to 1 ; call 3086 0F3E 67D1 mov r2,r7 ; call 3087 0F40 1009 sub r2,#16 ; call 3088 0F42 3CD81822 jsr _strcmp ; call 3089 ; force VR0 to 0 ; res 3090 0F46 E000 lod R1,#0 ; neg 3091 0F48 2800 cmp R0,#0 ; gfv 3092 0F4A 00D8500F beq dy161 ; anon 3093 0F4E 8900 add R1,#1 ; neg 3094 dy161 ; anon 3095 0F50 A800 cmp R1,#0 ; gfv 3096 0F52 00D86C0F beq dy162 ; fjmp1 ; cfj 3097 ; { 3098 ; 3099 ; fixf = 1; 3100 ; 3101 0F56 6100 lod R0,#1 ; lti 3102 0F58 7C9C str R0,[R7,#-8] ; assign 3103 ; printf("FIX\n"); 3104 ; 3105 0F5A 00F49D11 lod R0,#dy163 ; ltgd3 3106 ; force VR0 to 0 ; call 3107 0F5E 67D1 mov r2,r7 ; call 3108 0F60 1009 sub r2,#16 ; call 3109 0F62 3CD89628 jsr _printf ; call 3110 ; force VR0 to 0 ; res 3111 ; argv ++; 3112 ; 3113 0F66 018C lod R0,[R7,#2] ; risf 3114 0F68 0A00 add R0,#2 ; qas 3115 0F6A 019C str R0,[R7,#2] ; qasmi 3116 dy162 ; anon 3117 ; } 3118 ; 3119 ; m = tolower(argv[1][0]); 3120 ; 3121 0F6C 018C lod R0,[R7,#2] ; risf 3122 0F6E 0A00 add R0,#2 ; alu_i 3123 0F70 8080 lod R1,[R0] ; risf 3124 0F72 00A4 lodb R0,[R1] ; risf 3125 ; force VR0 to 0 ; call 3126 0F74 67D1 mov r2,r7 ; call 3127 0F76 1009 sub r2,#16 ; call 3128 0F78 3CD8A821 jsr _tolower ; call 3129 ; force VR0 to 0 ; res 3130 0F7C 7BBC strb R0,[R7,#-10] ; assign 3131 ; if (m != 'b' && m != 'w') 3132 ; 3133 0F7E 7BAC lodb R0,[R7,#-10] ; risf 3134 0F80 2A30 cmp R0,#98 ; alu_i 3135 0F82 00D8AC0F beq dy164 ; fjump F ; cfj 3136 0F86 7BAC lodb R0,[R7,#-10] ; risf 3137 0F88 2F38 cmp R0,#119 ; alu_i 3138 0F8A 00D8AC0F beq dy164 ; fjump F ; cfj 3139 ; { 3140 ; 3141 ; printf("Syntax mm [-fix] b addr for byte access\n"); 3142 ; 3143 0F8E 00F47011 lod R0,#dy165 ; ltgd3 3144 ; force VR0 to 0 ; call 3145 0F92 67D1 mov r2,r7 ; call 3146 0F94 1009 sub r2,#16 ; call 3147 0F96 3CD89628 jsr _printf ; call 3148 ; force VR0 to 0 ; res 3149 ; printf("Syntax mm [-fix] w addr for word access\n"); 3150 ; 3151 0F9A 00F44311 lod R0,#dy166 ; ltgd3 3152 ; force VR0 to 0 ; call 3153 0F9E 67D1 mov r2,r7 ; call 3154 0FA0 1009 sub r2,#16 ; call 3155 0FA2 3CD89628 jsr _printf ; call 3156 ; force VR0 to 0 ; res 3157 ; return; 3158 ; 3159 0FA6 7F8F lod R6,[R7,#-2] ; cr 3160 0FA8 808F lod r7,[r7] ; cr 3161 0FAA 00F3 ret ; cr 3162 dy164 ; anon 3163 ; } 3164 ; 3165 ; if (argv[2]) b = rhex(argv[2]); 3166 ; 3167 0FAC 018C lod R0,[R7,#2] ; risf 3168 0FAE 0C00 add R0,#4 ; alu_i 3169 0FB0 8080 lod R1,[R0] ; risf 3170 0FB2 A800 cmp R1,#0 ; gfv 3171 0FB4 00D8C80F beq dy167 ; fjmp1 ; cfj 3172 0FB8 818C lod R1,[R7,#2] ; risf 3173 0FBA 8C00 add R1,#4 ; alu_i 3174 0FBC 0084 lod R0,[R1] ; risf 3175 ; force VR0 to 0 ; call 3176 0FBE 67D1 mov r2,r7 ; call 3177 0FC0 1009 sub r2,#16 ; call 3178 0FC2 3CD80E1E jsr _rhex ; call 3179 ; force VR0 to 0 ; res 3180 0FC6 7E9C str R0,[R7,#-4] ; assign 3181 dy167 ; anon 3182 ; while (1) 3183 ; 3184 dy168 ; anon 3185 ; { 3186 ; 3187 ; local ba [R7,#-12] 3188 ; s 3189 0FC8 7E8C lod R0,[R7,#-4] ; risf 3190 0FCA 7A9C str R0,[R7,#-12] ; assign 3191 ; local wa [R7,#-14] 3192 ; s 3193 0FCC 7E8C lod R0,[R7,#-4] ; risf 3194 0FCE 799C str R0,[R7,#-14] ; assign 3195 ; volatile uchar *ba = (uchar *) b; 3196 ; 3197 ; volatile int *wa = (int *) b; 3198 ; 3199 ; printf("%08X ", b); 3200 ; 3201 0FD0 00F43D11 lod R0,#dy170 ; ltgd3 3202 0FD4 FE8C lod R1,[R7,#-4] ; risf 3203 ; force VR0 to 0 ; call 3204 ; force VR1 to 1 ; call 3205 0FD6 67D1 mov r2,r7 ; call 3206 0FD8 1409 sub r2,#20 ; call 3207 0FDA 3CD89628 jsr _printf ; call 3208 ; force VR0 to 0 ; res 3209 ; if (m == 'b') printf("%02X >", *ba); 3210 ; 3211 0FDE 7BAC lodb R0,[R7,#-10] ; risf 3212 0FE0 2A30 cmp R0,#98 ; alu_i 3213 0FE2 04D8F60F bne dy171 ; fjump F ; cfj 3214 0FE6 00F43611 lod R0,#dy172 ; ltgd3 3215 0FEA 7A8D lod R2,[R7,#-12] ; risf 3216 0FEC 80A8 lodb R1,[R2] ; risf 3217 ; force VR0 to 0 ; call 3218 ; force VR1 to 1 ; call 3219 0FEE 67D1 mov r2,r7 ; call 3220 0FF0 1409 sub r2,#20 ; call 3221 0FF2 3CD89628 jsr _printf ; call 3222 ; force VR0 to 0 ; res 3223 dy171 ; anon 3224 ; if (m == 'w') printf("%08X >", *wa); 3225 ; 3226 0FF6 7BAC lodb R0,[R7,#-10] ; risf 3227 0FF8 2F38 cmp R0,#119 ; alu_i 3228 0FFA 04D80E10 bne dy173 ; fjump F ; cfj 3229 0FFE 00F42F11 lod R0,#dy174 ; ltgd3 3230 1002 798D lod R2,[R7,#-14] ; risf 3231 1004 8088 lod R1,[R2] ; risf 3232 ; force VR0 to 0 ; call 3233 ; force VR1 to 1 ; call 3234 1006 67D1 mov r2,r7 ; call 3235 1008 1409 sub r2,#20 ; call 3236 100A 3CD89628 jsr _printf ; call 3237 ; force VR0 to 0 ; res 3238 dy173 ; anon 3239 ; argv = shell_parse(readcookedline_pe(0, 1)); 3240 ; 3241 100E 6000 lod R0,#0 ; lti 3242 1010 E100 lod R1,#1 ; lti 3243 ; force VR0 to 0 ; call 3244 ; force VR1 to 1 ; call 3245 1012 67D1 mov r2,r7 ; call 3246 1014 1409 sub r2,#20 ; call 3247 1016 3CD8FC16 jsr _readcookedline_pe ; call 3248 ; force VR0 to 0 ; res 3249 ; force VR0 to 0 ; call 3250 101A 67D1 mov r2,r7 ; call 3251 101C 1409 sub r2,#20 ; call 3252 101E 3CD87E16 jsr _shell_parse ; call 3253 ; force VR0 to 0 ; res 3254 1022 019C str R0,[R7,#2] ; assign 3255 ; if (argv[0][0] == '.' || argv[0][0] == 'q') return; 3256 ; 3257 1024 018C lod R0,[R7,#2] ; risf 3258 1026 8080 lod R1,[R0] ; risf 3259 1028 00A4 lodb R0,[R1] ; risf 3260 102A 2E14 cmp R0,#46 ; alu_i 3261 102C 00D83C10 beq dy175 ; ctj 3262 1030 018C lod R0,[R7,#2] ; risf 3263 1032 8080 lod R1,[R0] ; risf 3264 1034 00A4 lodb R0,[R1] ; risf 3265 1036 2938 cmp R0,#113 ; alu_i 3266 1038 04D84210 bne dy176 ; fjump F ; cfj 3267 dy175 ; anon 3268 103C 7F8F lod R6,[R7,#-2] ; cr 3269 103E 808F lod r7,[r7] ; cr 3270 1040 00F3 ret ; cr 3271 dy176 ; anon 3272 ; if (argv[0][0] == '-' || argv[0][0] == '^') 3273 ; 3274 1042 018C lod R0,[R7,#2] ; risf 3275 1044 8080 lod R1,[R0] ; risf 3276 1046 00A4 lodb R0,[R1] ; risf 3277 1048 2D14 cmp R0,#45 ; alu_i 3278 104A 00D85A10 beq dy177 ; ctj 3279 104E 018C lod R0,[R7,#2] ; risf 3280 1050 8080 lod R1,[R0] ; risf 3281 1052 00A4 lodb R0,[R1] ; risf 3282 1054 2E2C cmp R0,#94 ; alu_i 3283 1056 04D87410 bne dy178 ; fjump F ; cfj 3284 dy177 ; anon 3285 ; { 3286 ; 3287 ; if (m == 'b') b -= 1; else b -= 4; 3288 ; 3289 105A 7BAC lodb R0,[R7,#-10] ; risf 3290 105C 2A30 cmp R0,#98 ; alu_i 3291 105E 04D86C10 bne dy179 ; fjump F ; cfj 3292 1062 7E8C lod R0,[R7,#-4] ; risf 3293 1064 1100 sub R0,#1 ; alu_i 3294 1066 7E9C str R0,[R7,#-4] ; assign 3295 1068 28D87210 bra dy180 ; anon 3296 dy179 ; anon 3297 106C 7E8C lod R0,[R7,#-4] ; risf 3298 106E 1400 sub R0,#4 ; alu_i 3299 1070 7E9C str R0,[R7,#-4] ; assign 3300 dy180 ; anon 3301 ; continue; 3302 ; 3303 1072 ABCA bra dy168 ; anon 3304 dy178 ; anon 3305 ; } 3306 ; 3307 ; if (strlen(argv[0])) 3308 ; 3309 1074 818C lod R1,[R7,#2] ; risf 3310 1076 0084 lod R0,[R1] ; risf 3311 ; force VR0 to 0 ; call 3312 1078 67D1 mov r2,r7 ; call 3313 107A 1409 sub r2,#20 ; call 3314 107C 3CD8AA2A jsr _strlen ; call 3315 ; force VR0 to 0 ; res 3316 1080 2800 cmp R0,#0 ; gfv 3317 1082 00D8FA10 beq dy181 ; fjmp1 ; cfj 3318 ; { 3319 ; 3320 ; local e [R7,#-16] 3321 ; s 3322 1086 6000 lod R0,#0 ; lti 3323 1088 789C str R0,[R7,#-16] ; assign 3324 ; local v [R7,#-18] 3325 ; s 3326 108A 818C lod R1,[R7,#2] ; risf 3327 108C 0084 lod R0,[R1] ; risf 3328 ; force VR0 to 0 ; call 3329 108E 67D1 mov r2,r7 ; call 3330 1090 1609 sub r2,#22 ; call 3331 1092 3CD80E1E jsr _rhex ; call 3332 ; force VR0 to 0 ; res 3333 1096 779C str R0,[R7,#-18] ; assign 3334 ; int e = 0; 3335 ; 3336 ; int v = rhex(argv[0]); 3337 ; 3338 ; if (m == 'b') *ba = v; else *wa = v; 3339 ; 3340 1098 7BAC lodb R0,[R7,#-10] ; risf 3341 109A 2A30 cmp R0,#98 ; alu_i 3342 109C 04D8AA10 bne dy182 ; fjump F ; cfj 3343 10A0 F7AC lodb R1,[R7,#-18] ; risf 3344 10A2 7A8C lod R0,[R7,#-12] ; risf 3345 10A4 80B0 strb R1,[R0] ; assign 3346 10A6 28D8B210 bra dy183 ; anon 3347 dy182 ; anon 3348 10AA F7AC lodb R1,[R7,#-18] ; risf 3349 10AC BF7C and R1,#255 ; ccti 3350 10AE 798C lod R0,[R7,#-14] ; risf 3351 10B0 8090 str R1,[R0] ; assign 3352 dy183 ; anon 3353 ; if (m == 'b' && *ba != v) e = 1; 3354 ; 3355 10B2 7BAC lodb R0,[R7,#-10] ; risf 3356 10B4 2A30 cmp R0,#98 ; alu_i 3357 10B6 04D8CA10 bne dy184 ; fjump F ; cfj 3358 10BA 7A8C lod R0,[R7,#-12] ; risf 3359 10BC 80A0 lodb R1,[R0] ; risf 3360 10BE 77AC lodb R0,[R7,#-18] ; risf 3361 10C0 A8D0 cmp R1,R0 ; alu-l 3362 10C2 00D8CA10 beq dy184 ; fjump F ; cfj 3363 10C6 6100 lod R0,#1 ; lti 3364 10C8 789C str R0,[R7,#-16] ; assign 3365 dy184 ; anon 3366 ; if (m == 'w' && *wa != v) e = 1; 3367 ; 3368 10CA 7BAC lodb R0,[R7,#-10] ; risf 3369 10CC 2F38 cmp R0,#119 ; alu_i 3370 10CE 04D8E210 bne dy185 ; fjump F ; cfj 3371 10D2 798C lod R0,[R7,#-14] ; risf 3372 10D4 8080 lod R1,[R0] ; risf 3373 10D6 77AC lodb R0,[R7,#-18] ; risf 3374 10D8 A8D0 cmp R1,R0 ; alu-l 3375 10DA 00D8E210 beq dy185 ; fjump F ; cfj 3376 10DE 6100 lod R0,#1 ; lti 3377 10E0 789C str R0,[R7,#-16] ; assign 3378 dy185 ; anon 3379 ; if (e) { printf("ERROR "); continue; } 3380 ; 3381 10E2 788C lod R0,[R7,#-16] ; risf 3382 10E4 2800 cmp R0,#0 ; gfv 3383 10E6 00D8FA10 beq dy186 ; fjmp1 ; cfj 3384 10EA 00F42811 lod R0,#dy187 ; ltgd3 3385 ; force VR0 to 0 ; call 3386 10EE 67D1 mov r2,r7 ; call 3387 10F0 100D sub r2,#24 ; call 3388 10F2 3CD89628 jsr _printf ; call 3389 ; force VR0 to 0 ; res 3390 10F6 28D8C80F bra dy168 ; anon 3391 dy186 ; anon 3392 dy181 ; anon 3393 ; } 3394 ; 3395 ; if (fixf == 0) { if (m == 'b') b += 1; else b += 4; } 3396 ; 3397 10FA 7C8C lod R0,[R7,#-8] ; risf 3398 10FC 2800 cmp R0,#0 ; gfv 3399 10FE 04D81A11 bne dy188 ; fjump F ; cfj 3400 1102 7BAC lodb R0,[R7,#-10] ; risf 3401 1104 2A30 cmp R0,#98 ; alu_i 3402 1106 04D81411 bne dy189 ; fjump F ; cfj 3403 110A 7E8C lod R0,[R7,#-4] ; risf 3404 110C 0900 add R0,#1 ; alu_i 3405 110E 7E9C str R0,[R7,#-4] ; assign 3406 1110 28D81A11 bra dy190 ; anon 3407 dy189 ; anon 3408 1114 7E8C lod R0,[R7,#-4] ; risf 3409 1116 0C00 add R0,#4 ; alu_i 3410 1118 7E9C str R0,[R7,#-4] ; assign 3411 dy190 ; anon 3412 dy188 ; anon 3413 111A 28D81E11 bra dy191 ; anon 3414 dy191 ; anon 3415 111E 28D8C80F bra dy168 ; anon 3416 dy169 ; anon 3417 1122 7F8F lod R6,[R7,#-2] ; cr 3418 1124 808F lod r7,[r7] ; cr 3419 1126 00F3 ret ; cr 3420 1128 4552524F dy187 .data "ERROR ",0 522000 3421 112F 25303858 dy174 .data "%08X >",0 203E00 3422 1136 25303258 dy172 .data "%02X >",0 203E00 3423 113D 25303858 dy170 .data "%08X ",0 2000 3424 1143 53796E74 dy166 .data "Syntax mm [-fix] w addr for word access",10,0 617820206D6D205B2D6669785D2077206164647220202020666F7220776F7264206163636573730A00 3425 1170 53796E74 dy165 .data "Syntax mm [-fix] b addr for byte access",10,0 617820206D6D205B2D6669785D2062206164647220202020666F722062797465206163636573730A00 3426 119D 4649580A dy163 .data "FIX",10,0 00 3427 11A2 2D666978 dy160 .data "-fix",0 00 3428 3429 3430 ; Routine mymon_help 3431 ; forced litpool here 3432 ; forced litpool here 3433 11A7 00 .align 2 3434 _mymon_help .global 3435 11A8 809B str r7,[r2] 3436 11AA E2D3 mov r7,r2 3437 11AC 7F9F str R6,[R7,#-2] 3438 11AE 019C str R0,[R7,#2] 3439 ; ------------------------------------------------- 3440 ; local argv [R7,#2] 3441 ; s 3442 ; } 3443 ; 3444 ; } 3445 ; 3446 ; 3447 ; 3448 ; 3449 ; 3450 ; 3451 ; 3452 ; mymon_help(char **argv) 3453 ; 3454 ; { 3455 ; 3456 ; printf("MYMON commands are:\n"); 3457 ; 3458 11B0 00F47915 lod R0,#dy192 ; ltgd3 3459 ; force VR0 to 0 ; call 3460 11B4 67D1 mov r2,r7 ; call 3461 11B6 1005 sub r2,#8 ; call 3462 11B8 3CD89628 jsr _printf ; call 3463 ; force VR0 to 0 ; res 3464 ; printf("md addr [ lines ] memory display in hex/ascii\n"); 3465 ; 3466 11BC 00F43D15 lod R0,#dy193 ; ltgd3 3467 ; force VR0 to 0 ; call 3468 11C0 67D1 mov r2,r7 ; call 3469 11C2 1005 sub r2,#8 ; call 3470 11C4 3CD89628 jsr _printf ; call 3471 ; force VR0 to 0 ; res 3472 ; printf("mdw addr [ lines ] as md but displays in 32 bit words\n"); 3473 ; 3474 11C8 00F4FA14 lod R0,#dy194 ; ltgd3 3475 ; force VR0 to 0 ; call 3476 11CC 67D1 mov r2,r7 ; call 3477 11CE 1005 sub r2,#8 ; call 3478 11D0 3CD89628 jsr _printf ; call 3479 ; force VR0 to 0 ; res 3480 ; printf("mm [-fix] b/w addr interactive memory update\n"); 3481 ; 3482 11D4 00F4C014 lod R0,#dy195 ; ltgd3 3483 ; force VR0 to 0 ; call 3484 11D8 67D1 mov r2,r7 ; call 3485 11DA 1005 sub r2,#8 ; call 3486 11DC 3CD89628 jsr _printf ; call 3487 ; force VR0 to 0 ; res 3488 ; 3489 ; 3490 ; 3491 ; 3492 ; printf("mmr b/w addr [ times ] memory read loop\n"); 3493 ; 3494 11E0 00F48F14 lod R0,#dy196 ; ltgd3 3495 ; force VR0 to 0 ; call 3496 11E4 67D1 mov r2,r7 ; call 3497 11E6 1005 sub r2,#8 ; call 3498 11E8 3CD89628 jsr _printf ; call 3499 ; force VR0 to 0 ; res 3500 ; printf("mmw b/w addr [ times ] memory write loop\n"); 3501 ; 3502 11EC 00F45D14 lod R0,#dy197 ; ltgd3 3503 ; force VR0 to 0 ; call 3504 11F0 67D1 mov r2,r7 ; call 3505 11F2 1005 sub r2,#8 ; call 3506 11F4 3CD89628 jsr _printf ; call 3507 ; force VR0 to 0 ; res 3508 11F8 28D8FC11 bra dy198 ; anon 3509 dy198 ; anon 3510 ; printf("go addr jump\n"); 3511 ; 3512 11FC 00F43814 lod R0,#dy199 ; ltgd3 3513 ; force VR0 to 0 ; call 3514 1200 67D1 mov r2,r7 ; call 3515 1202 1005 sub r2,#8 ; call 3516 1204 3CD89628 jsr _printf ; call 3517 ; force VR0 to 0 ; res 3518 ; printf("dis b n disassemble N lines from base\n"); 3519 ; 3520 1208 00F4FA13 lod R0,#dy200 ; ltgd3 3521 ; force VR0 to 0 ; call 3522 120C 67D1 mov r2,r7 ; call 3523 120E 1005 sub r2,#8 ; call 3524 1210 3CD89628 jsr _printf ; call 3525 ; force VR0 to 0 ; res 3526 ; printf("bp [ n ] [ clear ] breakpoint install or clear \n"); 3527 ; 3528 1214 00F4BD13 lod R0,#dy201 ; ltgd3 3529 ; force VR0 to 0 ; call 3530 1218 67D1 mov r2,r7 ; call 3531 121A 1005 sub r2,#8 ; call 3532 121C 3CD89628 jsr _printf ; call 3533 ; force VR0 to 0 ; res 3534 ; printf("fill start end [val] fill memory with zero or value\n"); 3535 ; 3536 1220 00F47E13 lod R0,#dy202 ; ltgd3 3537 ; force VR0 to 0 ; call 3538 1224 67D1 mov r2,r7 ; call 3539 1226 1005 sub r2,#8 ; call 3540 1228 3CD89628 jsr _printf ; call 3541 ; force VR0 to 0 ; res 3542 ; printf("findb start end val find memory with this byte\n"); 3543 ; 3544 122C 00F44313 lod R0,#dy203 ; ltgd3 3545 ; force VR0 to 0 ; call 3546 1230 67D1 mov r2,r7 ; call 3547 1232 1005 sub r2,#8 ; call 3548 1234 3CD89628 jsr _printf ; call 3549 ; force VR0 to 0 ; res 3550 ; printf("findl start end val find memory with this word\n"); 3551 ; 3552 1238 00F40813 lod R0,#dy204 ; ltgd3 3553 ; force VR0 to 0 ; call 3554 123C 67D1 mov r2,r7 ; call 3555 123E 1005 sub r2,#8 ; call 3556 1240 3CD89628 jsr _printf ; call 3557 ; force VR0 to 0 ; res 3558 1244 28D84812 bra dy205 ; anon 3559 dy205 ; anon 3560 ; 3561 ; 3562 ; 3563 ; 3564 ; printf("\n:\n"); 3565 ; 3566 1248 00F4EB12 lod R0,#dy206 ; ltgd3 3567 ; force VR0 to 0 ; call 3568 124C 67D1 mov r2,r7 ; call 3569 124E 1005 sub r2,#8 ; call 3570 1250 3CD89628 jsr _printf ; call 3571 ; force VR0 to 0 ; res 3572 ; printf("offset [ v ] set or display download offset\n"); 3573 ; 3574 1254 00F4AC12 lod R0,#dy207 ; ltgd3 3575 ; force VR0 to 0 ; call 3576 1258 67D1 mov r2,r7 ; call 3577 125A 1005 sub r2,#8 ; call 3578 125C 3CD89628 jsr _printf ; call 3579 ; force VR0 to 0 ; res 3580 ; printf("clear clear download error flag\n"); 3581 ; 3582 1260 00F47212 lod R0,#dy208 ; ltgd3 3583 ; force VR0 to 0 ; call 3584 1264 67D1 mov r2,r7 ; call 3585 1266 1005 sub r2,#8 ; call 3586 1268 3CD89628 jsr _printf ; call 3587 ; force VR0 to 0 ; res 3588 126C 7F8F lod R6,[R7,#-2] ; cr 3589 126E 808F lod r7,[r7] ; cr 3590 1270 00F3 ret ; cr 3591 1272 636C6561 dy208 .data "clear clear download error flag",10,0 722020202020202020202020202020202020202020202020202020636C65617220646F776E6C6F6164206572726F7220666C61670A00 3592 12AC 6F666673 dy207 .data "offset [ v ] set or display download offset",10,0 6574205B2076205D20202020202020202020202020202020202020736574206F7220646973706C617920646F776E6C6F6164206F66667365740A00 3593 12EB 0A3A3C76 dy206 .data 10,58,60,118,97,108,105,100,32,109,99,115,32,108,105,110,101,32,116,111,32,115,116,111,114,101,62,10,0 616C6964206D6373206C696E6520746F2073746F72653E0A00 3594 1308 66696E64 dy204 .data "findl start end val find memory with this word",10,0 6C20737461727420656E642076616C20202020202020202020202066696E64206D656D6F72792077697468207468697320776F72640A00 3595 1343 66696E64 dy203 .data "findb start end val find memory with this byte",10,0 6220737461727420656E642076616C20202020202020202020202066696E64206D656D6F72792077697468207468697320627974650A00 3596 137E 66696C6C dy202 .data "fill start end [val] fill memory with zero or value",10,0 20737461727420656E64205B76616C5D202020202020202020202066696C6C206D656D6F72792077697468207A65726F206F722076616C75650A00 3597 13BD 6270205B dy201 .data "bp [ n ] [ clear ] breakpoint install or clear ",10,0 206E205D205B20636C656172205D20202020202020202020202020627265616B706F696E7420696E7374616C6C206F7220636C656172200A00 3598 13FA 64697320 dy200 .data "dis b n disassemble N lines from base",10,0 62206E202020202020202020202020202020202020202020202020646973617373656D626C65204E206C696E65732066726F6D20626173650A00 3599 1438 676F2061 dy199 .data "go addr jump",10,0 6464722020202020202020202020202020202020202020202020206A756D700A00 3600 145D 6D6D7720 dy197 .data "mmw b/w addr [ times ] memory write loop",10,0 20622F772061646472205B2074696D6573205D20202020202020206D656D6F7279207772697465206C6F6F700A00 3601 148F 6D6D7220 dy196 .data "mmr b/w addr [ times ] memory read loop",10,0 20622F772061646472205B2074696D6573205D20202020202020206D656D6F72792072656164206C6F6F700A00 3602 14C0 6D6D205B dy195 .data "mm [-fix] b/w addr interactive memory update",10,0 2D6669785D20622F77206164647220202020202020202020202020696E746572616374697665206D656D6F7279207570646174650A00 3603 14FA 6D647720 dy194 .data "mdw addr [ lines ] as md but displays in 32 bit words",10,0 61646472205B206C696E6573205D202020202020202020202020206173206D642062757420646973706C61797320696E2033322062697420776F7264730A00 3604 153D 6D642061 dy193 .data "md addr [ lines ] memory display in hex/ascii",10,0 646472205B206C696E6573205D20202020202020202020202020206D656D6F727920646973706C617920696E206865782F61736369690A00 3605 1579 4D594D4F dy192 .data "MYMON commands are:",10,0 4E20636F6D6D616E6473206172653A0A00 3606 3607 3608 ; Routine mymon_main 3609 ; forced litpool here 3610 .align 2 3611 _mymon_main .global 3612 158E 809B str r7,[r2] 3613 1590 E2D3 mov r7,r2 3614 1592 7F9F str R6,[R7,#-2] 3615 ; ------------------------------------------------- 3616 ; local prompt [R7,#-4] 3617 ; s 3618 1594 6100 lod R0,#1 ; lti 3619 1596 7E9C str R0,[R7,#-4] ; assign 3620 ; 3621 ; 3622 ; 3623 ; 3624 ; 3625 ; 3626 ; 3627 ; 3628 ; 3629 ; 3630 ; 3631 ; 3632 ; 3633 ; 3634 ; 3635 ; 3636 ; 3637 ; 3638 ; 3639 ; 3640 ; 3641 ; 3642 ; 3643 ; 3644 ; 3645 ; 3646 ; 3647 ; 3648 ; 3649 ; 3650 ; 3651 ; 3652 ; 3653 ; 3654 ; 3655 ; 3656 ; typedef unsigned char uchar; 3657 ; 3658 ; 3659 ; 3660 ; 3661 ; 3662 ; 3663 ; 3664 ; 3665 ; 3666 ; 3667 ; 3668 ; typedef struct stdio 3669 ; 3670 ; { 3671 ; 3672 ; int flags; 3673 ; 3674 ; int sysfd; 3675 ; 3676 ; int mode; 3677 ; 3678 ; int bytes; 3679 ; 3680 ; char *poi; 3681 ; 3682 ; int error; 3683 ; 3684 ; int index; 3685 ; 3686 ; char data[32 ]; 3687 ; 3688 ; } STDIO; 3689 ; 3690 ; 3691 ; 3692 ; 3693 ; 3694 ; extern int open(char *, int); 3695 ; 3696 ; extern int close(char *, int); 3697 ; 3698 ; extern int main(int, char **); 3699 ; 3700 ; extern void _sa_wrch(char); 3701 ; 3702 ; extern char _sa_rdch(); 3703 ; 3704 ; 3705 ; 3706 ; extern char getchar(); 3707 ; 3708 ; extern void putchar(char); 3709 ; 3710 ; extern char toupper(char); 3711 ; 3712 ; extern char tolower(char); 3713 ; 3714 ; extern int strlen(const char *); 3715 ; 3716 ; extern int strcmp(const char *, const char *); 3717 ; 3718 ; extern int strncmp(char *, char *, int); 3719 ; 3720 ; extern int console_flags; 3721 ; 3722 ; extern void exit(int); 3723 ; 3724 ; extern char *malloc(int); 3725 ; 3726 ; extern int _exit(int); 3727 ; 3728 ; extern int strlen(char *); 3729 ; 3730 ; extern int isdigit(char); 3731 ; 3732 ; extern int atoi(char *); 3733 ; 3734 ; extern int checkend(); 3735 ; 3736 ; extern char *strncpy(char *, char *, int); 3737 ; 3738 ; extern void flush_dtoi(); 3739 ; 3740 ; extern void printf(); 3741 ; 3742 ; 3743 ; 3744 ; 3745 ; 3746 ; 3747 ; 3748 ; 3749 ; 3750 ; extern void init_mylinein 3751 ; 3752 ; (); 3753 ; 3754 ; extern int rhex(char *); 3755 ; 3756 ; extern char *readcookedline_pe(int, int); 3757 ; 3758 ; extern char **shell_parse(); 3759 ; 3760 ; extern int myvict_main(int, char **); 3761 ; 3762 ; extern int init_myvict(); 3763 ; 3764 ; static int errorf; 3765 ; 3766 ; static uchar *ihex_offset; 3767 ; 3768 ; extern int deb; 3769 ; 3770 ; static int last_addr; 3771 ; 3772 ; static int bytes_loaded; 3773 ; 3774 ; int monmode; 3775 ; 3776 ; 3777 ; 3778 ; extern int read_cpu_control_reg(); 3779 ; 3780 ; extern void flush_dtoi1(); 3781 ; 3782 ; 3783 ; 3784 ; void mymon_main() 3785 ; 3786 ; { 3787 ; 3788 ; int prompt = 1; 3789 ; 3790 ; bytes_loaded = 0; 3791 ; 3792 1598 6000 lod R0,#0 ; lti 3793 159A 20D40ADF str R0,_bytes_loaded ; assign 3794 ; errorf = 0; 3795 ; 3796 159E 6000 lod R0,#0 ; lti 3797 15A0 20D404DF str R0,_errorf ; assign 3798 ; ihex_offset = 0; 3799 ; 3800 15A4 6000 lod R0,#0 ; lti 3801 15A6 20D406DF str R0,_ihex_offset ; assign 3802 ; printf("CBG mymon low-level monitor. Aug-98\n"); 3803 ; 3804 15AA 00F45816 lod R0,#dy209 ; ltgd3 3805 ; force VR0 to 0 ; call 3806 15AE 67D1 mov r2,r7 ; call 3807 15B0 1205 sub r2,#10 ; call 3808 15B2 3CD89628 jsr _printf ; call 3809 ; force VR0 to 0 ; res 3810 ; 3811 ; 3812 ; 3813 ; 3814 ; init_mylinein(); 3815 ; 3816 15B6 67D1 mov r2,r7 ; call 3817 15B8 1205 sub r2,#10 ; call 3818 15BA 3CD8901C jsr _init_mylinein ; call 3819 ; force VR0 to 0 ; res 3820 ; 3821 ; 3822 ; 3823 ; 3824 ; while(1) 3825 ; 3826 dy210 ; anon 3827 ; { 3828 ; 3829 ; local cmd [R7,#-6] 3830 ; s 3831 ; local argv [R7,#-8] 3832 ; s 3833 ; char *cmd, **argv; 3834 ; 3835 ; monmode = 0; 3836 ; 3837 15BE 6000 lod R0,#0 ; lti 3838 15C0 20D40CDF str R0,_monmode ; assign 3839 ; cmd = readcookedline_pe(prompt, prompt); 3840 ; 3841 15C4 7E8C lod R0,[R7,#-4] ; risf 3842 15C6 FE8C lod R1,[R7,#-4] ; risf 3843 ; force VR0 to 0 ; call 3844 ; force VR1 to 1 ; call 3845 15C8 67D1 mov r2,r7 ; call 3846 15CA 1605 sub r2,#14 ; call 3847 15CC 3CD8FC16 jsr _readcookedline_pe ; call 3848 ; force VR0 to 0 ; res 3849 15D0 7D9C str R0,[R7,#-6] ; assign 3850 ; 3851 ; 3852 ; if (cmd[0] == ':') 3853 ; 3854 15D2 7D8C lod R0,[R7,#-6] ; risf 3855 15D4 80A0 lodb R1,[R0] ; risf 3856 15D6 AA1C cmp R1,#58 ; alu_i 3857 15D8 04D8EC15 bne dy212 ; fjump F ; cfj 3858 ; { 3859 ; 3860 ; prompt = 0; 3861 ; 3862 15DC 6000 lod R0,#0 ; lti 3863 15DE 7E9C str R0,[R7,#-4] ; assign 3864 ; intel_hex(cmd); 3865 ; 3866 15E0 7D8C lod R0,[R7,#-6] ; risf 3867 ; force VR0 to 0 ; call 3868 15E2 67D1 mov r2,r7 ; call 3869 15E4 1605 sub r2,#14 ; call 3870 15E6 3CD8CC00 jsr _intel_hex ; call 3871 ; force VR0 to 0 ; res 3872 ; continue; 3873 ; 3874 15EA EACA bra dy210 ; anon 3875 dy212 ; anon 3876 ; } 3877 ; 3878 ; 3879 ; 3880 ; prompt = 1; 3881 ; 3882 15EC 6100 lod R0,#1 ; lti 3883 15EE 7E9C str R0,[R7,#-4] ; assign 3884 ; if (errorf) printf("\n\nDownload error\n\n"); 3885 ; 3886 15F0 00D404DF lod R0,_errorf ; ris 3887 15F4 2800 cmp R0,#0 ; gfv 3888 15F6 00D80616 beq dy213 ; fjmp1 ; cfj 3889 15FA 00F44516 lod R0,#dy214 ; ltgd3 3890 ; force VR0 to 0 ; call 3891 15FE 67D1 mov r2,r7 ; call 3892 1600 1605 sub r2,#14 ; call 3893 1602 3CD89628 jsr _printf ; call 3894 ; force VR0 to 0 ; res 3895 dy213 ; anon 3896 ; if (strcmp(cmd, "quit")==0) break; 3897 ; 3898 1606 7D8C lod R0,[R7,#-6] ; risf 3899 1608 80F44016 lod R1,#dy215 ; ltgd3 3900 ; force VR0 to 0 ; call 3901 ; force VR1 to 1 ; call 3902 160C 67D1 mov r2,r7 ; call 3903 160E 1605 sub r2,#14 ; call 3904 1610 3CD81822 jsr _strcmp ; call 3905 ; force VR0 to 0 ; res 3906 1614 2800 cmp R0,#0 ; gfv 3907 1616 04D81E16 bne dy216 ; fjump F ; cfj 3908 161A 28D83A16 bra dy211 ; anon 3909 dy216 ; anon 3910 ; ; 3911 ; 3912 ; argv = shell_parse(cmd); 3913 ; 3914 161E 7D8C lod R0,[R7,#-6] ; risf 3915 ; force VR0 to 0 ; call 3916 1620 67D1 mov r2,r7 ; call 3917 1622 1605 sub r2,#14 ; call 3918 1624 3CD87E16 jsr _shell_parse ; call 3919 ; force VR0 to 0 ; res 3920 1628 7C9C str R0,[R7,#-8] ; assign 3921 162A 28D82E16 bra dy217 ; anon 3922 dy217 ; anon 3923 ; mymon_dispatch(argv); 3924 ; 3925 162E 7C8C lod R0,[R7,#-8] ; risf 3926 ; force VR0 to 0 ; call 3927 1630 67D1 mov r2,r7 ; call 3928 1632 1605 sub r2,#14 ; call 3929 1634 3CD85403 jsr _mymon_dispatch ; call 3930 ; force VR0 to 0 ; res 3931 1638 C3CA bra dy210 ; anon 3932 dy211 ; anon 3933 163A 7F8F lod R6,[R7,#-2] ; cr 3934 163C 808F lod r7,[r7] ; cr 3935 163E 00F3 ret ; cr 3936 1640 71756974 dy215 .data "quit",0 00 3937 1645 0A0A446F dy214 .data 10,10,68,111,119,110,108,111,97,100,32,101,114,114,111,114,10,10,0 776E6C6F6164206572726F720A0A00 3938 1658 43424720 dy209 .data "CBG mymon low-level monitor. Aug-98",10,0 6D796D6F6E206C6F772D6C6576656C206D6F6E69746F722E204175672D39380A00 3939 ; _open .extern 3940 ; _close .extern 3941 ; _main .extern 3942 ; __sa_wrch .extern 3943 ; __sa_rdch .extern 3944 ; _getchar .extern 3945 ; _putchar .extern 3946 ; _toupper .extern 3947 ; _tolower .extern 3948 ; _strlen .extern 3949 ; _strcmp .extern 3950 ; _strncmp .extern 3951 .bss 3952 ;_console_flags .extern 3953 ; _exit .extern 3954 ; _malloc .extern 3955 ; __exit .extern 3956 ; _strlen .extern 3957 ; _isdigit .extern 3958 ; _atoi .extern 3959 ; _checkend .extern 3960 ; _strncpy .extern 3961 ; _flush_dtoi .extern 3962 ; _printf .extern 3963 _pointer .global 3964 DF12 0000 .defs 2 3967 _lineidx .global 3968 DF14 0000 .defs 2 3971 _linebuffer .global 3972 DF16 0000 .defs 2 3975 _lines .global 3976 DF18 00000000 .defs 8 00000000 3985 _histline .global 3986 DF20 0000 .defs 2 3989 ; _sayprompt .extern 3990 _comp_char .global 3991 DF22 0000 .defs 2 3994 _comp_line .global 3995 DF24 0000 .defs 2 3998 _argv .global 3999 DF26 00000000 .defs 32 00000000000000000000000000000000000000000000000000000000 4032 .text 4033 4034 4035 ; Routine shell_parse 4036 167D 00 .align 2 4037 _shell_parse .global 4038 167E 809B str r7,[r2] 4039 1680 E2D3 mov r7,r2 4040 ; ------------------------------------------------- 4041 ; local p R100 4042 ; s 4043 ; force VR0 to 0 ; pram 4044 ; local i [R7,#-4] 4045 ; s 4046 ; force VR0 to 0 ; pram 4047 ; } 4048 ; 4049 ; } 4050 ; 4051 ; } 4052 ; 4053 ; 4054 ; 4055 ; 4056 ; 4057 ; 4058 ; 4059 ; 4060 ; 4061 ; char *argv[(16) ]; 4062 ; 4063 ; 4064 ; 4065 ; char **shell_parse(char *p) 4066 ; 4067 ; { 4068 ; 4069 ; int i; 4070 ; 4071 ; 4072 ; 4073 ; for (i=0; i<(16) ; i++) argv[i] = 0 ; 4074 ; 4075 1682 E000 lod R1,#0 ; lti 4076 1684 FE9C str R1,[R7,#-4] ; assign 4077 ay10 ; anon 4078 1686 FE8C lod R1,[R7,#-4] ; risf 4079 1688 A808 cmp R1,#16 ; alu_i 4080 168A 0CD8A416 bge ay11 ; fjump F ; cfj 4081 168E 7E8D lod R2,[R7,#-4] ; risf 4082 1690 4901 asl R2,#1 ; anon 4083 1692 80F426DF lod R1,#_argv ; ltgd2 4084 1696 8AD0 add R1,R2 ; alu-l 4085 1698 6001 lod R2,#0 ; lti 4086 169A 0095 str R2,[R1] ; assign 4087 169C FE8C lod R1,[R7,#-4] ; risf 4088 169E 8900 add R1,#1 ; qas 4089 16A0 FE9C str R1,[R7,#-4] ; qasmi 4090 16A2 F2CA bra ay10 ; anon 4091 ay11 ; anon 4092 ; i = 0; 4093 ; 4094 16A4 E000 lod R1,#0 ; lti 4095 16A6 FE9C str R1,[R7,#-4] ; assign 4096 ; while(1) 4097 ; 4098 ay12 ; anon 4099 ; { 4100 ; 4101 ; local start [R7,#-6] 4102 ; s 4103 ; force VR0 to 0 ; pram 4104 ; char *start; 4105 ; 4106 ; while (*p == ' ') p++; 4107 ; 4108 ay14 ; anon 4109 16A8 80A0 lodb R1,[R0] ; risf 4110 16AA A810 cmp R1,#32 ; alu_i 4111 16AC 04D8B416 bne ay15 ; fjump F ; cfj 4112 16B0 0900 add R0,#1 ; qas 4113 ; mov R0,R0 redundant ; qasmi 4114 16B2 FBCA bra ay14 ; anon 4115 ay15 ; anon 4116 ; start = p; 4117 ; 4118 16B4 7D9C str R0,[R7,#-6] ; assign 4119 ; while (*p != ' ' && *p) p++; 4120 ; 4121 ay16 ; anon 4122 16B6 80A0 lodb R1,[R0] ; risf 4123 16B8 A810 cmp R1,#32 ; alu_i 4124 16BA 00D8CA16 beq ay17 ; fjump F ; cfj 4125 16BE 80A0 lodb R1,[R0] ; risf 4126 16C0 A800 cmp R1,#0 ; gfv 4127 16C2 00D8CA16 beq ay17 ; fjmp1 ; cfj 4128 16C6 0900 add R0,#1 ; qas 4129 ; mov R0,R0 redundant ; qasmi 4130 16C8 F7CA bra ay16 ; anon 4131 ay17 ; anon 4132 ; argv[i] = start; 4133 ; 4134 16CA 7E8D lod R2,[R7,#-4] ; risf 4135 16CC 4901 asl R2,#1 ; anon 4136 16CE 80F426DF lod R1,#_argv ; ltgd2 4137 16D2 8AD0 add R1,R2 ; alu-l 4138 16D4 7D8D lod R2,[R7,#-6] ; risf 4139 16D6 0095 str R2,[R1] ; assign 4140 ; i++; 4141 ; 4142 16D8 FE8C lod R1,[R7,#-4] ; risf 4143 16DA 8900 add R1,#1 ; qas 4144 16DC FE9C str R1,[R7,#-4] ; qasmi 4145 ; if (*p == 0) break; 4146 ; 4147 16DE 80A0 lodb R1,[R0] ; risf 4148 16E0 A800 cmp R1,#0 ; gfv 4149 16E2 04D8EA16 bne ay18 ; fjump F ; cfj 4150 16E6 28D8F216 bra ay13 ; anon 4151 ay18 ; anon 4152 ; *p = 0; 4153 ; 4154 16EA E000 lod R1,#0 ; lti 4155 16EC 80B0 strb R1,[R0] ; assign 4156 ; p++; 4157 ; 4158 16EE 0900 add R0,#1 ; qas 4159 ; mov R0,R0 redundant ; qasmi 4160 16F0 DCCA bra ay12 ; anon 4161 ay13 ; anon 4162 ; } 4163 ; 4164 ; 4165 ; 4166 ; return argv; 4167 ; 4168 16F2 80F426DF lod R1,#_argv ; ltgd2 4169 16F6 61D0 mov R0,R1 ; forceresolve 4170 16F8 808F lod r7,[r7] ; cr 4171 16FA 00F3 ret ; cr 4172 ; force VR0 to 0 ; pram 4173 4174 4175 ; Routine readcookedline_pe 4176 .align 2 4177 _readcookedline_pe .global 4178 16FC 809B str r7,[r2] 4179 16FE E2D3 mov r7,r2 4180 1700 7F9F str R6,[R7,#-2] 4181 1702 019C str R0,[R7,#2] 4182 1704 829C str R1,[R7,#4] 4183 ; ------------------------------------------------- 4184 ; local prompt [R7,#2] 4185 ; s 4186 ; local echo [R7,#4] 4187 ; s 4188 ; local tab [R7,#-4] 4189 ; s 4190 1706 6000 lod R0,#0 ; lti 4191 1708 7E9C str R0,[R7,#-4] ; assign 4192 ; local t [R7,#-6] 4193 ; s 4194 ; local length [R7,#-8] 4195 ; s 4196 170A 6000 lod R0,#0 ; lti 4197 170C 7C9C str R0,[R7,#-8] ; assign 4198 ; local recalpos [R7,#-10] 4199 ; s 4200 170E 00D420DF lod R0,_histline ; ris 4201 1712 7B9C str R0,[R7,#-10] ; assign 4202 ; } 4203 ; 4204 ; 4205 ; 4206 ; 4207 ; 4208 ; char *readcookedline_pe(int prompt, int echo) 4209 ; 4210 ; { 4211 ; 4212 ; int tab = 0; 4213 ; 4214 ; int t; 4215 ; 4216 ; int length = 0; 4217 ; 4218 ; int recalpos = histline; 4219 ; 4220 ; pointer = 0; 4221 ; 4222 1714 6000 lod R0,#0 ; lti 4223 1716 20D412DF str R0,_pointer ; assign 4224 ; 4225 ; 4226 ; ; 4227 ; 4228 ; 4229 ; 4230 ; lineidx = 0; 4231 ; 4232 171A 6000 lod R0,#0 ; lti 4233 171C 20D414DF str R0,_lineidx ; assign 4234 ; if (prompt) sayprompt(); 4235 ; 4236 1720 018C lod R0,[R7,#2] ; risf 4237 1722 2800 cmp R0,#0 ; gfv 4238 1724 00D83017 beq ay19 ; fjmp1 ; cfj 4239 1728 67D1 mov r2,r7 ; call 4240 172A 1009 sub r2,#16 ; call 4241 172C 3CD87000 jsr _sayprompt ; call 4242 ; force VR0 to 0 ; res 4243 ay19 ; anon 4244 ; 4245 ; 4246 ; while(1) 4247 ; 4248 ay20 ; anon 4249 ; { 4250 ; 4251 ; local c [R7,#-12] 4252 ; s 4253 1730 67D1 mov r2,r7 ; call 4254 1732 1009 sub r2,#16 ; call 4255 1734 3CD8EC1D jsr _cookcharin ; call 4256 ; force VR0 to 0 ; res 4257 1738 7ABC strb R0,[R7,#-12] ; assign 4258 ; unsigned char c = cookcharin(); 4259 ; 4260 ; ; 4261 ; 4262 ; if (c==27) 4263 ; 4264 173A 7AAC lodb R0,[R7,#-12] ; risf 4265 173C 2B0C cmp R0,#27 ; alu_i 4266 173E 04D88817 bne ay22; fjump U ; cfj 4267 ; { 4268 ; 4269 ; do 4270 ; 4271 ay23 ; anon 4272 ; { 4273 ; 4274 ; c = cookcharin(); 4275 ; 4276 1742 67D1 mov r2,r7 ; call 4277 1744 1209 sub r2,#18 ; call 4278 1746 3CD8EC1D jsr _cookcharin ; call 4279 ; force VR0 to 0 ; res 4280 174A 7ABC strb R0,[R7,#-12] ; assign 4281 174C 7AAC lodb R0,[R7,#-12] ; risf 4282 174E 2F24 cmp R0,#79 ; alu_i 4283 1750 F9C0 beq ay23 ; Uns ; ctj 4284 1752 7AAC lodb R0,[R7,#-12] ; risf 4285 1754 2B2C cmp R0,#91 ; alu_i 4286 1756 F6C0 beq ay23 ; Uns ; ctj 4287 ; } while (c == 'O' || c == '['); 4288 ; 4289 ; if (c == 'D') c = 8; 4290 ; 4291 1758 7AAC lodb R0,[R7,#-12] ; risf 4292 175A 2C20 cmp R0,#68 ; alu_i 4293 175C 04D86417 bne ay24; fjump U ; cfj 4294 1760 6004 lod R0,#8 ; lti 4295 1762 7ABC strb R0,[R7,#-12] ; assign 4296 ay24 ; anon 4297 ; if (c == 'C') c = 9+128; 4298 ; 4299 1764 7AAC lodb R0,[R7,#-12] ; risf 4300 1766 2B20 cmp R0,#67 ; alu_i 4301 1768 04D87017 bne ay25; fjump U ; cfj 4302 176C 6144 lod R0,#137 ; lti 4303 176E 7ABC strb R0,[R7,#-12] ; assign 4304 ay25 ; anon 4305 ; if (c == 'A') c = 11; 4306 ; 4307 1770 7AAC lodb R0,[R7,#-12] ; risf 4308 1772 2920 cmp R0,#65 ; alu_i 4309 1774 04D87C17 bne ay26; fjump U ; cfj 4310 1778 6304 lod R0,#11 ; lti 4311 177A 7ABC strb R0,[R7,#-12] ; assign 4312 ay26 ; anon 4313 ; if (c == 'B') c = 10+128; 4314 ; 4315 177C 7AAC lodb R0,[R7,#-12] ; risf 4316 177E 2A20 cmp R0,#66 ; alu_i 4317 1780 04D88817 bne ay27; fjump U ; cfj 4318 1784 6244 lod R0,#138 ; lti 4319 1786 7ABC strb R0,[R7,#-12] ; assign 4320 ay27 ; anon 4321 ay22 ; anon 4322 ; } 4323 ; 4324 ; 4325 ; 4326 ; 4327 ; 4328 ; ; 4329 ; 4330 ; 4331 ; 4332 ; switch(c) 4333 ; 4334 1788 FAAC lodb R1,[R7,#-12] ; risf 4335 178A 6305 lod R2,#11 ; scan 4336 178C 00F4AE17 lod R0,#ay29 ; scan 4337 ay44 ; anon 4338 1790 80A1 lodb R3,[R0] ; scan 4339 1792 A9D1 cmp R3,R1 ; scan 4340 1794 00D8A217 beq ay43 ; scan 4341 1798 0900 add R0,#1 ; scan 4342 179A 1101 sub R2,#1 ; scan 4343 179C FAC1 bne ay44 ; scan 4344 179E 28D8DC17 bra ay32 ; scan 4345 ay43 ; anon 4346 17A2 0AD1 add R2,R2 ; scan 4347 17A4 00F4B817 lod R0, #(ay28-2) ; scan 4348 17A8 0AD0 add R0,R2 ; scan 4349 17AA 0081 lod R2,[R0] ; scan 4350 17AC 00F1 bx R2 ; scan 4351 ay29 ; anon 4352 17AE 20 .byte 32 ; ci 4353 17AF 0B .byte 11 ; ci 4354 17B0 8A .byte 138 ; ci 4355 17B1 1D .byte 29 ; ci 4356 17B2 09 .byte 9 ; ci 4357 17B3 03 .byte 3 ; ci 4358 17B4 7F .byte 127 ; ci 4359 17B5 08 .byte 8 ; ci 4360 17B6 89 .byte 137 ; ci 4361 17B7 0D .byte 13 ; ci 4362 17B8 0A .byte 10 ; ci 4363 17B9 00 .align 2 ; ci 4364 ay28 ; anon 4365 17BA 0A1B .word ay42 ; vp 4366 17BC 0A1B .word ay41 ; vp 4367 17BE BA1A .word ay40 ; vp 4368 17C0 9A1A .word ay39 ; vp 4369 17C2 061A .word ay38 ; vp 4370 17C4 E819 .word ay37 ; vp 4371 17C6 4A19 .word ay36 ; vp 4372 17C8 4A19 .word ay35 ; vp 4373 17CA 7C18 .word ay34 ; vp 4374 17CC 7C18 .word ay33 ; vp 4375 17CE D017 .word ay31 ; vp 4376 ay31 ; anon 4377 ; { 4378 ; 4379 ; case ' ': 4380 ; 4381 ; if (length == 0) break; 4382 ; 4383 17D0 7C8C lod R0,[R7,#-8] ; risf 4384 17D2 2800 cmp R0,#0 ; gfv 4385 17D4 04D8DC17 bne ay45 ; fjump F ; cfj 4386 17D8 28D8741B bra ay30 ; anon 4387 ay45 ; anon 4388 ay32 ; anon 4389 ; 4390 ; 4391 ; default: 4392 ; 4393 ; ; 4394 ; 4395 ; if (c < ' ') break; 4396 ; 4397 17DC 7AAC lodb R0,[R7,#-12] ; risf 4398 17DE 2810 cmp R0,#32 ; alu_i 4399 17E0 18D8E817 bcs ay46; fjump U ; cfj 4400 17E4 28D8741B bra ay30 ; anon 4401 ay46 ; anon 4402 ; ; 4403 ; 4404 ; if (echo) shellecho(c); 4405 ; 4406 17E8 028C lod R0,[R7,#4] ; risf 4407 17EA 2800 cmp R0,#0 ; gfv 4408 17EC 00D8FA17 beq ay47 ; fjmp1 ; cfj 4409 17F0 7AAC lodb R0,[R7,#-12] ; risf 4410 ; force VR0 to 0 ; call 4411 17F2 67D1 mov r2,r7 ; call 4412 17F4 1209 sub r2,#18 ; call 4413 17F6 3CD8821B jsr _shellecho ; call 4414 ; force VR0 to 0 ; res 4415 ay47 ; anon 4416 ; ; 4417 ; 4418 ; { 4419 ; 4420 ; local i [R7,#-14] 4421 ; s 4422 ; int i; 4423 ; 4424 ; for(i=tab; itab; i--) 4454 ; 4455 1822 7C8C lod R0,[R7,#-8] ; risf 4456 1824 799C str R0,[R7,#-14] ; assign 4457 ay50 ; anon 4458 1826 798C lod R0,[R7,#-14] ; risf 4459 1828 FE8C lod R1,[R7,#-4] ; risf 4460 182A 29D0 cmp R0,R1 ; alu-l 4461 182C 14D85818 ble ay51 ; fjump F ; cfj 4462 ; { 4463 ; 4464 ; linebuffer[i] = linebuffer[i-1]; 4465 ; 4466 1830 F98C lod R1,[R7,#-14] ; risf 4467 1832 9100 sub R1,#1 ; alu_i 4468 1834 00D416DF lod R0,_linebuffer ; ris 4469 1838 09D0 add R0,R1 ; alu-l 4470 183A 80D416DF lod R1,_linebuffer ; ris 4471 183E 798D lod R2,[R7,#-14] ; risf 4472 1840 8AD0 add R1,R2 ; alu-l 4473 1842 00A1 lodb R2,[R0] ; risf 4474 1844 00B5 strb R2,[R1] ; assign 4475 ; putchar(8); 4476 ; 4477 1846 6004 lod R0,#8 ; lti 4478 ; force VR0 to 0 ; call 4479 1848 67D1 mov r2,r7 ; call 4480 184A 1409 sub r2,#20 ; call 4481 184C 3CD8CE2B jsr _putchar ; call 4482 ; force VR0 to 0 ; res 4483 1850 798C lod R0,[R7,#-14] ; risf 4484 1852 1100 sub R0,#1 ; qas 4485 1854 799C str R0,[R7,#-14] ; qasmi 4486 1856 E8CA bra ay50 ; anon 4487 ay51 ; anon 4488 ; } 4489 ; 4490 ; } 4491 ; 4492 ; ; 4493 ; 4494 ; linebuffer[tab] = c; 4495 ; 4496 1858 00D416DF lod R0,_linebuffer ; ris 4497 185C FE8C lod R1,[R7,#-4] ; risf 4498 185E 09D0 add R0,R1 ; alu-l 4499 1860 FAAC lodb R1,[R7,#-12] ; risf 4500 1862 80B0 strb R1,[R0] ; assign 4501 ; ; 4502 ; 4503 ; if (tab < (132) ) { tab++; length++; } 4504 ; 4505 1864 7E8C lod R0,[R7,#-4] ; risf 4506 1866 2C40 cmp R0,#132 ; alu_i 4507 1868 0CD87818 bge ay52 ; fjump F ; cfj 4508 186C 7E8C lod R0,[R7,#-4] ; risf 4509 186E 0900 add R0,#1 ; qas 4510 1870 7E9C str R0,[R7,#-4] ; qasmi 4511 1872 7C8C lod R0,[R7,#-8] ; risf 4512 1874 0900 add R0,#1 ; qas 4513 1876 7C9C str R0,[R7,#-8] ; qasmi 4514 ay52 ; anon 4515 ; break; 4516 ; 4517 1878 28D8741B bra ay30 ; anon 4518 ay33 ; anon 4519 ay34 ; anon 4520 ; 4521 ; 4522 ; case 11: case 10+128: 4523 ; 4524 ; linebuffer[tab] = 0; 4525 ; 4526 187C 00D416DF lod R0,_linebuffer ; ris 4527 1880 FE8C lod R1,[R7,#-4] ; risf 4528 1882 09D0 add R0,R1 ; alu-l 4529 1884 E000 lod R1,#0 ; lti 4530 1886 80B0 strb R1,[R0] ; assign 4531 ; putchar(0x0D); 4532 ; 4533 1888 6504 lod R0,#13 ; lti 4534 ; force VR0 to 0 ; call 4535 188A 67D1 mov r2,r7 ; call 4536 188C 1209 sub r2,#18 ; call 4537 188E 3CD8CE2B jsr _putchar ; call 4538 ; force VR0 to 0 ; res 4539 ; sayprompt(); 4540 ; 4541 1892 67D1 mov r2,r7 ; call 4542 1894 1209 sub r2,#18 ; call 4543 1896 3CD87000 jsr _sayprompt ; call 4544 ; force VR0 to 0 ; res 4545 ; 4546 ; 4547 ; if (c==11) recalpos = backlines(recalpos); 4548 ; 4549 189A 7AAC lodb R0,[R7,#-12] ; risf 4550 189C 2B04 cmp R0,#11 ; alu_i 4551 189E 04D8B218 bne ay53; fjump U ; cfj 4552 18A2 7B8C lod R0,[R7,#-10] ; risf 4553 ; force VR0 to 0 ; call 4554 18A4 67D1 mov r2,r7 ; call 4555 18A6 1209 sub r2,#18 ; call 4556 18A8 3CD8461D jsr _backlines ; call 4557 ; force VR0 to 0 ; res 4558 18AC 7B9C str R0,[R7,#-10] ; assign 4559 18AE 28D8BE18 bra ay54 ; anon 4560 ay53 ; anon 4561 ; else recalpos = forwardlines(recalpos); 4562 ; 4563 18B2 7B8C lod R0,[R7,#-10] ; risf 4564 ; force VR0 to 0 ; call 4565 18B4 67D1 mov r2,r7 ; call 4566 18B6 1209 sub r2,#18 ; call 4567 18B8 3CD8041D jsr _forwardlines ; call 4568 ; force VR0 to 0 ; res 4569 18BC 7B9C str R0,[R7,#-10] ; assign 4570 ay54 ; anon 4571 ; for(t=0; t < (132) ; t++) 4572 ; 4573 18BE 6000 lod R0,#0 ; lti 4574 18C0 7D9C str R0,[R7,#-6] ; assign 4575 ay55 ; anon 4576 18C2 7D8C lod R0,[R7,#-6] ; risf 4577 18C4 2C40 cmp R0,#132 ; alu_i 4578 18C6 0CD8F818 bge ay56 ; fjump F ; cfj 4579 ; { 4580 ; 4581 ; c = linebuffer[t]; 4582 ; 4583 18CA 00D416DF lod R0,_linebuffer ; ris 4584 18CE FD8C lod R1,[R7,#-6] ; risf 4585 18D0 09D0 add R0,R1 ; alu-l 4586 18D2 80A0 lodb R1,[R0] ; risf 4587 18D4 FABC strb R1,[R7,#-12] ; assign 4588 ; if (c) shellecho(c); 4589 ; 4590 18D6 7AAC lodb R0,[R7,#-12] ; risf 4591 18D8 2800 cmp R0,#0 ; gfv 4592 18DA 00D8EC18 beq ay57 ; fjmp1 ; cfj 4593 18DE 7AAC lodb R0,[R7,#-12] ; risf 4594 ; force VR0 to 0 ; call 4595 18E0 67D1 mov r2,r7 ; call 4596 18E2 1209 sub r2,#18 ; call 4597 18E4 3CD8821B jsr _shellecho ; call 4598 ; force VR0 to 0 ; res 4599 18E8 28D8F018 bra ay58 ; anon 4600 ay57 ; anon 4601 ; else break; 4602 ; 4603 18EC 28D8F818 bra ay56 ; anon 4604 ay58 ; anon 4605 18F0 7D8C lod R0,[R7,#-6] ; risf 4606 18F2 0900 add R0,#1 ; qas 4607 18F4 7D9C str R0,[R7,#-6] ; qasmi 4608 18F6 E6CA bra ay55 ; anon 4609 ay56 ; anon 4610 ; } 4611 ; 4612 ; tab = t; 4613 ; 4614 18F8 7D8C lod R0,[R7,#-6] ; risf 4615 18FA 7E9C str R0,[R7,#-4] ; assign 4616 ; if (t > length) length = t; 4617 ; 4618 18FC 7D8C lod R0,[R7,#-6] ; risf 4619 18FE FC8C lod R1,[R7,#-8] ; risf 4620 1900 29D0 cmp R0,R1 ; alu-l 4621 1902 14D80E19 ble ay59 ; fjump F ; cfj 4622 1906 7D8C lod R0,[R7,#-6] ; risf 4623 1908 7C9C str R0,[R7,#-8] ; assign 4624 190A 28D82A19 bra ay60 ; anon 4625 ay59 ; anon 4626 ; else while (t < length) 4627 ; 4628 ay61 ; anon 4629 190E 7D8C lod R0,[R7,#-6] ; risf 4630 1910 FC8C lod R1,[R7,#-8] ; risf 4631 1912 29D0 cmp R0,R1 ; alu-l 4632 1914 0CD82A19 bge ay62 ; fjump F ; cfj 4633 ; { 4634 ; 4635 ; t++; 4636 ; 4637 1918 7D8C lod R0,[R7,#-6] ; risf 4638 191A 0900 add R0,#1 ; qas 4639 191C 7D9C str R0,[R7,#-6] ; qasmi 4640 ; putchar(' '); 4641 ; 4642 191E 6010 lod R0,#32 ; lti 4643 ; force VR0 to 0 ; call 4644 1920 67D1 mov r2,r7 ; call 4645 1922 1209 sub r2,#18 ; call 4646 1924 3CD8CE2B jsr _putchar ; call 4647 ; force VR0 to 0 ; res 4648 1928 F3CA bra ay61 ; anon 4649 ay62 ; anon 4650 ay60 ; anon 4651 ; } 4652 ; 4653 ; while (length > tab) 4654 ; 4655 ay63 ; anon 4656 192A 7C8C lod R0,[R7,#-8] ; risf 4657 192C FE8C lod R1,[R7,#-4] ; risf 4658 192E 29D0 cmp R0,R1 ; alu-l 4659 1930 14D84619 ble ay64 ; fjump F ; cfj 4660 ; { 4661 ; 4662 ; putchar(8); 4663 ; 4664 1934 6004 lod R0,#8 ; lti 4665 ; force VR0 to 0 ; call 4666 1936 67D1 mov r2,r7 ; call 4667 1938 1209 sub r2,#18 ; call 4668 193A 3CD8CE2B jsr _putchar ; call 4669 ; force VR0 to 0 ; res 4670 ; length --; 4671 ; 4672 193E 7C8C lod R0,[R7,#-8] ; risf 4673 1940 1100 sub R0,#1 ; qas 4674 1942 7C9C str R0,[R7,#-8] ; qasmi 4675 1944 F3CA bra ay63 ; anon 4676 ay64 ; anon 4677 ; } 4678 ; 4679 ; break; 4680 ; 4681 1946 28D8741B bra ay30 ; anon 4682 ay35 ; anon 4683 ay36 ; anon 4684 ; 4685 ; 4686 ; case (']' & 31): 4687 ; 4688 ; 4689 ; 4690 ; case 9: 4691 ; 4692 ; { 4693 ; 4694 ; local eot [R7,#-14] 4695 ; s 4696 194A 00D416DF lod R0,_linebuffer ; ris 4697 194E FE8C lod R1,[R7,#-4] ; risf 4698 1950 09D0 add R0,R1 ; alu-l 4699 1952 799C str R0,[R7,#-14] ; assign 4700 ; local tag [R7,#-16] 4701 ; s 4702 1954 798C lod R0,[R7,#-14] ; risf 4703 1956 789C str R0,[R7,#-16] ; assign 4704 ; local completion [R7,#-18] 4705 ; s 4706 ; local j [R7,#-20] 4707 ; s 4708 1958 7E8C lod R0,[R7,#-4] ; risf 4709 195A 769C str R0,[R7,#-20] ; assign 4710 ; char *eot = &linebuffer[tab]; 4711 ; 4712 ; char *tag = eot; 4713 ; 4714 ; char *completion; 4715 ; 4716 ; int j = tab; 4717 ; 4718 ; tag--; 4719 ; 4720 195C 788C lod R0,[R7,#-16] ; risf 4721 195E 1100 sub R0,#1 ; qas 4722 1960 789C str R0,[R7,#-16] ; qasmi 4723 ; while (*tag > ' ' && j > 0) { tag--; j--; } 4724 ; 4725 ay65 ; anon 4726 1962 788C lod R0,[R7,#-16] ; risf 4727 1964 80A0 lodb R1,[R0] ; risf 4728 1966 A810 cmp R1,#32 ; alu_i 4729 1968 14D88219 ble ay66 ; fjump F ; cfj 4730 196C 768C lod R0,[R7,#-20] ; risf 4731 196E 2800 cmp R0,#0 ; gfv 4732 1970 14D88219 ble ay66 ; fjump F ; cfj 4733 1974 788C lod R0,[R7,#-16] ; risf 4734 1976 1100 sub R0,#1 ; qas 4735 1978 789C str R0,[R7,#-16] ; qasmi 4736 197A 768C lod R0,[R7,#-20] ; risf 4737 197C 1100 sub R0,#1 ; qas 4738 197E 769C str R0,[R7,#-20] ; qasmi 4739 1980 F1CA bra ay65 ; anon 4740 ay66 ; anon 4741 ; tag++; 4742 ; 4743 1982 788C lod R0,[R7,#-16] ; risf 4744 1984 0900 add R0,#1 ; qas 4745 1986 789C str R0,[R7,#-16] ; qasmi 4746 ; *eot = (char) 0; 4747 ; 4748 1988 E000 lod R1,#0 ; lti 4749 198A 798C lod R0,[R7,#-14] ; risf 4750 198C 80B0 strb R1,[R0] ; assign 4751 ; completion = findcomp(tag); 4752 ; 4753 198E 788C lod R0,[R7,#-16] ; risf 4754 ; force VR0 to 0 ; call 4755 1990 67D1 mov r2,r7 ; call 4756 1992 120D sub r2,#26 ; call 4757 1994 3CD8C21B jsr _findcomp ; call 4758 ; force VR0 to 0 ; res 4759 1998 779C str R0,[R7,#-18] ; assign 4760 ; while(*completion > ' ') 4761 ; 4762 ay67 ; anon 4763 199A 778C lod R0,[R7,#-18] ; risf 4764 199C 80A0 lodb R1,[R0] ; risf 4765 199E A810 cmp R1,#32 ; alu_i 4766 19A0 14D8E419 ble ay68 ; fjump F ; cfj 4767 ; { 4768 ; 4769 ; local x [R7,#-22] 4770 ; s 4771 19A4 778C lod R0,[R7,#-18] ; risf 4772 19A6 E0D0 mov R1,R0 ; qasp1 4773 19A8 8900 add R1,#1 ; qasp 4774 19AA F79C str R1,[R7,#-18] ; qasp 4775 19AC 80A0 lodb R1,[R0] ; risf 4776 19AE F5BC strb R1,[R7,#-22] ; assign 4777 ; char x = *(completion++); 4778 ; 4779 ; shellecho(x); 4780 ; 4781 19B0 75AC lodb R0,[R7,#-22] ; risf 4782 ; force VR0 to 0 ; call 4783 19B2 67D1 mov r2,r7 ; call 4784 19B4 140D sub r2,#28 ; call 4785 19B6 3CD8821B jsr _shellecho ; call 4786 ; force VR0 to 0 ; res 4787 ; linebuffer[tab] = x; 4788 ; 4789 19BA 00D416DF lod R0,_linebuffer ; ris 4790 19BE FE8C lod R1,[R7,#-4] ; risf 4791 19C0 09D0 add R0,R1 ; alu-l 4792 19C2 F5AC lodb R1,[R7,#-22] ; risf 4793 19C4 80B0 strb R1,[R0] ; assign 4794 ; if (tab < (132) ) tab++; 4795 ; 4796 19C6 7E8C lod R0,[R7,#-4] ; risf 4797 19C8 2C40 cmp R0,#132 ; alu_i 4798 19CA 0CD8D419 bge ay69 ; fjump F ; cfj 4799 19CE 7E8C lod R0,[R7,#-4] ; risf 4800 19D0 0900 add R0,#1 ; qas 4801 19D2 7E9C str R0,[R7,#-4] ; qasmi 4802 ay69 ; anon 4803 ; if (tab > length) length = tab; 4804 ; 4805 19D4 7E8C lod R0,[R7,#-4] ; risf 4806 19D6 FC8C lod R1,[R7,#-8] ; risf 4807 19D8 29D0 cmp R0,R1 ; alu-l 4808 19DA 14D8E219 ble ay70 ; fjump F ; cfj 4809 19DE 7E8C lod R0,[R7,#-4] ; risf 4810 19E0 7C9C str R0,[R7,#-8] ; assign 4811 ay70 ; anon 4812 19E2 DCCA bra ay67 ; anon 4813 ay68 ; anon 4814 ; } 4815 ; 4816 ; break; 4817 ; 4818 19E4 28D8741B bra ay30 ; anon 4819 ay37 ; anon 4820 ; } 4821 ; 4822 ; 4823 ; 4824 ; case 3: 4825 ; 4826 ; linebuffer[0] = 0; 4827 ; 4828 19E8 E000 lod R1,#0 ; lti 4829 19EA 00D416DF lod R0,_linebuffer ; ris 4830 19EE 80B0 strb R1,[R0] ; assign 4831 ; printf("\\\n"); 4832 ; 4833 19F0 00F47E1B lod R0,#ay71 ; ltgd3 4834 ; force VR0 to 0 ; call 4835 19F4 67D1 mov r2,r7 ; call 4836 19F6 1209 sub r2,#18 ; call 4837 19F8 3CD89628 jsr _printf ; call 4838 ; force VR0 to 0 ; res 4839 ; return linebuffer; 4840 ; 4841 19FC 00D416DF lod R0,_linebuffer ; ris 4842 ; force VR0 to 0 ; loadtod0 4843 1A00 7F8F lod R6,[R7,#-2] ; cr 4844 1A02 808F lod r7,[r7] ; cr 4845 1A04 00F3 ret ; cr 4846 ay38 ; anon 4847 ; 4848 ; 4849 ; 4850 ; 4851 ; case 127: 4852 ; 4853 ; if (tab==0) break; 4854 ; 4855 1A06 7E8C lod R0,[R7,#-4] ; risf 4856 1A08 2800 cmp R0,#0 ; gfv 4857 1A0A 04D8121A bne ay72 ; fjump F ; cfj 4858 1A0E 28D8741B bra ay30 ; anon 4859 ay72 ; anon 4860 ; putchar(8); 4861 ; 4862 1A12 6004 lod R0,#8 ; lti 4863 ; force VR0 to 0 ; call 4864 1A14 67D1 mov r2,r7 ; call 4865 1A16 1209 sub r2,#18 ; call 4866 1A18 3CD8CE2B jsr _putchar ; call 4867 ; force VR0 to 0 ; res 4868 ; tab--; length--; 4869 ; 4870 1A1C 7E8C lod R0,[R7,#-4] ; risf 4871 1A1E 1100 sub R0,#1 ; qas 4872 1A20 7E9C str R0,[R7,#-4] ; qasmi 4873 1A22 7C8C lod R0,[R7,#-8] ; risf 4874 1A24 1100 sub R0,#1 ; qas 4875 1A26 7C9C str R0,[R7,#-8] ; qasmi 4876 ; { int i, backs = length-tab; 4877 ; 4878 ; local i [R7,#-14] 4879 ; s 4880 ; local backs [R7,#-16] 4881 ; s 4882 1A28 7C8C lod R0,[R7,#-8] ; risf 4883 1A2A FE8C lod R1,[R7,#-4] ; risf 4884 1A2C 11D0 sub R0,R1 ; alu-l 4885 1A2E 789C str R0,[R7,#-16] ; assign 4886 ; for (i=tab; i=0; i--) putchar(8); 4935 ; 4936 1A78 788C lod R0,[R7,#-16] ; risf 4937 1A7A 799C str R0,[R7,#-14] ; assign 4938 ay75 ; anon 4939 1A7C 798C lod R0,[R7,#-14] ; risf 4940 1A7E 2800 cmp R0,#0 ; gfv 4941 1A80 08D8961A blt ay76 ; fjump F ; cfj 4942 1A84 6004 lod R0,#8 ; lti 4943 ; force VR0 to 0 ; call 4944 1A86 67D1 mov r2,r7 ; call 4945 1A88 1609 sub r2,#22 ; call 4946 1A8A 3CD8CE2B jsr _putchar ; call 4947 ; force VR0 to 0 ; res 4948 1A8E 798C lod R0,[R7,#-14] ; risf 4949 1A90 1100 sub R0,#1 ; qas 4950 1A92 799C str R0,[R7,#-14] ; qasmi 4951 1A94 F4CA bra ay75 ; anon 4952 ay76 ; anon 4953 ; } 4954 ; 4955 ; break; 4956 ; 4957 1A96 28D8741B bra ay30 ; anon 4958 ay39 ; anon 4959 ; 4960 ; 4961 ; case 8: 4962 ; 4963 ; if (tab==0) break; 4964 ; 4965 1A9A 7E8C lod R0,[R7,#-4] ; risf 4966 1A9C 2800 cmp R0,#0 ; gfv 4967 1A9E 04D8A61A bne ay77 ; fjump F ; cfj 4968 1AA2 28D8741B bra ay30 ; anon 4969 ay77 ; anon 4970 ; putchar(8); 4971 ; 4972 1AA6 6004 lod R0,#8 ; lti 4973 ; force VR0 to 0 ; call 4974 1AA8 67D1 mov r2,r7 ; call 4975 1AAA 1209 sub r2,#18 ; call 4976 1AAC 3CD8CE2B jsr _putchar ; call 4977 ; force VR0 to 0 ; res 4978 ; tab--; 4979 ; 4980 1AB0 7E8C lod R0,[R7,#-4] ; risf 4981 1AB2 1100 sub R0,#1 ; qas 4982 1AB4 7E9C str R0,[R7,#-4] ; qasmi 4983 ; break; 4984 ; 4985 1AB6 28D8741B bra ay30 ; anon 4986 ay40 ; anon 4987 ; 4988 ; 4989 ; case 9+128: 4990 ; 4991 ; c = linebuffer[tab]; 4992 ; 4993 1ABA 00D416DF lod R0,_linebuffer ; ris 4994 1ABE FE8C lod R1,[R7,#-4] ; risf 4995 1AC0 09D0 add R0,R1 ; alu-l 4996 1AC2 80A0 lodb R1,[R0] ; risf 4997 1AC4 FABC strb R1,[R7,#-12] ; assign 4998 ; if (tab >= length) 4999 ; 5000 1AC6 7E8C lod R0,[R7,#-4] ; risf 5001 1AC8 FC8C lod R1,[R7,#-8] ; risf 5002 1ACA 29D0 cmp R0,R1 ; alu-l 5003 1ACC 08D8E01A blt ay78 ; fjump F ; cfj 5004 ; { 5005 ; 5006 ; c = ' '; 5007 ; 5008 1AD0 6010 lod R0,#32 ; lti 5009 1AD2 7ABC strb R0,[R7,#-12] ; assign 5010 ; linebuffer[tab] = c; 5011 ; 5012 1AD4 00D416DF lod R0,_linebuffer ; ris 5013 1AD8 FE8C lod R1,[R7,#-4] ; risf 5014 1ADA 09D0 add R0,R1 ; alu-l 5015 1ADC FAAC lodb R1,[R7,#-12] ; risf 5016 1ADE 80B0 strb R1,[R0] ; assign 5017 ay78 ; anon 5018 ; } 5019 ; 5020 ; putchar(c); 5021 ; 5022 1AE0 7AAC lodb R0,[R7,#-12] ; risf 5023 ; force VR0 to 0 ; call 5024 1AE2 67D1 mov r2,r7 ; call 5025 1AE4 1209 sub r2,#18 ; call 5026 1AE6 3CD8CE2B jsr _putchar ; call 5027 ; force VR0 to 0 ; res 5028 ; if (tab < (132) ) tab++; 5029 ; 5030 1AEA 7E8C lod R0,[R7,#-4] ; risf 5031 1AEC 2C40 cmp R0,#132 ; alu_i 5032 1AEE 0CD8F81A bge ay79 ; fjump F ; cfj 5033 1AF2 7E8C lod R0,[R7,#-4] ; risf 5034 1AF4 0900 add R0,#1 ; qas 5035 1AF6 7E9C str R0,[R7,#-4] ; qasmi 5036 ay79 ; anon 5037 ; if (tab > length) length = tab; 5038 ; 5039 1AF8 7E8C lod R0,[R7,#-4] ; risf 5040 1AFA FC8C lod R1,[R7,#-8] ; risf 5041 1AFC 29D0 cmp R0,R1 ; alu-l 5042 1AFE 14D8061B ble ay80 ; fjump F ; cfj 5043 1B02 7E8C lod R0,[R7,#-4] ; risf 5044 1B04 7C9C str R0,[R7,#-8] ; assign 5045 ay80 ; anon 5046 ; break; 5047 ; 5048 1B06 28D8741B bra ay30 ; anon 5049 ay41 ; anon 5050 ay42 ; anon 5051 ; 5052 ; 5053 ; case 13: 5054 ; 5055 ; case '\n': 5056 ; 5057 ; 5058 ; 5059 ; 5060 ; 5061 ; linebuffer[length] = (char) 0; 5062 ; 5063 1B0A 00D416DF lod R0,_linebuffer ; ris 5064 1B0E FC8C lod R1,[R7,#-8] ; risf 5065 1B10 09D0 add R0,R1 ; alu-l 5066 1B12 E000 lod R1,#0 ; lti 5067 1B14 80B0 strb R1,[R0] ; assign 5068 ; putchar(10); 5069 ; 5070 1B16 6204 lod R0,#10 ; lti 5071 ; force VR0 to 0 ; call 5072 1B18 67D1 mov r2,r7 ; call 5073 1B1A 1209 sub r2,#18 ; call 5074 1B1C 3CD8CE2B jsr _putchar ; call 5075 ; force VR0 to 0 ; res 5076 ; putchar(13); 5077 ; 5078 1B20 6504 lod R0,#13 ; lti 5079 ; force VR0 to 0 ; call 5080 1B22 67D1 mov r2,r7 ; call 5081 1B24 1209 sub r2,#18 ; call 5082 1B26 3CD8CE2B jsr _putchar ; call 5083 ; force VR0 to 0 ; res 5084 ; if (length) 5085 ; 5086 1B2A 7C8C lod R0,[R7,#-8] ; risf 5087 1B2C 2800 cmp R0,#0 ; gfv 5088 1B2E 00D86A1B beq ay81 ; fjmp1 ; cfj 5089 ; { 5090 ; 5091 ; lbcopy(linebuffer, lines[histline], (132) +1); 5092 ; 5093 1B32 6540 lod R0,#133 ; lti 5094 1B34 799C str R0,[R7,#-14] ; assign 5095 1B36 00D416DF lod R0,_linebuffer ; ris 5096 1B3A 80D420DF lod R1,_histline ; ris 5097 1B3E C900 asl R1,#1 ; anon 5098 1B40 00F518DF lod R2,#_lines ; ltgd2 5099 1B44 09D1 add R2,R1 ; alu-l 5100 1B46 8088 lod R1,[R2] ; risf 5101 ; force VR0 to 0 ; call 5102 ; force VR1 to 1 ; call 5103 1B48 67D1 mov r2,r7 ; call 5104 1B4A 1409 sub r2,#20 ; call 5105 1B4C 3CD8881D jsr _lbcopy ; call 5106 ; force VR0 to 0 ; res 5107 ; histline ++; 5108 ; 5109 1B50 00D420DF lod R0,_histline ; ris 5110 1B54 0900 add R0,#1 ; qas 5111 1B56 20D420DF str R0,_histline ; qasmi 5112 ; if (histline == (4) ) histline = 0; 5113 ; 5114 1B5A 00D420DF lod R0,_histline ; ris 5115 1B5E 2C00 cmp R0,#4 ; alu_i 5116 1B60 04D86A1B bne ay82 ; fjump F ; cfj 5117 1B64 6000 lod R0,#0 ; lti 5118 1B66 20D420DF str R0,_histline ; assign 5119 ay82 ; anon 5120 ay81 ; anon 5121 ; } 5122 ; 5123 ; 5124 ; 5125 ; 5126 ; 5127 ; return linebuffer; 5128 ; 5129 1B6A 00D416DF lod R0,_linebuffer ; ris 5130 ; force VR0 to 0 ; loadtod0 5131 1B6E 7F8F lod R6,[R7,#-2] ; cr 5132 1B70 808F lod r7,[r7] ; cr 5133 1B72 00F3 ret ; cr 5134 ay30 ; anon 5135 1B74 28D83017 bra ay20 ; anon 5136 ay21 ; anon 5137 1B78 7F8F lod R6,[R7,#-2] ; cr 5138 1B7A 808F lod r7,[r7] ; cr 5139 1B7C 00F3 ret ; cr 5140 1B7E 5C0A00 ay71 .data "\\",10,0 5141 5142 5143 ; Routine shellecho 5144 1B81 00 .align 2 5145 _shellecho .global 5146 1B82 809B str r7,[r2] 5147 1B84 E2D3 mov r7,r2 5148 1B86 7F9F str R6,[R7,#-2] 5149 1B88 019C str R0,[R7,#2] 5150 ; ------------------------------------------------- 5151 ; local c [R7,#2] 5152 ; s 5153 ; } 5154 ; 5155 ; } 5156 ; 5157 ; } 5158 ; 5159 ; 5160 ; 5161 ; 5162 ; 5163 ; void shellecho(char c) 5164 ; 5165 ; { 5166 ; 5167 ; if ((c >= 32) && (c < 127)) 5168 ; 5169 1B8A 01AC lodb R0,[R7,#2] ; risf 5170 1B8C 2810 cmp R0,#32 ; alu_i 5171 1B8E 08D8AA1B blt ay83 ; fjump F ; cfj 5172 1B92 01AC lodb R0,[R7,#2] ; risf 5173 1B94 2F3C cmp R0,#127 ; alu_i 5174 1B96 0CD8AA1B bge ay83 ; fjump F ; cfj 5175 ; { 5176 ; 5177 ; putchar(c); 5178 ; 5179 1B9A 01AC lodb R0,[R7,#2] ; risf 5180 ; force VR0 to 0 ; call 5181 1B9C 67D1 mov r2,r7 ; call 5182 1B9E 1005 sub r2,#8 ; call 5183 1BA0 3CD8CE2B jsr _putchar ; call 5184 ; force VR0 to 0 ; res 5185 ; return; 5186 ; 5187 1BA4 7F8F lod R6,[R7,#-2] ; cr 5188 1BA6 808F lod r7,[r7] ; cr 5189 1BA8 00F3 ret ; cr 5190 ay83 ; anon 5191 ; } 5192 ; 5193 ; printf("^%X", c); 5194 ; 5195 1BAA 00F4BE1B lod R0,#ay84 ; ltgd3 5196 1BAE 81AC lodb R1,[R7,#2] ; risf 5197 ; force VR0 to 0 ; call 5198 ; force VR1 to 1 ; call 5199 1BB0 67D1 mov r2,r7 ; call 5200 1BB2 1005 sub r2,#8 ; call 5201 1BB4 3CD89628 jsr _printf ; call 5202 ; force VR0 to 0 ; res 5203 1BB8 7F8F lod R6,[R7,#-2] ; cr 5204 1BBA 808F lod r7,[r7] ; cr 5205 1BBC 00F3 ret ; cr 5206 1BBE 5E255800 ay84 .data "^%X",0 5207 5208 5209 ; Routine findcomp 5210 .align 2 5211 _findcomp .global 5212 1BC2 809B str r7,[r2] 5213 1BC4 E2D3 mov r7,r2 5214 ; ------------------------------------------------- 5215 ; local tag R349 5216 ; s 5217 ; force VR0 to 0 ; pram 5218 ; local p [R7,#-4] 5219 ; s 5220 ; local q [R7,#-6] 5221 ; s 5222 ; force VR0 to 0 ; pram 5223 ; local start_search_line [R7,#-8] 5224 ; s 5225 1BC6 80D424DF lod R1,_comp_line ; ris 5226 1BCA FC9C str R1,[R7,#-8] ; assign 5227 ; force VR0 to 0 ; pram 5228 ; } 5229 ; 5230 ; 5231 ; 5232 ; 5233 ; 5234 ; char *findcomp(char *tag) 5235 ; 5236 ; { 5237 ; 5238 ; char *p, *q; 5239 ; 5240 ; int start_search_line = comp_line; 5241 ; 5242 ; while(1) 5243 ; 5244 ay85 ; anon 5245 ; { 5246 ; 5247 ; while (*comp_char > ' ') comp_char++; 5248 ; 5249 ay87 ; anon 5250 1BCC 80D422DF lod R1,_comp_char ; ris 5251 1BD0 00A5 lodb R2,[R1] ; risf 5252 1BD2 2811 cmp R2,#32 ; alu_i 5253 1BD4 14D8E41B ble ay88 ; fjump F ; cfj 5254 1BD8 80D422DF lod R1,_comp_char ; ris 5255 1BDC 8900 add R1,#1 ; qas 5256 1BDE A0D422DF str R1,_comp_char ; qasmi 5257 1BE2 F5CA bra ay87 ; anon 5258 ay88 ; anon 5259 ; while (*comp_char == 0) 5260 ; 5261 ay89 ; anon 5262 1BE4 80D422DF lod R1,_comp_char ; ris 5263 1BE8 00A5 lodb R2,[R1] ; risf 5264 1BEA 2801 cmp R2,#0 ; gfv 5265 1BEC 04D8361C bne ay90 ; fjump F ; cfj 5266 ; { 5267 ; 5268 ; comp_line = (comp_line >= (4) -1) ? 0 : comp_line + 1; 5269 ; 5270 1BF0 80D424DF lod R1,_comp_line ; ris 5271 1BF4 AB00 cmp R1,#3 ; alu_i 5272 1BF6 08D8001C blt ay91 ; fjump F ; cfj 5273 1BFA E000 lod R1,#0 ; lti 5274 1BFC 28D8081C bra ay92 ; anon 5275 ay91 ; anon 5276 1C00 00D524DF lod R2,_comp_line ; ris 5277 1C04 0901 add R2,#1 ; alu_i 5278 1C06 E2D0 mov R1,R2 ; ltmv 5279 ay92 ; anon 5280 1C08 A0D424DF str R1,_comp_line ; assign 5281 ; if (comp_line == start_search_line) return ""; 5282 ; 5283 1C0C 80D424DF lod R1,_comp_line ; ris 5284 1C10 7C8D lod R2,[R7,#-8] ; risf 5285 1C12 AAD0 cmp R1,R2 ; alu-l 5286 1C14 04D8221C bne ay93 ; fjump F ; cfj 5287 1C18 80F48E1C lod R1,#ay94 ; ltgd3 5288 1C1C 61D0 mov R0,R1 ; forceresolve 5289 1C1E 808F lod r7,[r7] ; cr 5290 1C20 00F3 ret ; cr 5291 ay93 ; anon 5292 ; comp_char = lines[comp_line]; 5293 ; 5294 1C22 00D524DF lod R2,_comp_line ; ris 5295 1C26 4901 asl R2,#1 ; anon 5296 1C28 80F418DF lod R1,#_lines ; ltgd2 5297 1C2C 8AD0 add R1,R2 ; alu-l 5298 1C2E 0085 lod R2,[R1] ; risf 5299 1C30 20D522DF str R2,_comp_char ; assign 5300 1C34 D8CA bra ay89 ; anon 5301 ay90 ; anon 5302 ; } 5303 ; 5304 ; while (*comp_char <= ' ') comp_char++; 5305 ; 5306 ay95 ; anon 5307 1C36 80D422DF lod R1,_comp_char ; ris 5308 1C3A 00A5 lodb R2,[R1] ; risf 5309 1C3C 2811 cmp R2,#32 ; alu_i 5310 1C3E 10D84E1C bgt ay96 ; fjump F ; cfj 5311 1C42 80D422DF lod R1,_comp_char ; ris 5312 1C46 8900 add R1,#1 ; qas 5313 1C48 A0D422DF str R1,_comp_char ; qasmi 5314 1C4C F5CA bra ay95 ; anon 5315 ay96 ; anon 5316 ; p = tag; 5317 ; 5318 1C4E 7E9C str R0,[R7,#-4] ; assign 5319 ; q = comp_char; 5320 ; 5321 1C50 80D422DF lod R1,_comp_char ; ris 5322 1C54 FD9C str R1,[R7,#-6] ; assign 5323 ; while(1) 5324 ; 5325 ay97 ; anon 5326 ; { 5327 ; 5328 ; if (*p <= ' ') return q; 5329 ; 5330 1C56 FE8C lod R1,[R7,#-4] ; risf 5331 1C58 00A5 lodb R2,[R1] ; risf 5332 1C5A 2811 cmp R2,#32 ; alu_i 5333 1C5C 10D8681C bgt ay99 ; fjump F ; cfj 5334 1C60 FD8C lod R1,[R7,#-6] ; risf 5335 1C62 61D0 mov R0,R1 ; forceresolve 5336 1C64 808F lod r7,[r7] ; cr 5337 1C66 00F3 ret ; cr 5338 ay99 ; anon 5339 ; if (*p != *q) break; 5340 ; 5341 1C68 FE8C lod R1,[R7,#-4] ; risf 5342 1C6A 00A5 lodb R2,[R1] ; risf 5343 1C6C FD8C lod R1,[R7,#-6] ; risf 5344 1C6E 80A5 lodb R3,[R1] ; risf 5345 1C70 2BD1 cmp R2,R3 ; alu-l 5346 1C72 00D87A1C beq ay100 ; fjump F ; cfj 5347 1C76 28D8881C bra ay98 ; anon 5348 ay100 ; anon 5349 ; p++; q++; 5350 ; 5351 1C7A FE8C lod R1,[R7,#-4] ; risf 5352 1C7C 8900 add R1,#1 ; qas 5353 1C7E FE9C str R1,[R7,#-4] ; qasmi 5354 1C80 FD8C lod R1,[R7,#-6] ; risf 5355 1C82 8900 add R1,#1 ; qas 5356 1C84 FD9C str R1,[R7,#-6] ; qasmi 5357 1C86 E8CA bra ay97 ; anon 5358 ay98 ; anon 5359 1C88 A2CA bra ay85 ; anon 5360 ay86 ; anon 5361 ; force VR0 to 0 ; pram 5362 1C8A 808F lod r7,[r7] ; cr 5363 1C8C 00F3 ret ; cr 5364 1C8E 00 ay94 .data 0 5365 5366 5367 ; Routine init_mylinein 5368 1C8F 00 .align 2 5369 _init_mylinein .global 5370 1C90 809B str r7,[r2] 5371 1C92 E2D3 mov r7,r2 5372 1C94 7F9F str R6,[R7,#-2] 5373 ; ------------------------------------------------- 5374 ; local i [R7,#-4] 5375 ; s 5376 ; } 5377 ; 5378 ; 5379 ; 5380 ; 5381 ; 5382 ; char *comp_char; 5383 ; 5384 ; int comp_line; 5385 ; 5386 ; 5387 ; 5388 ; void init_mylinein() 5389 ; 5390 ; { 5391 ; 5392 ; int i; 5393 ; 5394 ; pointer = 0; 5395 ; 5396 1C96 6000 lod R0,#0 ; lti 5397 1C98 20D412DF str R0,_pointer ; assign 5398 ; lineidx = 0; 5399 ; 5400 1C9C 6000 lod R0,#0 ; lti 5401 1C9E 20D414DF str R0,_lineidx ; assign 5402 ; for (i=0; i<(4) ; i++) 5403 ; 5404 1CA2 6000 lod R0,#0 ; lti 5405 1CA4 7E9C str R0,[R7,#-4] ; assign 5406 ay101 ; anon 5407 1CA6 7E8C lod R0,[R7,#-4] ; risf 5408 1CA8 2C00 cmp R0,#4 ; alu_i 5409 1CAA 0CD8DC1C bge ay102 ; fjump F ; cfj 5410 ; { 5411 ; 5412 ; lines[i] = (char *) malloc((132) +1); 5413 ; 5414 1CAE 6540 lod R0,#133 ; lti 5415 ; force VR0 to 0 ; call 5416 1CB0 67D1 mov r2,r7 ; call 5417 1CB2 1205 sub r2,#10 ; call 5418 1CB4 3CD8F81F jsr _malloc ; call 5419 ; force VR0 to 0 ; res 5420 1CB8 7E8D lod R2,[R7,#-4] ; risf 5421 1CBA 4901 asl R2,#1 ; anon 5422 1CBC 80F418DF lod R1,#_lines ; ltgd2 5423 1CC0 8AD0 add R1,R2 ; alu-l 5424 1CC2 0094 str R0,[R1] ; assign 5425 ; lines[i][0] = (char) 0; 5426 ; 5427 1CC4 FE8C lod R1,[R7,#-4] ; risf 5428 1CC6 C900 asl R1,#1 ; anon 5429 1CC8 00F418DF lod R0,#_lines ; ltgd2 5430 1CCC 09D0 add R0,R1 ; alu-l 5431 1CCE 6001 lod R2,#0 ; lti 5432 1CD0 8080 lod R1,[R0] ; risf 5433 1CD2 00B5 strb R2,[R1] ; assign 5434 1CD4 7E8C lod R0,[R7,#-4] ; risf 5435 1CD6 0900 add R0,#1 ; qas 5436 1CD8 7E9C str R0,[R7,#-4] ; qasmi 5437 1CDA E6CA bra ay101 ; anon 5438 ay102 ; anon 5439 ; } 5440 ; 5441 ; linebuffer = (char *) malloc((132) +1); 5442 ; 5443 1CDC 6540 lod R0,#133 ; lti 5444 ; force VR0 to 0 ; call 5445 1CDE 67D1 mov r2,r7 ; call 5446 1CE0 1205 sub r2,#10 ; call 5447 1CE2 3CD8F81F jsr _malloc ; call 5448 ; force VR0 to 0 ; res 5449 1CE6 20D416DF str R0,_linebuffer ; assign 5450 ; histline = 0; 5451 ; 5452 1CEA 6000 lod R0,#0 ; lti 5453 1CEC 20D420DF str R0,_histline ; assign 5454 ; comp_line = 0; 5455 ; 5456 1CF0 6000 lod R0,#0 ; lti 5457 1CF2 20D424DF str R0,_comp_line ; assign 5458 ; comp_char = linebuffer; 5459 ; 5460 1CF6 00D416DF lod R0,_linebuffer ; ris 5461 1CFA 20D422DF str R0,_comp_char ; assign 5462 1CFE 7F8F lod R6,[R7,#-2] ; cr 5463 1D00 808F lod r7,[r7] ; cr 5464 1D02 00F3 ret ; cr 5465 5466 5467 ; Routine forwardlines 5468 .align 2 5469 _forwardlines .global 5470 1D04 809B str r7,[r2] 5471 1D06 E2D3 mov r7,r2 5472 1D08 7F9F str R6,[R7,#-2] 5473 1D0A 019C str R0,[R7,#2] 5474 ; ------------------------------------------------- 5475 ; local v [R7,#2] 5476 ; s 5477 ; } 5478 ; 5479 ; 5480 ; 5481 ; int forwardlines(v) 5482 ; 5483 ; { 5484 ; 5485 ; v = (v==((4) -1)) ? 0 : v + 1; 5486 ; 5487 1D0C 018C lod R0,[R7,#2] ; risf 5488 1D0E 2B00 cmp R0,#3 ; alu_i 5489 1D10 04D81A1D bne ay103 ; fjump F ; cfj 5490 1D14 6000 lod R0,#0 ; lti 5491 1D16 28D8201D bra ay104 ; anon 5492 ay103 ; anon 5493 1D1A 818C lod R1,[R7,#2] ; risf 5494 1D1C 8900 add R1,#1 ; alu_i 5495 1D1E 61D0 mov R0,R1 ; ltmv 5496 ay104 ; anon 5497 1D20 019C str R0,[R7,#2] ; assign 5498 ; lbcopy(lines[v], linebuffer, (132) +1); 5499 ; 5500 1D22 6540 lod R0,#133 ; lti 5501 1D24 7E9C str R0,[R7,#-4] ; assign 5502 1D26 018C lod R0,[R7,#2] ; risf 5503 1D28 4900 asl R0,#1 ; anon 5504 1D2A 80F418DF lod R1,#_lines ; ltgd2 5505 1D2E 88D0 add R1,R0 ; alu-l 5506 1D30 0084 lod R0,[R1] ; risf 5507 1D32 80D416DF lod R1,_linebuffer ; ris 5508 ; force VR0 to 0 ; call 5509 ; force VR1 to 1 ; call 5510 1D36 67D1 mov r2,r7 ; call 5511 1D38 1205 sub r2,#10 ; call 5512 1D3A 3CD8881D jsr _lbcopy ; call 5513 ; force VR0 to 0 ; res 5514 ; return v; 5515 ; 5516 1D3E 018C lod R0,[R7,#2] ; risf 5517 ; force VR0 to 0 ; loadtod0 5518 1D40 7F8F lod R6,[R7,#-2] ; cr 5519 1D42 808F lod r7,[r7] ; cr 5520 1D44 00F3 ret ; cr 5521 5522 5523 ; Routine backlines 5524 .align 2 5525 _backlines .global 5526 1D46 809B str r7,[r2] 5527 1D48 E2D3 mov r7,r2 5528 1D4A 7F9F str R6,[R7,#-2] 5529 1D4C 019C str R0,[R7,#2] 5530 ; ------------------------------------------------- 5531 ; local v [R7,#2] 5532 ; s 5533 ; } 5534 ; 5535 ; } 5536 ; 5537 ; 5538 ; 5539 ; int backlines(v) 5540 ; 5541 ; { 5542 ; 5543 ; v = (v==0) ? (4) -1 : v - 1; 5544 ; 5545 1D4E 018C lod R0,[R7,#2] ; risf 5546 1D50 2800 cmp R0,#0 ; gfv 5547 1D52 04D85C1D bne ay105 ; fjump F ; cfj 5548 1D56 6300 lod R0,#3 ; lti 5549 1D58 28D8621D bra ay106 ; anon 5550 ay105 ; anon 5551 1D5C 818C lod R1,[R7,#2] ; risf 5552 1D5E 9100 sub R1,#1 ; alu_i 5553 1D60 61D0 mov R0,R1 ; ltmv 5554 ay106 ; anon 5555 1D62 019C str R0,[R7,#2] ; assign 5556 ; lbcopy(lines[v], linebuffer, (132) +1); 5557 ; 5558 1D64 6540 lod R0,#133 ; lti 5559 1D66 7E9C str R0,[R7,#-4] ; assign 5560 1D68 018C lod R0,[R7,#2] ; risf 5561 1D6A 4900 asl R0,#1 ; anon 5562 1D6C 80F418DF lod R1,#_lines ; ltgd2 5563 1D70 88D0 add R1,R0 ; alu-l 5564 1D72 0084 lod R0,[R1] ; risf 5565 1D74 80D416DF lod R1,_linebuffer ; ris 5566 ; force VR0 to 0 ; call 5567 ; force VR1 to 1 ; call 5568 1D78 67D1 mov r2,r7 ; call 5569 1D7A 1205 sub r2,#10 ; call 5570 1D7C 3CD8881D jsr _lbcopy ; call 5571 ; force VR0 to 0 ; res 5572 ; return v; 5573 ; 5574 1D80 018C lod R0,[R7,#2] ; risf 5575 ; force VR0 to 0 ; loadtod0 5576 1D82 7F8F lod R6,[R7,#-2] ; cr 5577 1D84 808F lod r7,[r7] ; cr 5578 1D86 00F3 ret ; cr 5579 5580 5581 ; Routine lbcopy 5582 .align 2 5583 _lbcopy .global 5584 1D88 809B str r7,[r2] 5585 1D8A E2D3 mov r7,r2 5586 1D8C 7F9F str R6,[R7,#-2] 5587 1D8E 019C str R0,[R7,#2] 5588 1D90 829C str R1,[R7,#4] 5589 ; ------------------------------------------------- 5590 ; local src [R7,#2] 5591 ; s 5592 ; local dest [R7,#4] 5593 ; s 5594 ; local count [R7,#6] 5595 ; s 5596 ; 5597 ; 5598 ; } 5599 ; 5600 ; 5601 ; 5602 ; 5603 ; 5604 ; 5605 ; 5606 ; 5607 ; 5608 ; 5609 ; 5610 ; char *lines[(4) ]; 5611 ; 5612 ; int histline; 5613 ; 5614 ; 5615 ; 5616 ; extern void sayprompt(); 5617 ; 5618 ; 5619 ; 5620 ; int lbcopy(char *src, char *dest, int count) 5621 ; 5622 ; { 5623 ; 5624 ; while (count-- > 0) 5625 ; 5626 ay109 ; anon 5627 1D92 038C lod R0,[R7,#6] ; risf 5628 1D94 E0D0 mov R1,R0 ; qasp1 5629 1D96 9100 sub R1,#1 ; qasp 5630 1D98 839C str R1,[R7,#6] ; qasp 5631 1D9A 2800 cmp R0,#0 ; gfv 5632 1D9C 14D8B61D ble ay110 ; fjump F ; cfj 5633 ; { 5634 ; 5635 ; *dest++ = *src++; 5636 ; 5637 1DA0 018C lod R0,[R7,#2] ; risf 5638 1DA2 E0D0 mov R1,R0 ; qasp1 5639 1DA4 8900 add R1,#1 ; qasp 5640 1DA6 819C str R1,[R7,#2] ; qasp 5641 1DA8 828C lod R1,[R7,#4] ; risf 5642 1DAA 61D1 mov R2,R1 ; qasp1 5643 1DAC 0901 add R2,#1 ; qasp 5644 1DAE 029D str R2,[R7,#4] ; qasp 5645 1DB0 00A1 lodb R2,[R0] ; risf 5646 1DB2 00B5 strb R2,[R1] ; assign 5647 1DB4 EFCA bra ay109 ; anon 5648 ay110 ; anon 5649 1DB6 7F8F lod R6,[R7,#-2] ; cr 5650 1DB8 808F lod r7,[r7] ; cr 5651 1DBA 00F3 ret ; cr 5652 5653 5654 ; Routine cookedchar 5655 .align 2 5656 _cookedchar .global 5657 1DBC 809B str r7,[r2] 5658 1DBE E2D3 mov r7,r2 5659 1DC0 7F9F str R6,[R7,#-2] 5660 1DC2 019C str R0,[R7,#2] 5661 ; ------------------------------------------------- 5662 ; local c [R7,#2] 5663 ; s 5664 ; } 5665 ; 5666 ; } 5667 ; 5668 ; 5669 ; 5670 ; 5671 ; 5672 ; void cookedchar (char c) 5673 ; 5674 ; { 5675 ; 5676 ; if (c != '\n') 5677 ; 5678 1DC4 01AC lodb R0,[R7,#2] ; risf 5679 1DC6 2A04 cmp R0,#10 ; alu_i 5680 1DC8 00D8DC1D beq ay111 ; fjump F ; cfj 5681 ; { 5682 ; 5683 ; putchar(c); 5684 ; 5685 1DCC 01AC lodb R0,[R7,#2] ; risf 5686 ; force VR0 to 0 ; call 5687 1DCE 67D1 mov r2,r7 ; call 5688 1DD0 1005 sub r2,#8 ; call 5689 1DD2 3CD8CE2B jsr _putchar ; call 5690 ; force VR0 to 0 ; res 5691 ; return; 5692 ; 5693 1DD6 7F8F lod R6,[R7,#-2] ; cr 5694 1DD8 808F lod r7,[r7] ; cr 5695 1DDA 00F3 ret ; cr 5696 ay111 ; anon 5697 ; } 5698 ; 5699 ; 5700 ; 5701 ; putchar(c); 5702 ; 5703 1DDC 01AC lodb R0,[R7,#2] ; risf 5704 ; force VR0 to 0 ; call 5705 1DDE 67D1 mov r2,r7 ; call 5706 1DE0 1005 sub r2,#8 ; call 5707 1DE2 3CD8CE2B jsr _putchar ; call 5708 ; force VR0 to 0 ; res 5709 ; return; 5710 ; 5711 1DE6 7F8F lod R6,[R7,#-2] ; cr 5712 1DE8 808F lod r7,[r7] ; cr 5713 1DEA 00F3 ret ; cr 5714 5715 5716 ; Routine cookcharin 5717 .align 2 5718 _cookcharin .global 5719 1DEC 809B str r7,[r2] 5720 1DEE E2D3 mov r7,r2 5721 1DF0 7F9F str R6,[R7,#-2] 5722 ; ------------------------------------------------- 5723 ; local c [R7,#-4] 5724 ; s 5725 ; } 5726 ; 5727 ; 5728 ; 5729 ; 5730 ; 5731 ; 5732 ; 5733 ; 5734 ; 5735 ; 5736 ; 5737 ; 5738 ; 5739 ; char cookcharin() 5740 ; 5741 ; { 5742 ; 5743 ; char c; 5744 ; 5745 ; ; 5746 ; 5747 ; while(1) 5748 ; 5749 ay112 ; anon 5750 ; { 5751 ; 5752 ; c = getchar() & 0x7F; 5753 ; 5754 1DF2 67D1 mov r2,r7 ; call 5755 1DF4 1205 sub r2,#10 ; call 5756 1DF6 3CD8401F jsr _getchar ; call 5757 ; force VR0 to 0 ; res 5758 1DFA 3F3C and R0,#127 ; alu_i 5759 1DFC 7EBC strb R0,[R7,#-4] ; assign 5760 ; ; 5761 ; 5762 ; return c; 5763 ; 5764 1DFE 7EAC lodb R0,[R7,#-4] ; risf 5765 ; force VR0 to 0 ; loadtod0 5766 1E00 7F8F lod R6,[R7,#-2] ; cr 5767 1E02 808F lod r7,[r7] ; cr 5768 1E04 00F3 ret ; cr 5769 1E06 F6CA bra ay112 ; anon 5770 ay113 ; anon 5771 1E08 7F8F lod R6,[R7,#-2] ; cr 5772 1E0A 808F lod r7,[r7] ; cr 5773 1E0C 00F3 ret ; cr 5774 5775 5776 ; Routine rhex 5777 .align 2 5778 _rhex .global 5779 1E0E 809B str r7,[r2] 5780 1E10 E2D3 mov r7,r2 5781 1E12 7F9F str R6,[R7,#-2] 5782 1E14 019C str R0,[R7,#2] 5783 ; ------------------------------------------------- 5784 ; local p [R7,#2] 5785 ; s 5786 ; local v [R7,#-4] 5787 ; s 5788 1E16 818C lod R1,[R7,#2] ; risf 5789 1E18 61D0 mov R0,R1 ; qasp1 5790 1E1A 0900 add R0,#1 ; qasp 5791 1E1C 019C str R0,[R7,#2] ; qasp 5792 1E1E 00A4 lodb R0,[R1] ; risf 5793 ; force VR0 to 0 ; call 5794 1E20 67D1 mov r2,r7 ; call 5795 1E22 1005 sub r2,#8 ; call 5796 1E24 3CD8641E jsr _digit ; call 5797 ; force VR0 to 0 ; res 5798 1E28 7E9C str R0,[R7,#-4] ; assign 5799 ; local s [R7,#-6] 5800 ; s 5801 1E2A 6000 lod R0,#0 ; lti 5802 1E2C 7D9C str R0,[R7,#-6] ; assign 5803 ; } 5804 ; 5805 ; 5806 ; 5807 ; 5808 ; 5809 ; 5810 ; 5811 ; int rhex(char *p) 5812 ; 5813 ; { 5814 ; 5815 ; int v = digit(*p++); 5816 ; 5817 ; int s = 0; 5818 ; 5819 ; while (v >= 0) 5820 ; 5821 ay114 ; anon 5822 1E2E 7E8C lod R0,[R7,#-4] ; risf 5823 1E30 2800 cmp R0,#0 ; gfv 5824 1E32 08D85C1E blt ay115 ; fjump F ; cfj 5825 ; { 5826 ; 5827 ; s = (s << 4) + v; 5828 ; 5829 1E36 7D8C lod R0,[R7,#-6] ; risf 5830 1E38 4900 asl R0,#1 ; fshif 5831 1E3A 4900 asl R0,#1 ; fshif 5832 1E3C 4900 asl R0,#1 ; fshif 5833 1E3E 4900 asl R0,#1 ; fshif 5834 1E40 FE8C lod R1,[R7,#-4] ; risf 5835 1E42 09D0 add R0,R1 ; alu-l 5836 1E44 7D9C str R0,[R7,#-6] ; assign 5837 ; v = digit(*p++); 5838 ; 5839 1E46 818C lod R1,[R7,#2] ; risf 5840 1E48 61D0 mov R0,R1 ; qasp1 5841 1E4A 0900 add R0,#1 ; qasp 5842 1E4C 019C str R0,[R7,#2] ; qasp 5843 1E4E 00A4 lodb R0,[R1] ; risf 5844 ; force VR0 to 0 ; call 5845 1E50 67D1 mov r2,r7 ; call 5846 1E52 1405 sub r2,#12 ; call 5847 1E54 3CD8641E jsr _digit ; call 5848 ; force VR0 to 0 ; res 5849 1E58 7E9C str R0,[R7,#-4] ; assign 5850 1E5A EACA bra ay114 ; anon 5851 ay115 ; anon 5852 ; } 5853 ; 5854 ; return s; 5855 ; 5856 1E5C 7D8C lod R0,[R7,#-6] ; risf 5857 ; force VR0 to 0 ; loadtod0 5858 1E5E 7F8F lod R6,[R7,#-2] ; cr 5859 1E60 808F lod r7,[r7] ; cr 5860 1E62 00F3 ret ; cr 5861 5862 5863 ; Routine digit 5864 .align 2 5865 _digit .global 5866 1E64 809B str r7,[r2] 5867 1E66 E2D3 mov r7,r2 5868 ; ------------------------------------------------- 5869 ; local c R473 5870 ; s 5871 ; force VR0 to 0 ; pram 5872 ; } 5873 ; 5874 ; 5875 ; 5876 ; int digit(char c) 5877 ; 5878 ; { 5879 ; 5880 ; if (c <'0') return -1; 5881 ; 5882 1E68 2818 cmp R0,#48 ; alu_i 5883 1E6A 0CD8781E bge ay116 ; fjump F ; cfj 5884 1E6E 80F4FFFF lod R1,#-1 ; lti 5885 1E72 61D0 mov R0,R1 ; forceresolve 5886 1E74 808F lod r7,[r7] ; cr 5887 1E76 00F3 ret ; cr 5888 ay116 ; anon 5889 ; if (c <= '9') return c - '0'; 5890 ; 5891 1E78 291C cmp R0,#57 ; alu_i 5892 1E7A 10D8841E bgt ay117 ; fjump F ; cfj 5893 1E7E 1018 sub R0,#48 ; alu_i 5894 ; force VR0 to 0 ; loadtod0 5895 1E80 808F lod r7,[r7] ; cr 5896 1E82 00F3 ret ; cr 5897 ay117 ; anon 5898 ; if (c < 'A') return -1; 5899 ; 5900 1E84 2920 cmp R0,#65 ; alu_i 5901 1E86 0CD8941E bge ay118 ; fjump F ; cfj 5902 1E8A 80F4FFFF lod R1,#-1 ; lti 5903 1E8E 61D0 mov R0,R1 ; forceresolve 5904 1E90 808F lod r7,[r7] ; cr 5905 1E92 00F3 ret ; cr 5906 ay118 ; anon 5907 ; if (c <= 'F') return c - 'A' + 10; 5908 ; 5909 1E94 2E20 cmp R0,#70 ; alu_i 5910 1E96 10D8A81E bgt ay119 ; fjump F ; cfj 5911 1E9A 1120 sub R0,#65 ; alu_i 5912 1E9C E0D0 mov R1,R0 ; lt-u 5913 1E9E 8A04 add R1,#10 ; ltgr 5914 1EA0 61D1 mov R2,R1 ; ltmv 5915 1EA2 62D0 mov R0,R2 ; forceresolve 5916 1EA4 808F lod r7,[r7] ; cr 5917 1EA6 00F3 ret ; cr 5918 ay119 ; anon 5919 ; if (c < 'a') return -1; 5920 ; 5921 1EA8 2930 cmp R0,#97 ; alu_i 5922 1EAA 0CD8B81E bge ay120 ; fjump F ; cfj 5923 1EAE 80F4FFFF lod R1,#-1 ; lti 5924 1EB2 61D0 mov R0,R1 ; forceresolve 5925 1EB4 808F lod r7,[r7] ; cr 5926 1EB6 00F3 ret ; cr 5927 ay120 ; anon 5928 ; if (c <= 'f') return c - 'a' + 10; 5929 ; 5930 1EB8 2E30 cmp R0,#102 ; alu_i 5931 1EBA 10D8CC1E bgt ay121 ; fjump F ; cfj 5932 1EBE 1130 sub R0,#97 ; alu_i 5933 1EC0 E0D0 mov R1,R0 ; lt-u 5934 1EC2 8A04 add R1,#10 ; ltgr 5935 1EC4 61D1 mov R2,R1 ; ltmv 5936 1EC6 62D0 mov R0,R2 ; forceresolve 5937 1EC8 808F lod r7,[r7] ; cr 5938 1ECA 00F3 ret ; cr 5939 ay121 ; anon 5940 ; return -1; 5941 ; 5942 1ECC 80F4FFFF lod R1,#-1 ; lti 5943 1ED0 61D0 mov R0,R1 ; forceresolve 5944 1ED2 808F lod r7,[r7] ; cr 5945 1ED4 00F3 ret ; cr 5946 ; force VR0 to 0 ; pram 5947 5948 5949 ; Routine unnextch 5950 .align 2 5951 _unnextch .global 5952 1ED6 809B str r7,[r2] 5953 1ED8 E2D3 mov r7,r2 5954 ; ------------------------------------------------- 5955 ; } 5956 ; 5957 ; 5958 ; 5959 ; unnextch() 5960 ; 5961 ; { 5962 ; 5963 ; if (pointer) pointer -= 1; 5964 ; 5965 1EDA 00D412DF lod R0,_pointer ; ris 5966 1EDE 2800 cmp R0,#0 ; gfv 5967 1EE0 00D8EE1E beq ay122 ; fjmp1 ; cfj 5968 1EE4 00D412DF lod R0,_pointer ; ris 5969 1EE8 1100 sub R0,#1 ; alu_i 5970 1EEA 20D412DF str R0,_pointer ; assign 5971 ay122 ; anon 5972 1EEE 808F lod r7,[r7] ; cr 5973 1EF0 00F3 ret ; cr 5974 5975 5976 ; Routine nextch1 5977 .align 2 5978 _nextch1 .global 5979 1EF2 809B str r7,[r2] 5980 1EF4 E2D3 mov r7,r2 5981 ; ------------------------------------------------- 5982 ; } 5983 ; 5984 ; 5985 ; 5986 ; char nextch1() 5987 ; 5988 ; { 5989 ; 5990 ; return linebuffer[pointer++]; 5991 ; 5992 1EF6 00D412DF lod R0,_pointer ; ris 5993 1EFA E0D0 mov R1,R0 ; qasp1 5994 1EFC 8900 add R1,#1 ; qasp 5995 1EFE A0D412DF str R1,_pointer ; qasp 5996 1F02 80D416DF lod R1,_linebuffer ; ris 5997 1F06 88D0 add R1,R0 ; alu-l 5998 1F08 00A4 lodb R0,[R1] ; risf 5999 ; force VR0 to 0 ; loadtod0 6000 1F0A 808F lod r7,[r7] ; cr 6001 1F0C 00F3 ret ; cr 6002 6003 6004 ; Routine nextch 6005 .align 2 6006 _nextch .global 6007 1F0E 809B str r7,[r2] 6008 1F10 E2D3 mov r7,r2 6009 ; ------------------------------------------------- 6010 ; local r [R7,#-4] 6011 ; s 6012 ; 6013 ; 6014 ; 6015 ; 6016 ; 6017 ; 6018 ; 6019 ; 6020 ; 6021 ; 6022 ; typedef unsigned char uchar; 6023 ; 6024 ; 6025 ; 6026 ; 6027 ; 6028 ; 6029 ; 6030 ; 6031 ; 6032 ; 6033 ; 6034 ; typedef struct stdio 6035 ; 6036 ; { 6037 ; 6038 ; int flags; 6039 ; 6040 ; int sysfd; 6041 ; 6042 ; int mode; 6043 ; 6044 ; int bytes; 6045 ; 6046 ; char *poi; 6047 ; 6048 ; int error; 6049 ; 6050 ; int index; 6051 ; 6052 ; char data[32 ]; 6053 ; 6054 ; } STDIO; 6055 ; 6056 ; 6057 ; 6058 ; 6059 ; 6060 ; extern int open(char *, int); 6061 ; 6062 ; extern int close(char *, int); 6063 ; 6064 ; extern int main(int, char **); 6065 ; 6066 ; extern void _sa_wrch(char); 6067 ; 6068 ; extern char _sa_rdch(); 6069 ; 6070 ; 6071 ; 6072 ; extern char getchar(); 6073 ; 6074 ; extern void putchar(char); 6075 ; 6076 ; extern char toupper(char); 6077 ; 6078 ; extern char tolower(char); 6079 ; 6080 ; extern int strlen(const char *); 6081 ; 6082 ; extern int strcmp(const char *, const char *); 6083 ; 6084 ; extern int strncmp(char *, char *, int); 6085 ; 6086 ; extern int console_flags; 6087 ; 6088 ; extern void exit(int); 6089 ; 6090 ; extern char *malloc(int); 6091 ; 6092 ; extern int _exit(int); 6093 ; 6094 ; extern int strlen(char *); 6095 ; 6096 ; extern int isdigit(char); 6097 ; 6098 ; extern int atoi(char *); 6099 ; 6100 ; extern int checkend(); 6101 ; 6102 ; extern char *strncpy(char *, char *, int); 6103 ; 6104 ; extern void flush_dtoi(); 6105 ; 6106 ; extern void printf(); 6107 ; 6108 ; 6109 ; 6110 ; 6111 ; 6112 ; 6113 ; 6114 ; 6115 ; 6116 ; int pointer, lineidx; 6117 ; 6118 ; char *linebuffer; 6119 ; 6120 ; 6121 ; 6122 ; 6123 ; 6124 ; 6125 ; 6126 ; char nextch() 6127 ; 6128 ; { 6129 ; 6130 ; char r; 6131 ; 6132 ; do 6133 ; 6134 ay123 ; anon 6135 ; { 6136 ; 6137 ; r = linebuffer[pointer++]; 6138 ; 6139 1F12 80D412DF lod R1,_pointer ; ris 6140 1F16 61D0 mov R0,R1 ; qasp1 6141 1F18 0900 add R0,#1 ; qasp 6142 1F1A 20D412DF str R0,_pointer ; qasp 6143 1F1E 00D416DF lod R0,_linebuffer ; ris 6144 1F22 09D0 add R0,R1 ; alu-l 6145 1F24 80A0 lodb R1,[R0] ; risf 6146 1F26 FEBC strb R1,[R7,#-4] ; assign 6147 1F28 7EAC lodb R0,[R7,#-4] ; risf 6148 1F2A 2810 cmp R0,#32 ; alu_i 6149 1F2C F3C0 beq ay123 ; ctj 6150 ; } while (r == ' '); 6151 ; 6152 ; 6153 ; 6154 ; return r; 6155 ; 6156 1F2E 7EAC lodb R0,[R7,#-4] ; risf 6157 ; force VR0 to 0 ; loadtod0 6158 1F30 808F lod r7,[r7] ; cr 6159 1F32 00F3 ret ; cr 6160 ; _open .extern 6161 ; _close .extern 6162 ; _main .extern 6163 ; __sa_wrch .extern 6164 ; __sa_rdch .extern 6165 ; _getchar .extern 6166 ; _putchar .extern 6167 ; _toupper .extern 6168 ; _tolower .extern 6169 ; _strlen .extern 6170 ; _strcmp .extern 6171 ; _strncmp .extern 6172 .bss 6173 ;_console_flags .extern 6174 ; _exit .extern 6175 ; _malloc .extern 6176 ; __exit .extern 6177 ; _strlen .extern 6178 ; _isdigit .extern 6179 ; _atoi .extern 6180 ; _checkend .extern 6181 ; _strncpy .extern 6182 ; _flush_dtoi .extern 6183 ; _printf .extern 6184 _stdin .global 6185 DF46 0000 .defs 2 6188 _stdout .global 6189 DF48 0000 .defs 2 6192 _stderr .global 6193 DF4A 0000 .defs 2 6196 _errno .global 6197 DF4C 0000 .defs 2 6200 _deb .global 6201 DF4E 0000 .defs 2 6204 _kmalloc_poi .global 6205 DF50 0000 .defs 2 6208 _spf 6209 DF52 0000 .defs 2 6212 __spfbuf 6213 DF54 00000000 .defs 1024 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 7238 __zeroflag 7239 E354 00 .defs 1 7241 ;_kmalloc_poi .extern 7242 .text 7243 7244 7245 ; Routine ioctl 7246 .align 2 7247 _ioctl .global 7248 1F34 809B str r7,[r2] 7249 1F36 E2D3 mov r7,r2 7250 ; ------------------------------------------------- 7251 ; } 7252 ; 7253 ; 7254 ; 7255 ; 7256 ; 7257 ; int ioctl() 7258 ; 7259 ; { 7260 ; 7261 ; return -1; 7262 ; 7263 1F38 00F4FFFF lod R0,#-1 ; lti 7264 ; force VR0 to 0 ; loadtod0 7265 1F3C 808F lod r7,[r7] ; cr 7266 1F3E 00F3 ret ; cr 7267 7268 7269 ; Routine getchar 7270 .align 2 7271 _getchar .global 7272 1F40 809B str r7,[r2] 7273 1F42 E2D3 mov r7,r2 7274 1F44 7F9F str R6,[R7,#-2] 7275 ; ------------------------------------------------- 7276 ; } 7277 ; 7278 ; 7279 ; 7280 ; char getchar() 7281 ; 7282 ; { 7283 ; 7284 ; return _sa_rdch (); 7285 ; 7286 1F46 67D1 mov r2,r7 ; call 7287 1F48 1005 sub r2,#8 ; call 7288 1F4A 3CD81A00 jsr __sa_rdch ; call 7289 ; force VR0 to 0 ; res 7290 ; force VR0 to 0 ; loadtod0 7291 1F4E 7F8F lod R6,[R7,#-2] ; cr 7292 1F50 808F lod r7,[r7] ; cr 7293 1F52 00F3 ret ; cr 7294 7295 7296 ; Routine read 7297 .align 2 7298 _read .global 7299 1F54 809B str r7,[r2] 7300 1F56 E2D3 mov r7,r2 7301 1F58 7F9F str R6,[R7,#-2] 7302 1F5A 019C str R0,[R7,#2] 7303 1F5C 829C str R1,[R7,#4] 7304 ; ------------------------------------------------- 7305 ; local f [R7,#2] 7306 ; s 7307 ; local buf [R7,#4] 7308 ; s 7309 ; local len [R7,#6] 7310 ; s 7311 ; local c [R7,#-4] 7312 ; s 7313 1F5E 67D1 mov r2,r7 ; call 7314 1F60 1005 sub r2,#8 ; call 7315 1F62 3CD81A00 jsr __sa_rdch ; call 7316 ; force VR0 to 0 ; res 7317 1F66 7EBC strb R0,[R7,#-4] ; assign 7318 ; } 7319 ; 7320 ; 7321 ; 7322 ; 7323 ; 7324 ; 7325 ; 7326 ; int read(int f, char *buf, int len) 7327 ; 7328 ; { 7329 ; 7330 ; char c = _sa_rdch (); 7331 ; 7332 ; *buf = c; 7333 ; 7334 1F68 FEAC lodb R1,[R7,#-4] ; risf 7335 1F6A 028C lod R0,[R7,#4] ; risf 7336 1F6C 80B0 strb R1,[R0] ; assign 7337 ; return 1; 7338 ; 7339 1F6E 6100 lod R0,#1 ; lti 7340 ; force VR0 to 0 ; loadtod0 7341 1F70 7F8F lod R6,[R7,#-2] ; cr 7342 1F72 808F lod r7,[r7] ; cr 7343 1F74 00F3 ret ; cr 7344 7345 7346 ; Routine sa_write 7347 .align 2 7348 _sa_write .global 7349 1F76 809B str r7,[r2] 7350 1F78 E2D3 mov r7,r2 7351 1F7A 7F9F str R6,[R7,#-2] 7352 1F7C 019C str R0,[R7,#2] 7353 1F7E 829C str R1,[R7,#4] 7354 ; ------------------------------------------------- 7355 ; local buf [R7,#2] 7356 ; s 7357 ; local len [R7,#4] 7358 ; s 7359 ; local checksum [R7,#-4] 7360 ; s 7361 1F80 6724 lod R0,#79 ; lti 7362 1F82 7EBC strb R0,[R7,#-4] ; assign 7363 ; } 7364 ; 7365 ; 7366 ; 7367 ; 7368 ; 7369 ; int sa_write(char *buf, int len) 7370 ; 7371 ; { 7372 ; 7373 ; unsigned char checksum='O'; 7374 ; 7375 ; ; 7376 ; 7377 ; while (len >0) 7378 ; 7379 br10 ; anon 7380 1F84 028C lod R0,[R7,#4] ; risf 7381 1F86 2800 cmp R0,#0 ; gfv 7382 1F88 14D8BC1F ble br11 ; fjump F ; cfj 7383 ; { 7384 ; 7385 ; local c [R7,#-6] 7386 ; s 7387 1F8C 018C lod R0,[R7,#2] ; risf 7388 1F8E E0D0 mov R1,R0 ; qasp1 7389 1F90 8900 add R1,#1 ; qasp 7390 1F92 819C str R1,[R7,#2] ; qasp 7391 1F94 80A0 lodb R1,[R0] ; risf 7392 1F96 FDBC strb R1,[R7,#-6] ; assign 7393 ; char c=*buf++; 7394 ; 7395 ; if (c == '\n') 7396 ; 7397 1F98 7DAC lodb R0,[R7,#-6] ; risf 7398 1F9A 2A04 cmp R0,#10 ; alu_i 7399 1F9C 04D8AA1F bne br12 ; fjump F ; cfj 7400 ; { 7401 ; 7402 ; _sa_wrch(13); 7403 ; 7404 1FA0 6504 lod R0,#13 ; lti 7405 ; force VR0 to 0 ; call 7406 1FA2 67D1 mov r2,r7 ; call 7407 1FA4 1405 sub r2,#12 ; call 7408 1FA6 3CD80C00 jsr __sa_wrch ; call 7409 ; force VR0 to 0 ; res 7410 br12 ; anon 7411 ; } 7412 ; 7413 ; _sa_wrch(c); 7414 ; 7415 1FAA 7DAC lodb R0,[R7,#-6] ; risf 7416 ; force VR0 to 0 ; call 7417 1FAC 67D1 mov r2,r7 ; call 7418 1FAE 1405 sub r2,#12 ; call 7419 1FB0 3CD80C00 jsr __sa_wrch ; call 7420 ; force VR0 to 0 ; res 7421 ; len -= 1; 7422 ; 7423 1FB4 028C lod R0,[R7,#4] ; risf 7424 1FB6 1100 sub R0,#1 ; alu_i 7425 1FB8 029C str R0,[R7,#4] ; assign 7426 1FBA E5CA bra br10 ; anon 7427 br11 ; anon 7428 ; } 7429 ; 7430 ; return 0; 7431 ; 7432 1FBC 6000 lod R0,#0 ; lti 7433 ; force VR0 to 0 ; loadtod0 7434 1FBE 7F8F lod R6,[R7,#-2] ; cr 7435 1FC0 808F lod r7,[r7] ; cr 7436 1FC2 00F3 ret ; cr 7437 7438 7439 ; Routine write 7440 .align 2 7441 _write .global 7442 1FC4 809B str r7,[r2] 7443 1FC6 E2D3 mov r7,r2 7444 1FC8 7F9F str R6,[R7,#-2] 7445 1FCA 019C str R0,[R7,#2] 7446 1FCC 829C str R1,[R7,#4] 7447 ; ------------------------------------------------- 7448 ; local fd [R7,#2] 7449 ; s 7450 ; local buf [R7,#4] 7451 ; s 7452 ; local len [R7,#6] 7453 ; s 7454 ; } 7455 ; 7456 ; 7457 ; 7458 ; 7459 ; 7460 ; int write(int fd, char *buf, int len) 7461 ; 7462 ; { 7463 ; 7464 ; ; 7465 ; 7466 ; while (len >0) 7467 ; 7468 br13 ; anon 7469 1FCE 038C lod R0,[R7,#6] ; risf 7470 1FD0 2800 cmp R0,#0 ; gfv 7471 1FD2 14D8F01F ble br14 ; fjump F ; cfj 7472 ; { 7473 ; 7474 ; _sa_wrch(*buf++); 7475 ; 7476 1FD6 828C lod R1,[R7,#4] ; risf 7477 1FD8 61D0 mov R0,R1 ; qasp1 7478 1FDA 0900 add R0,#1 ; qasp 7479 1FDC 029C str R0,[R7,#4] ; qasp 7480 1FDE 00A4 lodb R0,[R1] ; risf 7481 ; force VR0 to 0 ; call 7482 1FE0 67D1 mov r2,r7 ; call 7483 1FE2 1005 sub r2,#8 ; call 7484 1FE4 3CD80C00 jsr __sa_wrch ; call 7485 ; force VR0 to 0 ; res 7486 ; len -= 1; 7487 ; 7488 1FE8 038C lod R0,[R7,#6] ; risf 7489 1FEA 1100 sub R0,#1 ; alu_i 7490 1FEC 039C str R0,[R7,#6] ; assign 7491 1FEE F0CA bra br13 ; anon 7492 br14 ; anon 7493 ; } 7494 ; 7495 ; return 0; 7496 ; 7497 1FF0 6000 lod R0,#0 ; lti 7498 ; force VR0 to 0 ; loadtod0 7499 1FF2 7F8F lod R6,[R7,#-2] ; cr 7500 1FF4 808F lod r7,[r7] ; cr 7501 1FF6 00F3 ret ; cr 7502 7503 7504 ; Routine malloc 7505 .align 2 7506 _malloc .global 7507 1FF8 809B str r7,[r2] 7508 1FFA E2D3 mov r7,r2 7509 ; ------------------------------------------------- 7510 ; local size R131 7511 ; s 7512 ; force VR0 to 0 ; pram 7513 ; local r [R7,#-4] 7514 ; s 7515 1FFC 80D450DF lod R1,_kmalloc_poi ; ris 7516 2000 FE9C str R1,[R7,#-4] ; assign 7517 ; force VR0 to 0 ; pram 7518 ; } 7519 ; 7520 ; 7521 ; 7522 ; 7523 ; 7524 ; 7525 ; 7526 ; 7527 ; 7528 ; 7529 ; 7530 ; 7531 ; 7532 ; extern uchar *kmalloc_poi; 7533 ; 7534 ; char *malloc(int size) 7535 ; 7536 ; { 7537 ; 7538 ; uchar *r = kmalloc_poi; 7539 ; 7540 ; 7541 ; 7542 ; size = (size + 1) & 0xfffE; 7543 ; 7544 2002 E0D0 mov R1,R0 ; lt-u 7545 2004 8900 add R1,#1 ; ltgr 7546 2006 61D1 mov R2,R1 ; ltmv 7547 2008 80F4FEFF lod R1,#65534 ; lti 7548 200C 39D1 and R2,R1 ; alu-l 7549 200E 62D0 mov R0,R2 ; assign 7550 ; kmalloc_poi += size; 7551 ; 7552 2010 80D450DF lod R1,_kmalloc_poi ; ris 7553 2014 88D0 add R1,R0 ; alu-l 7554 2016 A0D450DF str R1,_kmalloc_poi ; assign 7555 ; return r; 7556 ; 7557 201A FE8C lod R1,[R7,#-4] ; risf 7558 201C 61D0 mov R0,R1 ; forceresolve 7559 201E 808F lod r7,[r7] ; cr 7560 2020 00F3 ret ; cr 7561 ; force VR0 to 0 ; pram 7562 7563 7564 ; Routine atoi 7565 .align 2 7566 _atoi .global 7567 2022 809B str r7,[r2] 7568 2024 E2D3 mov r7,r2 7569 ; ------------------------------------------------- 7570 ; local s R140 7571 ; s 7572 ; force VR0 to 0 ; pram 7573 ; local r [R7,#-4] 7574 ; s 7575 2026 E000 lod R1,#0 ; lti 7576 2028 FE9C str R1,[R7,#-4] ; assign 7577 ; force VR0 to 0 ; pram 7578 ; local base [R7,#-6] 7579 ; s 7580 202A E204 lod R1,#10 ; lti 7581 202C FD9C str R1,[R7,#-6] ; assign 7582 ; force VR0 to 0 ; pram 7583 ; } 7584 ; 7585 ; 7586 ; 7587 ; int atoi(char *s) 7588 ; 7589 ; { 7590 ; 7591 ; int r = 0; 7592 ; 7593 ; int base = 10; 7594 ; 7595 ; if (s == 0 ) return 0; 7596 ; 7597 202E 2800 cmp R0,#0 ; gfv 7598 2030 04D83C20 bne br15 ; fjump F ; cfj 7599 2034 E000 lod R1,#0 ; lti 7600 2036 61D0 mov R0,R1 ; forceresolve 7601 2038 808F lod r7,[r7] ; cr 7602 203A 00F3 ret ; cr 7603 br15 ; anon 7604 ; while (*s == ' ' || *s == 0) s++; 7605 ; 7606 br16 ; anon 7607 203C 80A0 lodb R1,[R0] ; risf 7608 203E A810 cmp R1,#32 ; alu_i 7609 2040 00D84C20 beq br17 ; ctj 7610 2044 80A0 lodb R1,[R0] ; risf 7611 2046 A800 cmp R1,#0 ; gfv 7612 2048 04D85020 bne br18 ; fjump F ; cfj 7613 br17 ; anon 7614 204C 0900 add R0,#1 ; qas 7615 ; mov R0,R0 redundant ; qasmi 7616 204E F7CA bra br16 ; anon 7617 br18 ; anon 7618 ; while (1) 7619 ; 7620 br19 ; anon 7621 ; { char c = *(s++); 7622 ; 7623 ; local c [R7,#-8] 7624 ; s 7625 2050 E0D0 mov R1,R0 ; qasp 7626 2052 0900 add R0,#1 ; qasp 7627 2054 00A5 lodb R2,[R1] ; risf 7628 2056 7CBD strb R2,[R7,#-8] ; assign 7629 ; force VR0 to 0 ; pram 7630 ; if (c >= '0' && c <= '9') 7631 ; 7632 2058 FCAC lodb R1,[R7,#-8] ; risf 7633 205A A818 cmp R1,#48 ; alu_i 7634 205C 08D88C20 blt br21 ; fjump F ; cfj 7635 2060 FCAC lodb R1,[R7,#-8] ; risf 7636 2062 A91C cmp R1,#57 ; alu_i 7637 2064 10D88C20 bgt br21 ; fjump F ; cfj 7638 ; { r = r*base + c - '0'; 7639 ; 7640 2068 FD8C lod R1,[R7,#-6] ; risf 7641 206A 7E8D lod R2,[R7,#-4] ; risf 7642 206C E001 lod R3,#0 ; LM 7643 br22 ; anon 7644 206E A800 cmp R1,#0 ; gfv 7645 2070 00D88220 beq br23 ; anon 7646 2074 E900 tst R1,#1 ; anon 7647 2076 00D87C20 beq br24 ; anon 7648 207A 8AD1 add R3,R2 ; anon 7649 br24 ; anon 7650 207C D900 lsr R1,#1 ; anon 7651 207E 4901 lsl R2,#1 ; anon 7652 2080 F7CA bra br22 ; anon 7653 br23 ; anon 7654 2082 FCAC lodb R1,[R7,#-8] ; risf 7655 2084 89D1 add R3,R1 ; alu-l 7656 2086 9019 sub R3,#48 ; alu_i 7657 2088 FE9D str R3,[R7,#-4] ; assign 7658 ; continue; 7659 ; 7660 208A E3CA bra br19 ; anon 7661 br21 ; anon 7662 ; } 7663 ; 7664 ; if (c >= 'a') c = c - 32; 7665 ; 7666 208C FCAC lodb R1,[R7,#-8] ; risf 7667 208E A930 cmp R1,#97 ; alu_i 7668 2090 08D89A20 blt br25 ; fjump F ; cfj 7669 2094 FCAC lodb R1,[R7,#-8] ; risf 7670 2096 9010 sub R1,#32 ; alu_i 7671 2098 FCBC strb R1,[R7,#-8] ; assign 7672 br25 ; anon 7673 ; if (c =='X') 7674 ; 7675 209A FCAC lodb R1,[R7,#-8] ; risf 7676 209C A82C cmp R1,#88 ; alu_i 7677 209E 04D8A820 bne br26 ; fjump F ; cfj 7678 ; { base = 16; 7679 ; 7680 20A2 E008 lod R1,#16 ; lti 7681 20A4 FD9C str R1,[R7,#-6] ; assign 7682 ; continue; 7683 ; 7684 20A6 D5CA bra br19 ; anon 7685 br26 ; anon 7686 ; } 7687 ; 7688 ; if (base >= 10 && c >= 'A' && c <= 'F') 7689 ; 7690 20A8 FD8C lod R1,[R7,#-6] ; risf 7691 20AA AA04 cmp R1,#10 ; alu_i 7692 20AC 08D8E420 blt br27 ; fjump F ; cfj 7693 20B0 FCAC lodb R1,[R7,#-8] ; risf 7694 20B2 A920 cmp R1,#65 ; alu_i 7695 20B4 08D8E420 blt br27 ; fjump F ; cfj 7696 20B8 FCAC lodb R1,[R7,#-8] ; risf 7697 20BA AE20 cmp R1,#70 ; alu_i 7698 20BC 10D8E420 bgt br27 ; fjump F ; cfj 7699 ; { 7700 ; 7701 ; r = r*base + c - 55; 7702 ; 7703 20C0 FD8C lod R1,[R7,#-6] ; risf 7704 20C2 7E8D lod R2,[R7,#-4] ; risf 7705 20C4 E001 lod R3,#0 ; LM 7706 br28 ; anon 7707 20C6 A800 cmp R1,#0 ; gfv 7708 20C8 00D8DA20 beq br29 ; anon 7709 20CC E900 tst R1,#1 ; anon 7710 20CE 00D8D420 beq br30 ; anon 7711 20D2 8AD1 add R3,R2 ; anon 7712 br30 ; anon 7713 20D4 D900 lsr R1,#1 ; anon 7714 20D6 4901 lsl R2,#1 ; anon 7715 20D8 F7CA bra br28 ; anon 7716 br29 ; anon 7717 20DA FCAC lodb R1,[R7,#-8] ; risf 7718 20DC 89D1 add R3,R1 ; alu-l 7719 20DE 9719 sub R3,#55 ; alu_i 7720 20E0 FE9D str R3,[R7,#-4] ; assign 7721 ; continue; 7722 ; 7723 20E2 B7CA bra br19 ; anon 7724 br27 ; anon 7725 ; } 7726 ; 7727 ; break; 7728 ; 7729 20E4 28D8EA20 bra br20 ; anon 7730 20E8 B4CA bra br19 ; anon 7731 br20 ; anon 7732 ; } 7733 ; 7734 ; return r; 7735 ; 7736 20EA FE8C lod R1,[R7,#-4] ; risf 7737 20EC 61D0 mov R0,R1 ; forceresolve 7738 20EE 808F lod r7,[r7] ; cr 7739 20F0 00F3 ret ; cr 7740 ; force VR0 to 0 ; pram 7741 7742 7743 ; Routine isalpha 7744 .align 2 7745 _isalpha .global 7746 20F2 809B str r7,[r2] 7747 20F4 E2D3 mov r7,r2 7748 ; ------------------------------------------------- 7749 ; local c R170 7750 ; s 7751 ; force VR0 to 0 ; pram 7752 ; } 7753 ; 7754 ; 7755 ; 7756 ; int isalpha(char c) 7757 ; 7758 ; { 7759 ; 7760 ; if (c >= 'a' && c <= 'z') return 1; 7761 ; 7762 20F6 2930 cmp R0,#97 ; alu_i 7763 20F8 08D80A21 blt br31 ; fjump F ; cfj 7764 20FC 2A3C cmp R0,#122 ; alu_i 7765 20FE 10D80A21 bgt br31 ; fjump F ; cfj 7766 2102 E100 lod R1,#1 ; lti 7767 2104 61D0 mov R0,R1 ; forceresolve 7768 2106 808F lod r7,[r7] ; cr 7769 2108 00F3 ret ; cr 7770 br31 ; anon 7771 ; if (c >= 'A' && c <= 'Z') return 1; 7772 ; 7773 210A 2920 cmp R0,#65 ; alu_i 7774 210C 08D81E21 blt br32 ; fjump F ; cfj 7775 2110 2A2C cmp R0,#90 ; alu_i 7776 2112 10D81E21 bgt br32 ; fjump F ; cfj 7777 2116 E100 lod R1,#1 ; lti 7778 2118 61D0 mov R0,R1 ; forceresolve 7779 211A 808F lod r7,[r7] ; cr 7780 211C 00F3 ret ; cr 7781 br32 ; anon 7782 ; return 0; 7783 ; 7784 211E E000 lod R1,#0 ; lti 7785 2120 61D0 mov R0,R1 ; forceresolve 7786 2122 808F lod r7,[r7] ; cr 7787 2124 00F3 ret ; cr 7788 ; force VR0 to 0 ; pram 7789 7790 7791 ; Routine isalnum 7792 .align 2 7793 _isalnum .global 7794 2126 809B str r7,[r2] 7795 2128 E2D3 mov r7,r2 7796 ; ------------------------------------------------- 7797 ; local c R177 7798 ; s 7799 ; force VR0 to 0 ; pram 7800 ; } 7801 ; 7802 ; 7803 ; 7804 ; int isalnum(char c) 7805 ; 7806 ; { 7807 ; 7808 ; if (c >= 'a' && c <= 'z') return 1; 7809 ; 7810 212A 2930 cmp R0,#97 ; alu_i 7811 212C 08D83E21 blt br33 ; fjump F ; cfj 7812 2130 2A3C cmp R0,#122 ; alu_i 7813 2132 10D83E21 bgt br33 ; fjump F ; cfj 7814 2136 E100 lod R1,#1 ; lti 7815 2138 61D0 mov R0,R1 ; forceresolve 7816 213A 808F lod r7,[r7] ; cr 7817 213C 00F3 ret ; cr 7818 br33 ; anon 7819 ; if (c >= 'A' && c <= 'Z') return 1; 7820 ; 7821 213E 2920 cmp R0,#65 ; alu_i 7822 2140 08D85221 blt br34 ; fjump F ; cfj 7823 2144 2A2C cmp R0,#90 ; alu_i 7824 2146 10D85221 bgt br34 ; fjump F ; cfj 7825 214A E100 lod R1,#1 ; lti 7826 214C 61D0 mov R0,R1 ; forceresolve 7827 214E 808F lod r7,[r7] ; cr 7828 2150 00F3 ret ; cr 7829 br34 ; anon 7830 ; if (c >= '0' && c <= '9') return 1; 7831 ; 7832 2152 2818 cmp R0,#48 ; alu_i 7833 2154 08D86621 blt br35 ; fjump F ; cfj 7834 2158 291C cmp R0,#57 ; alu_i 7835 215A 10D86621 bgt br35 ; fjump F ; cfj 7836 215E E100 lod R1,#1 ; lti 7837 2160 61D0 mov R0,R1 ; forceresolve 7838 2162 808F lod r7,[r7] ; cr 7839 2164 00F3 ret ; cr 7840 br35 ; anon 7841 ; return 0; 7842 ; 7843 2166 E000 lod R1,#0 ; lti 7844 2168 61D0 mov R0,R1 ; forceresolve 7845 216A 808F lod r7,[r7] ; cr 7846 216C 00F3 ret ; cr 7847 ; force VR0 to 0 ; pram 7848 7849 7850 ; Routine islower 7851 .align 2 7852 _islower .global 7853 216E 809B str r7,[r2] 7854 2170 E2D3 mov r7,r2 7855 ; ------------------------------------------------- 7856 ; local c R186 7857 ; s 7858 ; force VR0 to 0 ; pram 7859 ; } 7860 ; 7861 ; 7862 ; 7863 ; 7864 ; 7865 ; int islower(char c) 7866 ; 7867 ; { 7868 ; 7869 ; if ((c >= 'a') && (c <= 'z')) return 1; 7870 ; 7871 2172 2930 cmp R0,#97 ; alu_i 7872 2174 08D88621 blt br36 ; fjump F ; cfj 7873 2178 2A3C cmp R0,#122 ; alu_i 7874 217A 10D88621 bgt br36 ; fjump F ; cfj 7875 217E E100 lod R1,#1 ; lti 7876 2180 61D0 mov R0,R1 ; forceresolve 7877 2182 808F lod r7,[r7] ; cr 7878 2184 00F3 ret ; cr 7879 br36 ; anon 7880 ; return 0; 7881 ; 7882 2186 E000 lod R1,#0 ; lti 7883 2188 61D0 mov R0,R1 ; forceresolve 7884 218A 808F lod r7,[r7] ; cr 7885 218C 00F3 ret ; cr 7886 ; force VR0 to 0 ; pram 7887 7888 7889 ; Routine toupper 7890 .align 2 7891 _toupper .global 7892 218E 809B str r7,[r2] 7893 2190 E2D3 mov r7,r2 7894 ; ------------------------------------------------- 7895 ; local c R191 7896 ; s 7897 ; force VR0 to 0 ; pram 7898 ; } 7899 ; 7900 ; 7901 ; 7902 ; char toupper(char c) 7903 ; 7904 ; { 7905 ; 7906 ; if ((c >='a') && (c <= 'z')) return c-32; 7907 ; 7908 2192 2930 cmp R0,#97 ; alu_i 7909 2194 08D8A421 blt br37 ; fjump F ; cfj 7910 2198 2A3C cmp R0,#122 ; alu_i 7911 219A 10D8A421 bgt br37 ; fjump F ; cfj 7912 219E 1010 sub R0,#32 ; alu_i 7913 ; force VR0 to 0 ; loadtod0 7914 21A0 808F lod r7,[r7] ; cr 7915 21A2 00F3 ret ; cr 7916 br37 ; anon 7917 ; return c; 7918 ; 7919 ; force VR0 to 0 ; loadtod0 7920 21A4 808F lod r7,[r7] ; cr 7921 21A6 00F3 ret ; cr 7922 ; force VR0 to 0 ; pram 7923 7924 7925 ; Routine tolower 7926 .align 2 7927 _tolower .global 7928 21A8 809B str r7,[r2] 7929 21AA E2D3 mov r7,r2 7930 ; ------------------------------------------------- 7931 ; local c R192 7932 ; s 7933 ; force VR0 to 0 ; pram 7934 ; } 7935 ; 7936 ; 7937 ; 7938 ; 7939 ; 7940 ; 7941 ; 7942 ; char tolower(char c) 7943 ; 7944 ; { 7945 ; 7946 ; if ((c >='A') && (c <= 'Z')) return c+32; 7947 ; 7948 21AC 2920 cmp R0,#65 ; alu_i 7949 21AE 08D8C421 blt br38 ; fjump F ; cfj 7950 21B2 2A2C cmp R0,#90 ; alu_i 7951 21B4 10D8C421 bgt br38 ; fjump F ; cfj 7952 21B8 E0D0 mov R1,R0 ; lt-u 7953 21BA 8810 add R1,#32 ; ltgr 7954 21BC 61D1 mov R2,R1 ; ltmv 7955 21BE 62D0 mov R0,R2 ; forceresolve 7956 21C0 808F lod r7,[r7] ; cr 7957 21C2 00F3 ret ; cr 7958 br38 ; anon 7959 ; return c; 7960 ; 7961 ; force VR0 to 0 ; loadtod0 7962 21C4 808F lod r7,[r7] ; cr 7963 21C6 00F3 ret ; cr 7964 ; force VR0 to 0 ; pram 7965 7966 7967 ; Routine strncmp 7968 .align 2 7969 _strncmp .global 7970 21C8 809B str r7,[r2] 7971 21CA E2D3 mov r7,r2 7972 ; ------------------------------------------------- 7973 ; local a R196 7974 ; s 7975 ; local b R197 7976 ; s 7977 ; local n [R7,#6] 7978 ; s 7979 ; force VR0 to 0 ; pram 7980 ; force VR1 to 1 ; pram 7981 ; } 7982 ; 7983 ; 7984 ; 7985 ; 7986 ; 7987 ; 7988 ; 7989 ; int strncmp(char *a, char *b, int n) 7990 ; 7991 ; { 7992 ; 7993 ; while(*a == *b && n > 0) 7994 ; 7995 br39 ; anon 7996 21CC 00A1 lodb R2,[R0] ; risf 7997 21CE 80A5 lodb R3,[R1] ; risf 7998 21D0 2BD1 cmp R2,R3 ; alu-l 7999 21D2 04D8FA21 bne br40 ; fjump F ; cfj 8000 21D6 038D lod R2,[R7,#6] ; risf 8001 21D8 2801 cmp R2,#0 ; gfv 8002 21DA 14D8FA21 ble br40 ; fjump F ; cfj 8003 ; { 8004 ; 8005 ; if (*a == 0) return 0; 8006 ; 8007 21DE 00A1 lodb R2,[R0] ; risf 8008 21E0 2801 cmp R2,#0 ; gfv 8009 21E2 04D8EE21 bne br41 ; fjump F ; cfj 8010 21E6 6001 lod R2,#0 ; lti 8011 21E8 62D0 mov R0,R2 ; forceresolve 8012 21EA 808F lod r7,[r7] ; cr 8013 21EC 00F3 ret ; cr 8014 br41 ; anon 8015 ; a++; b++; n--; 8016 ; 8017 21EE 0900 add R0,#1 ; qas 8018 ; mov R0,R0 redundant ; qasmi 8019 21F0 8900 add R1,#1 ; qas 8020 ; mov R1,R1 redundant ; qasmi 8021 21F2 038D lod R2,[R7,#6] ; risf 8022 21F4 1101 sub R2,#1 ; qas 8023 21F6 039D str R2,[R7,#6] ; qasmi 8024 21F8 EACA bra br39 ; anon 8025 br40 ; anon 8026 ; } 8027 ; 8028 ; if (n==0) return 0; 8029 ; 8030 21FA 038D lod R2,[R7,#6] ; risf 8031 21FC 2801 cmp R2,#0 ; gfv 8032 21FE 04D80A22 bne br42 ; fjump F ; cfj 8033 2202 6001 lod R2,#0 ; lti 8034 2204 62D0 mov R0,R2 ; forceresolve 8035 2206 808F lod r7,[r7] ; cr 8036 2208 00F3 ret ; cr 8037 br42 ; anon 8038 ; return *a - *b; 8039 ; 8040 220A 00A1 lodb R2,[R0] ; risf 8041 220C 80A5 lodb R3,[R1] ; risf 8042 220E 13D1 sub R2,R3 ; alu-l 8043 2210 3F7D and R2,#255 ; ccti 8044 2212 62D0 mov R0,R2 ; forceresolve 8045 2214 808F lod r7,[r7] ; cr 8046 2216 00F3 ret ; cr 8047 ; force VR0 to 0 ; pram 8048 ; force VR1 to 1 ; pram 8049 8050 8051 ; Routine strcmp 8052 .align 2 8053 _strcmp .global 8054 2218 809B str r7,[r2] 8055 221A E2D3 mov r7,r2 8056 ; ------------------------------------------------- 8057 ; local a R210 8058 ; s 8059 ; local b R211 8060 ; s 8061 ; force VR0 to 0 ; pram 8062 ; force VR1 to 1 ; pram 8063 ; } 8064 ; 8065 ; 8066 ; 8067 ; 8068 ; 8069 ; int strcmp(const char *a, const char *b) 8070 ; 8071 ; { 8072 ; 8073 ; while(*a == *b) 8074 ; 8075 br43 ; anon 8076 221C 00A1 lodb R2,[R0] ; risf 8077 221E 80A5 lodb R3,[R1] ; risf 8078 2220 2BD1 cmp R2,R3 ; alu-l 8079 2222 04D83C22 bne br44 ; fjump F ; cfj 8080 ; { 8081 ; 8082 ; if (*a == 0) return 0; 8083 ; 8084 2226 00A1 lodb R2,[R0] ; risf 8085 2228 2801 cmp R2,#0 ; gfv 8086 222A 04D83622 bne br45 ; fjump F ; cfj 8087 222E 6001 lod R2,#0 ; lti 8088 2230 62D0 mov R0,R2 ; forceresolve 8089 2232 808F lod r7,[r7] ; cr 8090 2234 00F3 ret ; cr 8091 br45 ; anon 8092 ; a++; b++; 8093 ; 8094 2236 0900 add R0,#1 ; qas 8095 ; mov R0,R0 redundant ; qasmi 8096 2238 8900 add R1,#1 ; qas 8097 ; mov R1,R1 redundant ; qasmi 8098 223A F1CA bra br43 ; anon 8099 br44 ; anon 8100 ; } 8101 ; 8102 ; return *a - *b; 8103 ; 8104 223C 00A1 lodb R2,[R0] ; risf 8105 223E 80A5 lodb R3,[R1] ; risf 8106 2240 13D1 sub R2,R3 ; alu-l 8107 2242 3F7D and R2,#255 ; ccti 8108 2244 62D0 mov R0,R2 ; forceresolve 8109 2246 808F lod r7,[r7] ; cr 8110 2248 00F3 ret ; cr 8111 ; force VR0 to 0 ; pram 8112 ; force VR1 to 1 ; pram 8113 8114 8115 ; Routine printx 8116 .align 2 8117 _printx .global 8118 224A 809B str r7,[r2] 8119 224C E2D3 mov r7,r2 8120 224E 7F9F str R6,[R7,#-2] 8121 2250 019C str R0,[R7,#2] 8122 2252 829C str R1,[R7,#4] 8123 ; ------------------------------------------------- 8124 ; local x [R7,#2] 8125 ; s 8126 ; local field [R7,#4] 8127 ; s 8128 ; local i [R7,#-4] 8129 ; s 8130 ; local r [R7,#-6] 8131 ; s 8132 2254 018C lod R0,[R7,#2] ; risf 8133 2256 5900 lsr R0,#1 ; fshif 8134 2258 5900 lsr R0,#1 ; fshif 8135 225A 5900 lsr R0,#1 ; fshif 8136 225C 5900 lsr R0,#1 ; fshif 8137 225E 5900 lsr R0,#1 ; fshif 8138 2260 5900 lsr R0,#1 ; fshif 8139 2262 5900 lsr R0,#1 ; fshif 8140 2264 5900 lsr R0,#1 ; fshif 8141 2266 7D9C str R0,[R7,#-6] ; assign 8142 ; } 8143 ; 8144 ; 8145 ; 8146 ; 8147 ; 8148 ; void printx(unsigned int x, int field) 8149 ; 8150 ; { 8151 ; 8152 ; int i; 8153 ; 8154 ; unsigned int r = x >> 8; 8155 ; 8156 ; if (r) printx(r, field-2); 8157 ; 8158 2268 7D8C lod R0,[R7,#-6] ; risf 8159 226A 2800 cmp R0,#0 ; gfv 8160 226C 00D88222 beq br46 ; fjmp1 ; cfj 8161 2270 7D8C lod R0,[R7,#-6] ; risf 8162 2272 828C lod R1,[R7,#4] ; risf 8163 2274 9200 sub R1,#2 ; alu_i 8164 ; force VR0 to 0 ; call 8165 ; force VR1 to 1 ; call 8166 2276 67D1 mov r2,r7 ; call 8167 2278 1405 sub r2,#12 ; call 8168 227A 3CD84A22 jsr _printx ; call 8169 ; force VR0 to 0 ; res 8170 227E 28D8A822 bra br47 ; anon 8171 br46 ; anon 8172 ; else for (i=2; i=' ') && (c <= 126)) return 1; 8224 ; 8225 22BC 2810 cmp R0,#32 ; alu_i 8226 22BE 08D8D022 blt br50 ; fjump F ; cfj 8227 22C2 2E3C cmp R0,#126 ; alu_i 8228 22C4 10D8D022 bgt br50 ; fjump F ; cfj 8229 22C8 E100 lod R1,#1 ; lti 8230 22CA 61D0 mov R0,R1 ; forceresolve 8231 22CC 808F lod r7,[r7] ; cr 8232 22CE 00F3 ret ; cr 8233 br50 ; anon 8234 ; return 0; 8235 ; 8236 22D0 E000 lod R1,#0 ; lti 8237 22D2 61D0 mov R0,R1 ; forceresolve 8238 22D4 808F lod r7,[r7] ; cr 8239 22D6 00F3 ret ; cr 8240 ; force VR0 to 0 ; pram 8241 8242 8243 ; Routine isdigit 8244 .align 2 8245 _isdigit .global 8246 22D8 809B str r7,[r2] 8247 22DA E2D3 mov r7,r2 8248 ; ------------------------------------------------- 8249 ; local c R240 8250 ; s 8251 ; force VR0 to 0 ; pram 8252 ; } 8253 ; 8254 ; 8255 ; 8256 ; int isdigit (char c) 8257 ; 8258 ; { 8259 ; 8260 ; if ((c >='0') && (c <= '9')) return 1; 8261 ; 8262 22DC 2818 cmp R0,#48 ; alu_i 8263 22DE 08D8F022 blt br51 ; fjump F ; cfj 8264 22E2 291C cmp R0,#57 ; alu_i 8265 22E4 10D8F022 bgt br51 ; fjump F ; cfj 8266 22E8 E100 lod R1,#1 ; lti 8267 22EA 61D0 mov R0,R1 ; forceresolve 8268 22EC 808F lod r7,[r7] ; cr 8269 22EE 00F3 ret ; cr 8270 br51 ; anon 8271 ; return 0; 8272 ; 8273 22F0 E000 lod R1,#0 ; lti 8274 22F2 61D0 mov R0,R1 ; forceresolve 8275 22F4 808F lod r7,[r7] ; cr 8276 22F6 00F3 ret ; cr 8277 ; force VR0 to 0 ; pram 8278 8279 8280 ; Routine isupper 8281 .align 2 8282 _isupper .global 8283 22F8 809B str r7,[r2] 8284 22FA E2D3 mov r7,r2 8285 ; ------------------------------------------------- 8286 ; local c R245 8287 ; s 8288 ; force VR0 to 0 ; pram 8289 ; } 8290 ; 8291 ; 8292 ; 8293 ; int isupper (char c) 8294 ; 8295 ; { 8296 ; 8297 ; if ((c >='A') && (c <= 'Z')) return 1; 8298 ; 8299 22FC 2920 cmp R0,#65 ; alu_i 8300 22FE 08D81023 blt br52 ; fjump F ; cfj 8301 2302 2A2C cmp R0,#90 ; alu_i 8302 2304 10D81023 bgt br52 ; fjump F ; cfj 8303 2308 E100 lod R1,#1 ; lti 8304 230A 61D0 mov R0,R1 ; forceresolve 8305 230C 808F lod r7,[r7] ; cr 8306 230E 00F3 ret ; cr 8307 br52 ; anon 8308 ; return 0; 8309 ; 8310 2310 E000 lod R1,#0 ; lti 8311 2312 61D0 mov R0,R1 ; forceresolve 8312 2314 808F lod r7,[r7] ; cr 8313 2316 00F3 ret ; cr 8314 ; force VR0 to 0 ; pram 8315 8316 8317 ; Routine debhex8 8318 .align 2 8319 _debhex8 .global 8320 2318 809B str r7,[r2] 8321 231A E2D3 mov r7,r2 8322 231C 7F9F str R6,[R7,#-2] 8323 231E 019C str R0,[R7,#2] 8324 ; ------------------------------------------------- 8325 ; local x [R7,#2] 8326 ; s 8327 ; } 8328 ; 8329 ; 8330 ; 8331 ; 8332 ; 8333 ; 8334 ; 8335 ; void debhex8(int x) 8336 ; 8337 ; { 8338 ; 8339 ; hex2(x >> 8); 8340 ; 8341 2320 018C lod R0,[R7,#2] ; risf 8342 2322 5100 asr R0,#1 ; fshif 8343 2324 5100 asr R0,#1 ; fshif 8344 2326 5100 asr R0,#1 ; fshif 8345 2328 5100 asr R0,#1 ; fshif 8346 232A 5100 asr R0,#1 ; fshif 8347 232C 5100 asr R0,#1 ; fshif 8348 232E 5100 asr R0,#1 ; fshif 8349 2330 5100 asr R0,#1 ; fshif 8350 ; force VR0 to 0 ; call 8351 2332 67D1 mov r2,r7 ; call 8352 2334 1005 sub r2,#8 ; call 8353 2336 3CD85A23 jsr _hex2 ; call 8354 ; force VR0 to 0 ; res 8355 ; hex2(x >> 0); 8356 ; 8357 233A 018C lod R0,[R7,#2] ; risf 8358 ; force VR0 to 0 ; call 8359 233C 67D1 mov r2,r7 ; call 8360 233E 1005 sub r2,#8 ; call 8361 2340 3CD85A23 jsr _hex2 ; call 8362 ; force VR0 to 0 ; res 8363 ; { *spf++ = ((char)(' ' )); } ; 8364 ; 8365 2344 00D452DF lod R0,_spf ; ris 8366 2348 E0D0 mov R1,R0 ; qasp1 8367 234A 8900 add R1,#1 ; qasp 8368 234C A0D452DF str R1,_spf ; qasp 8369 2350 E010 lod R1,#32 ; lti 8370 2352 80B0 strb R1,[R0] ; assign 8371 2354 7F8F lod R6,[R7,#-2] ; cr 8372 2356 808F lod r7,[r7] ; cr 8373 2358 00F3 ret ; cr 8374 8375 8376 ; Routine hex2 8377 .align 2 8378 _hex2 .global 8379 235A 809B str r7,[r2] 8380 235C E2D3 mov r7,r2 8381 235E 7F9F str R6,[R7,#-2] 8382 2360 019C str R0,[R7,#2] 8383 ; ------------------------------------------------- 8384 ; local x [R7,#2] 8385 ; s 8386 ; } 8387 ; 8388 ; 8389 ; 8390 ; void hex2(int x) 8391 ; 8392 ; { 8393 ; 8394 ; x = x & 255; 8395 ; 8396 2362 018C lod R0,[R7,#2] ; risf 8397 2364 3F7C and R0,#255 ; alu_i 8398 2366 019C str R0,[R7,#2] ; assign 8399 ; hex1(x >> 4); 8400 ; 8401 2368 018C lod R0,[R7,#2] ; risf 8402 236A 5100 asr R0,#1 ; fshif 8403 236C 5100 asr R0,#1 ; fshif 8404 236E 5100 asr R0,#1 ; fshif 8405 2370 5100 asr R0,#1 ; fshif 8406 ; force VR0 to 0 ; call 8407 2372 67D1 mov r2,r7 ; call 8408 2374 1005 sub r2,#8 ; call 8409 2376 3CD88A23 jsr _hex1 ; call 8410 ; force VR0 to 0 ; res 8411 ; hex1(x); 8412 ; 8413 237A 018C lod R0,[R7,#2] ; risf 8414 ; force VR0 to 0 ; call 8415 237C 67D1 mov r2,r7 ; call 8416 237E 1005 sub r2,#8 ; call 8417 2380 3CD88A23 jsr _hex1 ; call 8418 ; force VR0 to 0 ; res 8419 2384 7F8F lod R6,[R7,#-2] ; cr 8420 2386 808F lod r7,[r7] ; cr 8421 2388 00F3 ret ; cr 8422 8423 8424 ; Routine hex1 8425 .align 2 8426 _hex1 .global 8427 238A 809B str r7,[r2] 8428 238C E2D3 mov r7,r2 8429 ; ------------------------------------------------- 8430 ; local x R263 8431 ; s 8432 ; force VR0 to 0 ; pram 8433 ; } 8434 ; 8435 ; 8436 ; 8437 ; 8438 ; 8439 ; void hex1(int x) 8440 ; 8441 ; { 8442 ; 8443 ; x = x & 15; 8444 ; 8445 238E 3F04 and R0,#15 ; alu_i 8446 ; mov R0,R0 redundant ; assign 8447 ; { *spf++ = ((char)( x>9 ? x+('A'-10): x+'0' )); } ; 8448 ; 8449 2390 2904 cmp R0,#9 ; alu_i 8450 2392 14D8A023 ble br53 ; fjump F ; cfj 8451 2396 E0D0 mov R1,R0 ; lt-u 8452 2398 8F18 add R1,#55 ; ltgr 8453 239A 61D1 mov R2,R1 ; ltmv 8454 239C 28D8A623 bra br54 ; anon 8455 br53 ; anon 8456 23A0 E0D0 mov R1,R0 ; lt-u 8457 23A2 8818 add R1,#48 ; ltgr 8458 23A4 61D1 mov R2,R1 ; ltmv 8459 br54 ; anon 8460 23A6 80D452DF lod R1,_spf ; ris 8461 23AA E1D1 mov R3,R1 ; qasp1 8462 23AC 8901 add R3,#1 ; qasp 8463 23AE A0D552DF str R3,_spf ; qasp 8464 23B2 00B5 strb R2,[R1] ; assign 8465 ; force VR0 to 0 ; pram 8466 23B4 808F lod r7,[r7] ; cr 8467 23B6 00F3 ret ; cr 8468 8469 8470 ; Routine shi 8471 .align 2 8472 _shi .global 8473 23B8 809B str r7,[r2] 8474 23BA E2D3 mov r7,r2 8475 ; ------------------------------------------------- 8476 ; local p R271 8477 ; s 8478 ; local d R272 8479 ; s 8480 ; force VR0 to 0 ; pram 8481 ; force VR1 to 1 ; pram 8482 ; local r [R7,#-4] 8483 ; s 8484 23BC 6001 lod R2,#0 ; lti 8485 23BE 7EBD strb R2,[R7,#-4] ; assign 8486 ; force VR0 to 0 ; pram 8487 ; force VR1 to 1 ; pram 8488 ; } 8489 ; 8490 ; 8491 ; 8492 ; 8493 ; 8494 ; void shi(unsigned int *p, int d) 8495 ; 8496 ; { 8497 ; 8498 ; char r = 0; 8499 ; 8500 ; while (*p >= d) 8501 ; 8502 br55 ; anon 8503 23C0 0081 lod R2,[R0] ; risf 8504 23C2 29D1 cmp R2,R1 ; alu-l 8505 23C4 1CD8D623 bcc br56; fjump U ; cfj 8506 ; { r ++; 8507 ; 8508 23C8 7EAD lodb R2,[R7,#-4] ; risf 8509 23CA 0901 add R2,#1 ; qas 8510 23CC 7EBD strb R2,[R7,#-4] ; qasmi 8511 ; *p = *p - d; 8512 ; 8513 23CE 0081 lod R2,[R0] ; risf 8514 23D0 11D1 sub R2,R1 ; alu-l 8515 23D2 0091 str R2,[R0] ; assign 8516 23D4 F6CA bra br55 ; anon 8517 br56 ; anon 8518 ; } 8519 ; 8520 ; if (r) _zeroflag = 1; 8521 ; 8522 23D6 7EAD lodb R2,[R7,#-4] ; risf 8523 23D8 2801 cmp R2,#0 ; gfv 8524 23DA 00D8E423 beq br57 ; fjmp1 ; cfj 8525 23DE 6101 lod R2,#1 ; lti 8526 23E0 60D554E3 strb R2,__zeroflag ; assign 8527 br57 ; anon 8528 ; if (_zeroflag) { *spf++ = ((char)(r + '0' )); } ; 8529 ; 8530 23E4 40D554E3 lodb R2,__zeroflag ; ris 8531 23E8 2801 cmp R2,#0 ; gfv 8532 23EA 00D80024 beq br58 ; fjmp1 ; cfj 8533 23EE FEAD lodb R3,[R7,#-4] ; risf 8534 23F0 8819 add R3,#48 ; alu_i 8535 23F2 00D552DF lod R2,_spf ; ris 8536 23F6 62D2 mov R4,R2 ; qasp1 8537 23F8 0902 add R4,#1 ; qasp 8538 23FA 20D652DF str R4,_spf ; qasp 8539 23FE 80B9 strb R3,[R2] ; assign 8540 br58 ; anon 8541 ; force VR0 to 0 ; pram 8542 ; force VR1 to 1 ; pram 8543 2400 808F lod r7,[r7] ; cr 8544 2402 00F3 ret ; cr 8545 8546 8547 ; Routine printu 8548 .align 2 8549 _printu .global 8550 2404 809B str r7,[r2] 8551 2406 E2D3 mov r7,r2 8552 2408 7F9F str R6,[R7,#-2] 8553 240A 019C str R0,[R7,#2] 8554 ; ------------------------------------------------- 8555 ; local x [R7,#2] 8556 ; s 8557 ; } 8558 ; 8559 ; 8560 ; 8561 ; void printu(int x) 8562 ; 8563 ; { 8564 ; 8565 ; if (x == 0) 8566 ; 8567 240C 018C lod R0,[R7,#2] ; risf 8568 240E 2800 cmp R0,#0 ; gfv 8569 2410 04D82A24 bne br59 ; fjump F ; cfj 8570 ; { 8571 ; 8572 ; { *spf++ = ((char)('0' )); } ; 8573 ; 8574 2414 00D452DF lod R0,_spf ; ris 8575 2418 E0D0 mov R1,R0 ; qasp1 8576 241A 8900 add R1,#1 ; qasp 8577 241C A0D452DF str R1,_spf ; qasp 8578 2420 E018 lod R1,#48 ; lti 8579 2422 80B0 strb R1,[R0] ; assign 8580 ; return; 8581 ; 8582 2424 7F8F lod R6,[R7,#-2] ; cr 8583 2426 808F lod r7,[r7] ; cr 8584 2428 00F3 ret ; cr 8585 br59 ; anon 8586 ; } 8587 ; 8588 ; _zeroflag = 0; 8589 ; 8590 242A 6000 lod R0,#0 ; lti 8591 242C 60D454E3 strb R0,__zeroflag ; assign 8592 ; 8593 ; 8594 ; shi(&x, 1000000000); 8595 ; 8596 2430 E7D0 mov R1,R7 ; lt-u 8597 2432 8A00 add R1,#2 ; ltgr 8598 2434 61D0 mov R0,R1 ; ltmv 8599 2436 80F400CA lod R1,#1000000000 ; lti 8600 ; force VR0 to 0 ; call 8601 ; force VR1 to 1 ; call 8602 243A 67D1 mov r2,r7 ; call 8603 243C 1005 sub r2,#8 ; call 8604 243E 3CD8B823 jsr _shi ; call 8605 ; force VR0 to 0 ; res 8606 ; shi(&x, 100000000); 8607 ; 8608 2442 E7D0 mov R1,R7 ; lt-u 8609 2444 8A00 add R1,#2 ; ltgr 8610 2446 61D0 mov R0,R1 ; ltmv 8611 2448 80F400E1 lod R1,#100000000 ; lti 8612 ; force VR0 to 0 ; call 8613 ; force VR1 to 1 ; call 8614 244C 67D1 mov r2,r7 ; call 8615 244E 1005 sub r2,#8 ; call 8616 2450 3CD8B823 jsr _shi ; call 8617 ; force VR0 to 0 ; res 8618 ; shi(&x, 10000000); 8619 ; 8620 2454 E7D0 mov R1,R7 ; lt-u 8621 2456 8A00 add R1,#2 ; ltgr 8622 2458 61D0 mov R0,R1 ; ltmv 8623 245A 80F48096 lod R1,#10000000 ; lti 8624 ; force VR0 to 0 ; call 8625 ; force VR1 to 1 ; call 8626 245E 67D1 mov r2,r7 ; call 8627 2460 1005 sub r2,#8 ; call 8628 2462 3CD8B823 jsr _shi ; call 8629 ; force VR0 to 0 ; res 8630 ; shi(&x, 1000000); 8631 ; 8632 2466 E7D0 mov R1,R7 ; lt-u 8633 2468 8A00 add R1,#2 ; ltgr 8634 246A 61D0 mov R0,R1 ; ltmv 8635 246C 80F44042 lod R1,#1000000 ; lti 8636 ; force VR0 to 0 ; call 8637 ; force VR1 to 1 ; call 8638 2470 67D1 mov r2,r7 ; call 8639 2472 1005 sub r2,#8 ; call 8640 2474 3CD8B823 jsr _shi ; call 8641 ; force VR0 to 0 ; res 8642 ; shi(&x, 100000); 8643 ; 8644 2478 E7D0 mov R1,R7 ; lt-u 8645 247A 8A00 add R1,#2 ; ltgr 8646 247C 61D0 mov R0,R1 ; ltmv 8647 247E 80F4A086 lod R1,#100000 ; lti 8648 ; force VR0 to 0 ; call 8649 ; force VR1 to 1 ; call 8650 2482 67D1 mov r2,r7 ; call 8651 2484 1005 sub r2,#8 ; call 8652 2486 3CD8B823 jsr _shi ; call 8653 ; force VR0 to 0 ; res 8654 ; shi(&x, 10000); 8655 ; 8656 248A E7D0 mov R1,R7 ; lt-u 8657 248C 8A00 add R1,#2 ; ltgr 8658 248E 61D0 mov R0,R1 ; ltmv 8659 2490 80F41027 lod R1,#10000 ; lti 8660 ; force VR0 to 0 ; call 8661 ; force VR1 to 1 ; call 8662 2494 67D1 mov r2,r7 ; call 8663 2496 1005 sub r2,#8 ; call 8664 2498 3CD8B823 jsr _shi ; call 8665 ; force VR0 to 0 ; res 8666 ; shi(&x, 1000); 8667 ; 8668 249C E7D0 mov R1,R7 ; lt-u 8669 249E 8A00 add R1,#2 ; ltgr 8670 24A0 61D0 mov R0,R1 ; ltmv 8671 24A2 80F4E803 lod R1,#1000 ; lti 8672 ; force VR0 to 0 ; call 8673 ; force VR1 to 1 ; call 8674 24A6 67D1 mov r2,r7 ; call 8675 24A8 1005 sub r2,#8 ; call 8676 24AA 3CD8B823 jsr _shi ; call 8677 ; force VR0 to 0 ; res 8678 ; shi(&x, 100); 8679 ; 8680 24AE E7D0 mov R1,R7 ; lt-u 8681 24B0 8A00 add R1,#2 ; ltgr 8682 24B2 61D0 mov R0,R1 ; ltmv 8683 24B4 E430 lod R1,#100 ; lti 8684 ; force VR0 to 0 ; call 8685 ; force VR1 to 1 ; call 8686 24B6 67D1 mov r2,r7 ; call 8687 24B8 1005 sub r2,#8 ; call 8688 24BA 3CD8B823 jsr _shi ; call 8689 ; force VR0 to 0 ; res 8690 ; shi(&x, 10); 8691 ; 8692 24BE E7D0 mov R1,R7 ; lt-u 8693 24C0 8A00 add R1,#2 ; ltgr 8694 24C2 61D0 mov R0,R1 ; ltmv 8695 24C4 E204 lod R1,#10 ; lti 8696 ; force VR0 to 0 ; call 8697 ; force VR1 to 1 ; call 8698 24C6 67D1 mov r2,r7 ; call 8699 24C8 1005 sub r2,#8 ; call 8700 24CA 3CD8B823 jsr _shi ; call 8701 ; force VR0 to 0 ; res 8702 ; shi(&x, 1); 8703 ; 8704 24CE E7D0 mov R1,R7 ; lt-u 8705 24D0 8A00 add R1,#2 ; ltgr 8706 24D2 61D0 mov R0,R1 ; ltmv 8707 24D4 E100 lod R1,#1 ; lti 8708 ; force VR0 to 0 ; call 8709 ; force VR1 to 1 ; call 8710 24D6 67D1 mov r2,r7 ; call 8711 24D8 1005 sub r2,#8 ; call 8712 24DA 3CD8B823 jsr _shi ; call 8713 ; force VR0 to 0 ; res 8714 24DE 7F8F lod R6,[R7,#-2] ; cr 8715 24E0 808F lod r7,[r7] ; cr 8716 24E2 00F3 ret ; cr 8717 8718 8719 ; Routine printi 8720 .align 2 8721 _printi .global 8722 24E4 809B str r7,[r2] 8723 24E6 E2D3 mov r7,r2 8724 24E8 7F9F str R6,[R7,#-2] 8725 24EA 019C str R0,[R7,#2] 8726 ; ------------------------------------------------- 8727 ; local x [R7,#2] 8728 ; s 8729 ; } 8730 ; 8731 ; } 8732 ; 8733 ; } 8734 ; 8735 ; } 8736 ; 8737 ; 8738 ; 8739 ; static char _zeroflag; 8740 ; 8741 ; 8742 ; 8743 ; printi(int x) 8744 ; 8745 ; { 8746 ; 8747 ; if (x < 0) 8748 ; 8749 24EC 018C lod R0,[R7,#2] ; risf 8750 24EE 2800 cmp R0,#0 ; gfv 8751 24F0 0CD83025 bge br60 ; fjump F ; cfj 8752 ; { 8753 ; 8754 ; { *spf++ = ((char)('-' )); } ; 8755 ; 8756 24F4 00D452DF lod R0,_spf ; ris 8757 24F8 E0D0 mov R1,R0 ; qasp1 8758 24FA 8900 add R1,#1 ; qasp 8759 24FC A0D452DF str R1,_spf ; qasp 8760 2500 E514 lod R1,#45 ; lti 8761 2502 80B0 strb R1,[R0] ; assign 8762 ; if (x == 0x8000) 8763 ; 8764 2504 018C lod R0,[R7,#2] ; risf 8765 2506 80F40080 lod R1,#32768 ; lti 8766 250A 29D0 cmp R0,R1 ; alu-l 8767 250C 04D82825 bne br61 ; fjump F ; cfj 8768 ; { 8769 ; 8770 ; prstring("32768", 0, 100); 8771 ; 8772 2510 6430 lod R0,#100 ; lti 8773 2512 7E9C str R0,[R7,#-4] ; assign 8774 2514 00F44025 lod R0,#br62 ; ltgd3 8775 2518 E000 lod R1,#0 ; lti 8776 ; force VR0 to 0 ; call 8777 ; force VR1 to 1 ; call 8778 251A 67D1 mov r2,r7 ; call 8779 251C 1205 sub r2,#10 ; call 8780 251E 3CD84625 jsr _prstring ; call 8781 ; force VR0 to 0 ; res 8782 ; return; 8783 ; 8784 2522 7F8F lod R6,[R7,#-2] ; cr 8785 2524 808F lod r7,[r7] ; cr 8786 2526 00F3 ret ; cr 8787 br61 ; anon 8788 ; } 8789 ; 8790 ; x = -x; 8791 ; 8792 2528 6000 lod R0,#0 ; lti 8793 252A 818C lod R1,[R7,#2] ; risf 8794 252C 11D0 sub R0,R1 ; alu-l 8795 252E 019C str R0,[R7,#2] ; assign 8796 br60 ; anon 8797 ; } 8798 ; 8799 ; printu(x); 8800 ; 8801 2530 018C lod R0,[R7,#2] ; risf 8802 ; force VR0 to 0 ; call 8803 2532 67D1 mov r2,r7 ; call 8804 2534 1005 sub r2,#8 ; call 8805 2536 3CD80424 jsr _printu ; call 8806 ; force VR0 to 0 ; res 8807 253A 7F8F lod R6,[R7,#-2] ; cr 8808 253C 808F lod r7,[r7] ; cr 8809 253E 00F3 ret ; cr 8810 2540 33323736 br62 .data "32768",0 3800 8811 8812 8813 ; Routine prstring 8814 .align 2 8815 _prstring .global 8816 2546 809B str r7,[r2] 8817 2548 E2D3 mov r7,r2 8818 254A 7F9F str R6,[R7,#-2] 8819 254C 019C str R0,[R7,#2] 8820 254E 829C str R1,[R7,#4] 8821 ; ------------------------------------------------- 8822 ; local s [R7,#2] 8823 ; s 8824 ; local prefield [R7,#4] 8825 ; s 8826 ; local field [R7,#6] 8827 ; s 8828 ; } 8829 ; 8830 ; } 8831 ; 8832 ; } 8833 ; 8834 ; } 8835 ; 8836 ; 8837 ; 8838 ; void prstring(char *s, int prefield, int field) 8839 ; 8840 ; { 8841 ; 8842 ; if (s == 0 ) 8843 ; 8844 2550 018C lod R0,[R7,#2] ; risf 8845 2552 2800 cmp R0,#0 ; gfv 8846 2554 04D87C25 bne br75 ; fjump F ; cfj 8847 ; { 8848 ; 8849 ; { *spf++ = ((char)('<' )); } ; { *spf++ = ((char)('>' )); } ; 8850 ; 8851 2558 00D452DF lod R0,_spf ; ris 8852 255C E0D0 mov R1,R0 ; qasp1 8853 255E 8900 add R1,#1 ; qasp 8854 2560 A0D452DF str R1,_spf ; qasp 8855 2564 E41C lod R1,#60 ; lti 8856 2566 80B0 strb R1,[R0] ; assign 8857 2568 00D452DF lod R0,_spf ; ris 8858 256C E0D0 mov R1,R0 ; qasp1 8859 256E 8900 add R1,#1 ; qasp 8860 2570 A0D452DF str R1,_spf ; qasp 8861 2574 E61C lod R1,#62 ; lti 8862 2576 80B0 strb R1,[R0] ; assign 8863 2578 28D82A26 bra br76 ; anon 8864 br75 ; anon 8865 ; } 8866 ; 8867 ; else 8868 ; 8869 ; { 8870 ; 8871 ; if (prefield >= 0) 8872 ; 8873 257C 028C lod R0,[R7,#4] ; risf 8874 257E 2800 cmp R0,#0 ; gfv 8875 2580 08D8E025 blt br77 ; fjump F ; cfj 8876 ; { 8877 ; 8878 ; while(*s && field>0) 8879 ; 8880 br78 ; anon 8881 2584 018C lod R0,[R7,#2] ; risf 8882 2586 80A0 lodb R1,[R0] ; risf 8883 2588 A800 cmp R1,#0 ; gfv 8884 258A 00D8BC25 beq br79 ; fjmp1 ; cfj 8885 258E 038C lod R0,[R7,#6] ; risf 8886 2590 2800 cmp R0,#0 ; gfv 8887 2592 14D8BC25 ble br79 ; fjump F ; cfj 8888 ; { 8889 ; 8890 ; { *spf++ = ((char)(*s++ )); } ; 8891 ; 8892 2596 018C lod R0,[R7,#2] ; risf 8893 2598 E0D0 mov R1,R0 ; qasp1 8894 259A 8900 add R1,#1 ; qasp 8895 259C 819C str R1,[R7,#2] ; qasp 8896 259E 80D452DF lod R1,_spf ; ris 8897 25A2 61D1 mov R2,R1 ; qasp1 8898 25A4 0901 add R2,#1 ; qasp 8899 25A6 20D552DF str R2,_spf ; qasp 8900 25AA 00A1 lodb R2,[R0] ; risf 8901 25AC 00B5 strb R2,[R1] ; assign 8902 ; field--; 8903 ; 8904 25AE 038C lod R0,[R7,#6] ; risf 8905 25B0 1100 sub R0,#1 ; qas 8906 25B2 039C str R0,[R7,#6] ; qasmi 8907 ; prefield--; 8908 ; 8909 25B4 028C lod R0,[R7,#4] ; risf 8910 25B6 1100 sub R0,#1 ; qas 8911 25B8 029C str R0,[R7,#4] ; qasmi 8912 25BA E5CA bra br78 ; anon 8913 br79 ; anon 8914 ; } 8915 ; 8916 ; while(prefield>0) 8917 ; 8918 br80 ; anon 8919 25BC 028C lod R0,[R7,#4] ; risf 8920 25BE 2800 cmp R0,#0 ; gfv 8921 25C0 14D8DC25 ble br81 ; fjump F ; cfj 8922 ; { 8923 ; 8924 ; { *spf++ = ((char)(' ' )); } ; prefield--; 8925 ; 8926 25C4 00D452DF lod R0,_spf ; ris 8927 25C8 E0D0 mov R1,R0 ; qasp1 8928 25CA 8900 add R1,#1 ; qasp 8929 25CC A0D452DF str R1,_spf ; qasp 8930 25D0 E010 lod R1,#32 ; lti 8931 25D2 80B0 strb R1,[R0] ; assign 8932 25D4 028C lod R0,[R7,#4] ; risf 8933 25D6 1100 sub R0,#1 ; qas 8934 25D8 029C str R0,[R7,#4] ; qasmi 8935 25DA F1CA bra br80 ; anon 8936 br81 ; anon 8937 25DC 28D82A26 bra br82 ; anon 8938 br77 ; anon 8939 ; } 8940 ; 8941 ; } 8942 ; 8943 ; else 8944 ; 8945 ; { 8946 ; 8947 ; while(*s) 8948 ; 8949 br83 ; anon 8950 25E0 018C lod R0,[R7,#2] ; risf 8951 25E2 80A0 lodb R1,[R0] ; risf 8952 25E4 A800 cmp R1,#0 ; gfv 8953 25E6 00D80A26 beq br84 ; fjmp1 ; cfj 8954 ; { 8955 ; 8956 ; { *spf++ = ((char)(*s++ )); } ; field--; 8957 ; 8958 25EA 018C lod R0,[R7,#2] ; risf 8959 25EC E0D0 mov R1,R0 ; qasp1 8960 25EE 8900 add R1,#1 ; qasp 8961 25F0 819C str R1,[R7,#2] ; qasp 8962 25F2 80D452DF lod R1,_spf ; ris 8963 25F6 61D1 mov R2,R1 ; qasp1 8964 25F8 0901 add R2,#1 ; qasp 8965 25FA 20D552DF str R2,_spf ; qasp 8966 25FE 00A1 lodb R2,[R0] ; risf 8967 2600 00B5 strb R2,[R1] ; assign 8968 2602 038C lod R0,[R7,#6] ; risf 8969 2604 1100 sub R0,#1 ; qas 8970 2606 039C str R0,[R7,#6] ; qasmi 8971 2608 ECCA bra br83 ; anon 8972 br84 ; anon 8973 ; } 8974 ; 8975 ; while(field>0) 8976 ; 8977 br85 ; anon 8978 260A 038C lod R0,[R7,#6] ; risf 8979 260C 2800 cmp R0,#0 ; gfv 8980 260E 14D82A26 ble br86 ; fjump F ; cfj 8981 ; { 8982 ; 8983 ; { *spf++ = ((char)(' ' )); } ; field--; 8984 ; 8985 2612 00D452DF lod R0,_spf ; ris 8986 2616 E0D0 mov R1,R0 ; qasp1 8987 2618 8900 add R1,#1 ; qasp 8988 261A A0D452DF str R1,_spf ; qasp 8989 261E E010 lod R1,#32 ; lti 8990 2620 80B0 strb R1,[R0] ; assign 8991 2622 038C lod R0,[R7,#6] ; risf 8992 2624 1100 sub R0,#1 ; qas 8993 2626 039C str R0,[R7,#6] ; qasmi 8994 2628 F1CA bra br85 ; anon 8995 br86 ; anon 8996 br82 ; anon 8997 br76 ; anon 8998 262A 7F8F lod R6,[R7,#-2] ; cr 8999 262C 808F lod r7,[r7] ; cr 9000 262E 00F3 ret ; cr 9001 9002 9003 ; Routine dof 9004 .align 2 9005 _dof .global 9006 2630 809B str r7,[r2] 9007 2632 E2D3 mov r7,r2 9008 2634 7F9F str R6,[R7,#-2] 9009 2636 019C str R0,[R7,#2] 9010 2638 829C str R1,[R7,#4] 9011 ; ------------------------------------------------- 9012 ; local s [R7,#2] 9013 ; s 9014 ; local poi [R7,#4] 9015 ; s 9016 ; local i [R7,#-4] 9017 ; s 9018 263A 6000 lod R0,#0 ; lti 9019 263C 7E9C str R0,[R7,#-4] ; assign 9020 ; local zeropad [R7,#-6] 9021 ; s 9022 263E 6000 lod R0,#0 ; lti 9023 2640 7D9C str R0,[R7,#-6] ; assign 9024 ; local c [R7,#-8] 9025 ; s 9026 2642 018C lod R0,[R7,#2] ; risf 9027 2644 80A0 lodb R1,[R0] ; risf 9028 2646 FCBC strb R1,[R7,#-8] ; assign 9029 ; local prefield [R7,#-10] 9030 ; s 9031 ; local field [R7,#-12] 9032 ; s 9033 ; } 9034 ; 9035 ; 9036 ; 9037 ; 9038 ; 9039 ; 9040 ; 9041 ; 9042 ; 9043 ; 9044 ; 9045 ; 9046 ; 9047 ; 9048 ; 9049 ; dof(char *s, int *poi) 9050 ; 9051 ; { 9052 ; 9053 ; int i = 0; 9054 ; 9055 ; int zeropad = 0; 9056 ; 9057 ; char c = s[0]; 9058 ; 9059 ; 9060 ; 9061 ; int prefield; 9062 ; 9063 ; int field; 9064 ; 9065 ; 9066 ; 9067 ; while (c) 9068 ; 9069 br87 ; anon 9070 2648 7CAC lodb R0,[R7,#-8] ; risf 9071 264A 2800 cmp R0,#0 ; gfv 9072 264C 00D8F827 beq br88 ; fjmp1 ; cfj 9073 ; { 9074 ; 9075 ; if (c !='%') 9076 ; 9077 2650 7CAC lodb R0,[R7,#-8] ; risf 9078 2652 2D10 cmp R0,#37 ; alu_i 9079 2654 00D87826 beq br89 ; fjump F ; cfj 9080 ; { 9081 ; 9082 ; { *spf++ = ((char)(c )); } ; 9083 ; 9084 2658 00D452DF lod R0,_spf ; ris 9085 265C E0D0 mov R1,R0 ; qasp1 9086 265E 8900 add R1,#1 ; qasp 9087 2660 A0D452DF str R1,_spf ; qasp 9088 2664 FCAC lodb R1,[R7,#-8] ; risf 9089 2666 80B0 strb R1,[R0] ; assign 9090 ; c = s[++i]; 9091 ; 9092 2668 FE8C lod R1,[R7,#-4] ; risf 9093 266A 8900 add R1,#1 ; qap 9094 266C FE9C str R1,[R7,#-4] ; qasp 9095 266E 018C lod R0,[R7,#2] ; risf 9096 2670 09D0 add R0,R1 ; alu-l 9097 2672 80A0 lodb R1,[R0] ; risf 9098 2674 FCBC strb R1,[R7,#-8] ; assign 9099 ; continue; 9100 ; 9101 2676 E9CA bra br87 ; anon 9102 br89 ; anon 9103 ; } 9104 ; 9105 ; field = 0; 9106 ; 9107 2678 6000 lod R0,#0 ; lti 9108 267A 7A9C str R0,[R7,#-12] ; assign 9109 ; prefield = -1; 9110 ; 9111 267C 00F4FFFF lod R0,#-1 ; lti 9112 2680 7B9C str R0,[R7,#-10] ; assign 9113 ; sol: 9114 ; 9115 _sol ; labl 9116 ; { 9117 ; 9118 ; local t1 [R7,#-14] 9119 ; s 9120 ; local t [R7,#-16] 9121 ; s 9122 ; local tc [R7,#-18] 9123 ; s 9124 ; uchar t1, t; 9125 ; 9126 ; int tc; 9127 ; 9128 ; t = s[++i]; 9129 ; 9130 2682 FE8C lod R1,[R7,#-4] ; risf 9131 2684 8900 add R1,#1 ; qap 9132 2686 FE9C str R1,[R7,#-4] ; qasp 9133 2688 018C lod R0,[R7,#2] ; risf 9134 268A 09D0 add R0,R1 ; alu-l 9135 268C 80A0 lodb R1,[R0] ; risf 9136 268E F8BC strb R1,[R7,#-16] ; assign 9137 ; 9138 ; 9139 ; 9140 ; 9141 ; if (t >= 'a') t = t - 32; 9142 ; 9143 2690 78AC lodb R0,[R7,#-16] ; risf 9144 2692 2930 cmp R0,#97 ; alu_i 9145 2694 08D89E26 blt br90 ; fjump F ; cfj 9146 2698 78AC lodb R0,[R7,#-16] ; risf 9147 269A 1010 sub R0,#32 ; alu_i 9148 269C 78BC strb R0,[R7,#-16] ; assign 9149 br90 ; anon 9150 ; if (t == 'L') goto sol; 9151 ; 9152 269E 78AC lodb R0,[R7,#-16] ; risf 9153 26A0 2C24 cmp R0,#76 ; alu_i 9154 26A2 04D8AA26 bne br91 ; fjump F ; cfj 9155 26A6 28D88226 jmp _sol ; goto 9156 br91 ; anon 9157 ; 9158 ; 9159 ; 9160 ; 9161 ; 9162 ; 9163 ; if (t == '%') 9164 ; 9165 26AA 78AC lodb R0,[R7,#-16] ; risf 9166 26AC 2D10 cmp R0,#37 ; alu_i 9167 26AE 04D8C626 bne br92 ; fjump F ; cfj 9168 ; { 9169 ; 9170 ; { *spf++ = ((char)('%' )); } ; 9171 ; 9172 26B2 00D452DF lod R0,_spf ; ris 9173 26B6 E0D0 mov R1,R0 ; qasp1 9174 26B8 8900 add R1,#1 ; qasp 9175 26BA A0D452DF str R1,_spf ; qasp 9176 26BE E510 lod R1,#37 ; lti 9177 26C0 80B0 strb R1,[R0] ; assign 9178 26C2 28D8F427 bra br93 ; anon 9179 br92 ; anon 9180 ; } 9181 ; 9182 ; else 9183 ; 9184 ; { 9185 ; 9186 ; switch(t) 9187 ; 9188 26C6 F8AC lodb R1,[R7,#-16] ; risf 9189 26C8 6209 lod R2,#18 ; scan 9190 26CA 00F4EC26 lod R0,#br95 ; scan 9191 br117 ; anon 9192 26CE 80A1 lodb R3,[R0] ; scan 9193 26D0 A9D1 cmp R3,R1 ; scan 9194 26D2 00D8E026 beq br116 ; scan 9195 26D6 0900 add R0,#1 ; scan 9196 26D8 1101 sub R2,#1 ; scan 9197 26DA FAC1 bne br117 ; scan 9198 26DC 28D8D227 bra br115 ; scan 9199 br116 ; anon 9200 26E0 0AD1 add R2,R2 ; scan 9201 26E2 00F4FC26 lod R0, #(br94-2) ; scan 9202 26E6 0AD0 add R0,R2 ; scan 9203 26E8 0081 lod R2,[R0] ; scan 9204 26EA 00F1 bx R2 ; scan 9205 br95 ; anon 9206 26EC 43 .byte 67 ; ci 9207 26ED 53 .byte 83 ; ci 9208 26EE 58 .byte 88 ; ci 9209 26EF 2A .byte 42 ; ci 9210 26F0 49 .byte 73 ; ci 9211 26F1 44 .byte 68 ; ci 9212 26F2 55 .byte 85 ; ci 9213 26F3 30 .byte 48 ; ci 9214 26F4 31 .byte 49 ; ci 9215 26F5 32 .byte 50 ; ci 9216 26F6 33 .byte 51 ; ci 9217 26F7 34 .byte 52 ; ci 9218 26F8 35 .byte 53 ; ci 9219 26F9 36 .byte 54 ; ci 9220 26FA 37 .byte 55 ; ci 9221 26FB 38 .byte 56 ; ci 9222 26FC 39 .byte 57 ; ci 9223 26FD 2E .byte 46 ; ci 9224 .align 2 ; ci 9225 br94 ; anon 9226 26FE C627 .word br114 ; vp 9227 2700 A027 .word br113 ; vp 9228 2702 A027 .word br112 ; vp 9229 2704 A027 .word br111 ; vp 9230 2706 A027 .word br110 ; vp 9231 2708 A027 .word br109 ; vp 9232 270A A027 .word br108 ; vp 9233 270C A027 .word br107 ; vp 9234 270E A027 .word br106 ; vp 9235 2710 A027 .word br105 ; vp 9236 2712 9427 .word br104 ; vp 9237 2714 8427 .word br103 ; vp 9238 2716 7427 .word br102 ; vp 9239 2718 7427 .word br101 ; vp 9240 271A 6427 .word br100 ; vp 9241 271C 5227 .word br99 ; vp 9242 271E 3C27 .word br98 ; vp 9243 2720 2227 .word br97 ; vp 9244 br97 ; anon 9245 ; { 9246 ; 9247 ; case 'C': tc = *poi; { *spf++ = ((char)(tc )); } ; 9248 ; 9249 2722 028C lod R0,[R7,#4] ; risf 9250 2724 8080 lod R1,[R0] ; risf 9251 2726 F79C str R1,[R7,#-18] ; assign 9252 2728 00D452DF lod R0,_spf ; ris 9253 272C E0D0 mov R1,R0 ; qasp1 9254 272E 8900 add R1,#1 ; qasp 9255 2730 A0D452DF str R1,_spf ; qasp 9256 2734 F7AC lodb R1,[R7,#-18] ; risf 9257 2736 80B0 strb R1,[R0] ; assign 9258 ; break; 9259 ; 9260 2738 28D8E027 bra br96 ; anon 9261 br98 ; anon 9262 ; 9263 ; 9264 ; case 'S': 9265 ; 9266 ; prstring((char *) *poi, prefield, field); 9267 ; 9268 273C 7A8C lod R0,[R7,#-12] ; risf 9269 273E 769C str R0,[R7,#-20] ; assign 9270 2740 828C lod R1,[R7,#4] ; risf 9271 2742 0084 lod R0,[R1] ; risf 9272 2744 FB8C lod R1,[R7,#-10] ; risf 9273 ; force VR0 to 0 ; call 9274 ; force VR1 to 1 ; call 9275 2746 67D1 mov r2,r7 ; call 9276 2748 120D sub r2,#26 ; call 9277 274A 3CD84625 jsr _prstring ; call 9278 ; force VR0 to 0 ; res 9279 ; break; 9280 ; 9281 274E 28D8E027 bra br96 ; anon 9282 br99 ; anon 9283 ; 9284 ; 9285 ; case 'X': 9286 ; 9287 ; printx(*poi, field); 9288 ; 9289 2752 828C lod R1,[R7,#4] ; risf 9290 2754 0084 lod R0,[R1] ; risf 9291 2756 FA8C lod R1,[R7,#-12] ; risf 9292 ; force VR0 to 0 ; call 9293 ; force VR1 to 1 ; call 9294 2758 67D1 mov r2,r7 ; call 9295 275A 100D sub r2,#24 ; call 9296 275C 3CD84A22 jsr _printx ; call 9297 ; force VR0 to 0 ; res 9298 ; break; 9299 ; 9300 2760 28D8E027 bra br96 ; anon 9301 br100 ; anon 9302 ; 9303 ; 9304 ; case '*': field = *poi; { poi ++; } ; goto sol; 9305 ; 9306 2764 028C lod R0,[R7,#4] ; risf 9307 2766 8080 lod R1,[R0] ; risf 9308 2768 FA9C str R1,[R7,#-12] ; assign 9309 276A 028C lod R0,[R7,#4] ; risf 9310 276C 0A00 add R0,#2 ; qas 9311 276E 029C str R0,[R7,#4] ; qasmi 9312 2770 28D88226 jmp _sol ; goto 9313 br101 ; anon 9314 br102 ; anon 9315 ; 9316 ; 9317 ; case 'I': 9318 ; 9319 ; case 'D': 9320 ; 9321 ; printi(*poi); 9322 ; 9323 2774 828C lod R1,[R7,#4] ; risf 9324 2776 0084 lod R0,[R1] ; risf 9325 ; force VR0 to 0 ; call 9326 2778 67D1 mov r2,r7 ; call 9327 277A 100D sub r2,#24 ; call 9328 277C 3CD8E424 jsr _printi ; call 9329 ; force VR0 to 0 ; res 9330 ; break; 9331 ; 9332 2780 28D8E027 bra br96 ; anon 9333 br103 ; anon 9334 ; case 'U': 9335 ; 9336 ; printu(*poi); 9337 ; 9338 2784 828C lod R1,[R7,#4] ; risf 9339 2786 0084 lod R0,[R1] ; risf 9340 ; force VR0 to 0 ; call 9341 2788 67D1 mov r2,r7 ; call 9342 278A 100D sub r2,#24 ; call 9343 278C 3CD80424 jsr _printu ; call 9344 ; force VR0 to 0 ; res 9345 ; break; 9346 ; 9347 2790 28D8E027 bra br96 ; anon 9348 br104 ; anon 9349 ; 9350 ; 9351 ; case '0': 9352 ; 9353 ; if (field==0) zeropad = 1; 9354 ; 9355 2794 7A8C lod R0,[R7,#-12] ; risf 9356 2796 2800 cmp R0,#0 ; gfv 9357 2798 04D8A027 bne br118 ; fjump F ; cfj 9358 279C 6100 lod R0,#1 ; lti 9359 279E 7D9C str R0,[R7,#-6] ; assign 9360 br118 ; anon 9361 br105 ; anon 9362 br106 ; anon 9363 br107 ; anon 9364 br108 ; anon 9365 br109 ; anon 9366 br110 ; anon 9367 br111 ; anon 9368 br112 ; anon 9369 br113 ; anon 9370 ; case '1': case '2': case '3': case '4': 9371 ; 9372 ; case '5': case '6': case '7': case '8': case '9': 9373 ; 9374 ; field = field*10 + t - '0'; 9375 ; 9376 27A0 6204 lod R0,#10 ; lti 9377 27A2 FA8C lod R1,[R7,#-12] ; risf 9378 27A4 6001 lod R2,#0 ; LM 9379 br119 ; anon 9380 27A6 2800 cmp R0,#0 ; gfv 9381 27A8 00D8BA27 beq br120 ; anon 9382 27AC 6900 tst R0,#1 ; anon 9383 27AE 00D8B427 beq br121 ; anon 9384 27B2 09D1 add R2,R1 ; anon 9385 br121 ; anon 9386 27B4 5900 lsr R0,#1 ; anon 9387 27B6 C900 lsl R1,#1 ; anon 9388 27B8 F7CA bra br119 ; anon 9389 br120 ; anon 9390 27BA 78AC lodb R0,[R7,#-16] ; risf 9391 27BC 08D1 add R2,R0 ; alu-l 9392 27BE 1019 sub R2,#48 ; alu_i 9393 27C0 7A9D str R2,[R7,#-12] ; assign 9394 ; goto sol; 9395 ; 9396 27C2 28D88226 jmp _sol ; goto 9397 br114 ; anon 9398 ; 9399 ; 9400 ; case '.': prefield = field; field = 0; goto sol; 9401 ; 9402 27C6 7A8C lod R0,[R7,#-12] ; risf 9403 27C8 7B9C str R0,[R7,#-10] ; assign 9404 27CA 6000 lod R0,#0 ; lti 9405 27CC 7A9C str R0,[R7,#-12] ; assign 9406 27CE 28D88226 jmp _sol ; goto 9407 br115 ; anon 9408 ; 9409 ; 9410 ; default: printf("Bad printf selector '%c' \n", t); 9411 ; 9412 27D2 00F4FE27 lod R0,#br122 ; ltgd3 9413 27D6 F8AC lodb R1,[R7,#-16] ; risf 9414 ; force VR0 to 0 ; call 9415 ; force VR1 to 1 ; call 9416 27D8 67D1 mov r2,r7 ; call 9417 27DA 100D sub r2,#24 ; call 9418 27DC 3CD89628 jsr _printf ; call 9419 ; force VR0 to 0 ; res 9420 br96 ; anon 9421 ; 9422 ; 9423 ; } 9424 ; 9425 ; c = s[++i]; 9426 ; 9427 27E0 FE8C lod R1,[R7,#-4] ; risf 9428 27E2 8900 add R1,#1 ; qap 9429 27E4 FE9C str R1,[R7,#-4] ; qasp 9430 27E6 018C lod R0,[R7,#2] ; risf 9431 27E8 09D0 add R0,R1 ; alu-l 9432 27EA 80A0 lodb R1,[R0] ; risf 9433 27EC FCBC strb R1,[R7,#-8] ; assign 9434 ; { poi ++; } ; 9435 ; 9436 27EE 028C lod R0,[R7,#4] ; risf 9437 27F0 0A00 add R0,#2 ; qas 9438 27F2 029C str R0,[R7,#4] ; qasmi 9439 br93 ; anon 9440 27F4 28D84826 bra br87 ; anon 9441 br88 ; anon 9442 27F8 7F8F lod R6,[R7,#-2] ; cr 9443 27FA 808F lod r7,[r7] ; cr 9444 27FC 00F3 ret ; cr 9445 27FE 42616420 br122 .data "Bad printf selector ",39,37,99,39,32,10,0 7072696E74662073656C6563746F722027256327200A00 9446 9447 9448 ; Routine fprintf 9449 2819 00 .align 2 9450 _fprintf .global 9451 281A 809B str r7,[r2] 9452 281C E2D3 mov r7,r2 9453 281E 7F9F str R6,[R7,#-2] 9454 2820 019C str R0,[R7,#2] 9455 2822 829C str R1,[R7,#4] 9456 ; ------------------------------------------------- 9457 ; local fd [R7,#2] 9458 ; s 9459 ; local s [R7,#4] 9460 ; s 9461 ; local a [R7,#6] 9462 ; s 9463 ; } 9464 ; 9465 ; 9466 ; 9467 ; void fprintf(struct stdio *fd, char *s, int a, ...) 9468 ; 9469 ; { 9470 ; 9471 ; ; 9472 ; 9473 ; fflush (fd); 9474 ; 9475 2824 018C lod R0,[R7,#2] ; risf 9476 ; force VR0 to 0 ; call 9477 2826 67D1 mov r2,r7 ; call 9478 2828 1005 sub r2,#8 ; call 9479 282A 3CD88E2B jsr _fflush ; call 9480 ; force VR0 to 0 ; res 9481 ; spf = _spfbuf; 9482 ; 9483 282E 00F454DF lod R0,#__spfbuf ; ltgd2 9484 2832 20D452DF str R0,_spf ; assign 9485 ; dof(s, &a); 9486 ; 9487 2836 028C lod R0,[R7,#4] ; risf 9488 2838 67D1 mov R2,R7 ; lt-u 9489 283A 0E01 add R2,#6 ; ltgr 9490 283C E2D0 mov R1,R2 ; ltmv 9491 ; force VR0 to 0 ; call 9492 ; force VR1 to 1 ; call 9493 283E 67D1 mov r2,r7 ; call 9494 2840 1005 sub r2,#8 ; call 9495 2842 3CD83026 jsr _dof ; call 9496 ; force VR0 to 0 ; res 9497 ; write(fd->sysfd, _spfbuf, spf-_spfbuf); 9498 ; 9499 2846 00D452DF lod R0,_spf ; ris 9500 284A 80F454DF lod R1,#__spfbuf ; ltgd2 9501 284E 11D0 sub R0,R1 ; alu-l 9502 2850 7E9C str R0,[R7,#-4] ; assign 9503 2852 838C lod R1,[R7,#6] ; risf 9504 2854 0084 lod R0,[R1] ; risf 9505 2856 80F454DF lod R1,#__spfbuf ; ltgd2 9506 ; force VR0 to 0 ; call 9507 ; force VR1 to 1 ; call 9508 285A 67D1 mov r2,r7 ; call 9509 285C 1205 sub r2,#10 ; call 9510 285E 3CD8C41F jsr _write ; call 9511 ; force VR0 to 0 ; res 9512 2862 7F8F lod R6,[R7,#-2] ; cr 9513 2864 808F lod r7,[r7] ; cr 9514 2866 00F3 ret ; cr 9515 9516 9517 ; Routine sprintf 9518 .align 2 9519 _sprintf .global 9520 2868 809B str r7,[r2] 9521 286A E2D3 mov r7,r2 9522 286C 7F9F str R6,[R7,#-2] 9523 286E 019C str R0,[R7,#2] 9524 2870 829C str R1,[R7,#4] 9525 ; ------------------------------------------------- 9526 ; local string [R7,#2] 9527 ; s 9528 ; local s [R7,#4] 9529 ; s 9530 ; local a [R7,#6] 9531 ; s 9532 ; } 9533 ; 9534 ; 9535 ; 9536 ; 9537 ; 9538 ; void sprintf(char *string, char *s, int a, ...) 9539 ; 9540 ; { 9541 ; 9542 ; spf = string; 9543 ; 9544 2872 018C lod R0,[R7,#2] ; risf 9545 2874 20D452DF str R0,_spf ; assign 9546 ; dof(s, &a); 9547 ; 9548 2878 028C lod R0,[R7,#4] ; risf 9549 287A 67D1 mov R2,R7 ; lt-u 9550 287C 0E01 add R2,#6 ; ltgr 9551 287E E2D0 mov R1,R2 ; ltmv 9552 ; force VR0 to 0 ; call 9553 ; force VR1 to 1 ; call 9554 2880 67D1 mov r2,r7 ; call 9555 2882 1005 sub r2,#8 ; call 9556 2884 3CD83026 jsr _dof ; call 9557 ; force VR0 to 0 ; res 9558 ; *spf = (char) 0; 9559 ; 9560 2888 E000 lod R1,#0 ; lti 9561 288A 00D452DF lod R0,_spf ; ris 9562 288E 80B0 strb R1,[R0] ; assign 9563 2890 7F8F lod R6,[R7,#-2] ; cr 9564 2892 808F lod r7,[r7] ; cr 9565 2894 00F3 ret ; cr 9566 9567 9568 ; Routine printf 9569 .align 2 9570 _printf .global 9571 2896 809B str r7,[r2] 9572 2898 E2D3 mov r7,r2 9573 289A 7F9F str R6,[R7,#-2] 9574 289C 019C str R0,[R7,#2] 9575 289E 829C str R1,[R7,#4] 9576 ; ------------------------------------------------- 9577 ; local s [R7,#2] 9578 ; s 9579 ; local a [R7,#4] 9580 ; s 9581 ; } 9582 ; 9583 ; 9584 ; 9585 ; 9586 ; 9587 ; void printf(char *s, int a, ...) 9588 ; 9589 ; { 9590 ; 9591 ; spf = _spfbuf; 9592 ; 9593 28A0 00F454DF lod R0,#__spfbuf ; ltgd2 9594 28A4 20D452DF str R0,_spf ; assign 9595 ; dof(s, &a); 9596 ; 9597 28A8 018C lod R0,[R7,#2] ; risf 9598 28AA 67D1 mov R2,R7 ; lt-u 9599 28AC 0C01 add R2,#4 ; ltgr 9600 28AE E2D0 mov R1,R2 ; ltmv 9601 ; force VR0 to 0 ; call 9602 ; force VR1 to 1 ; call 9603 28B0 67D1 mov r2,r7 ; call 9604 28B2 1005 sub r2,#8 ; call 9605 28B4 3CD83026 jsr _dof ; call 9606 ; force VR0 to 0 ; res 9607 ; sa_write(_spfbuf, spf-_spfbuf); 9608 ; 9609 28B8 00F454DF lod R0,#__spfbuf ; ltgd2 9610 28BC 80D452DF lod R1,_spf ; ris 9611 28C0 00F554DF lod R2,#__spfbuf ; ltgd2 9612 28C4 92D0 sub R1,R2 ; alu-l 9613 ; force VR0 to 0 ; call 9614 ; force VR1 to 1 ; call 9615 28C6 67D1 mov r2,r7 ; call 9616 28C8 1005 sub r2,#8 ; call 9617 28CA 3CD8761F jsr _sa_write ; call 9618 ; force VR0 to 0 ; res 9619 28CE 7F8F lod R6,[R7,#-2] ; cr 9620 28D0 808F lod r7,[r7] ; cr 9621 28D2 00F3 ret ; cr 9622 9623 9624 ; Routine strcat 9625 .align 2 9626 _strcat .global 9627 28D4 809B str r7,[r2] 9628 28D6 E2D3 mov r7,r2 9629 28D8 7F9F str R6,[R7,#-2] 9630 28DA 019C str R0,[R7,#2] 9631 28DC 829C str R1,[R7,#4] 9632 ; ------------------------------------------------- 9633 ; local dest [R7,#2] 9634 ; s 9635 ; local src [R7,#4] 9636 ; s 9637 ; } 9638 ; 9639 ; 9640 ; 9641 ; char *strcat(char *dest, char *src) 9642 ; 9643 ; { 9644 ; 9645 ; while (*dest) dest++; 9646 ; 9647 br127 ; anon 9648 28DE 018C lod R0,[R7,#2] ; risf 9649 28E0 80A0 lodb R1,[R0] ; risf 9650 28E2 A800 cmp R1,#0 ; gfv 9651 28E4 00D8F028 beq br128 ; fjmp1 ; cfj 9652 28E8 018C lod R0,[R7,#2] ; risf 9653 28EA 0900 add R0,#1 ; qas 9654 28EC 019C str R0,[R7,#2] ; qasmi 9655 28EE F8CA bra br127 ; anon 9656 br128 ; anon 9657 ; while (*src) { *(dest++) = *(src++); } 9658 ; 9659 br129 ; anon 9660 28F0 028C lod R0,[R7,#4] ; risf 9661 28F2 80A0 lodb R1,[R0] ; risf 9662 28F4 A800 cmp R1,#0 ; gfv 9663 28F6 00D81029 beq br130 ; fjmp1 ; cfj 9664 28FA 028C lod R0,[R7,#4] ; risf 9665 28FC E0D0 mov R1,R0 ; qasp1 9666 28FE 8900 add R1,#1 ; qasp 9667 2900 829C str R1,[R7,#4] ; qasp 9668 2902 818C lod R1,[R7,#2] ; risf 9669 2904 61D1 mov R2,R1 ; qasp1 9670 2906 0901 add R2,#1 ; qasp 9671 2908 019D str R2,[R7,#2] ; qasp 9672 290A 00A1 lodb R2,[R0] ; risf 9673 290C 00B5 strb R2,[R1] ; assign 9674 290E F1CA bra br129 ; anon 9675 br130 ; anon 9676 ; *dest = (char) 0; 9677 ; 9678 2910 E000 lod R1,#0 ; lti 9679 2912 018C lod R0,[R7,#2] ; risf 9680 2914 80B0 strb R1,[R0] ; assign 9681 ; return dest; 9682 ; 9683 2916 018C lod R0,[R7,#2] ; risf 9684 ; force VR0 to 0 ; loadtod0 9685 2918 7F8F lod R6,[R7,#-2] ; cr 9686 291A 808F lod r7,[r7] ; cr 9687 291C 00F3 ret ; cr 9688 9689 9690 ; Routine bzero 9691 .align 2 9692 _bzero .global 9693 291E 809B str r7,[r2] 9694 2920 E2D3 mov r7,r2 9695 ; ------------------------------------------------- 9696 ; local b1 R582 9697 ; s 9698 ; local length R583 9699 ; s 9700 ; force VR0 to 0 ; pram 9701 ; force VR1 to 1 ; pram 9702 ; } 9703 ; 9704 ; 9705 ; 9706 ; void bzero(char *b1, int length) 9707 ; 9708 ; { 9709 ; 9710 ; while(--length >= 0) *(b1++) = (char) 0; 9711 ; 9712 br131 ; anon 9713 2922 9100 sub R1,#1 ; qap 9714 ; mov R1,R1 redundant ; qasp 9715 2924 A800 cmp R1,#0 ; gfv 9716 2926 08D83429 blt br132 ; fjump F ; cfj 9717 292A 60D1 mov R2,R0 ; qasp 9718 292C 0900 add R0,#1 ; qasp 9719 292E E001 lod R3,#0 ; lti 9720 2930 80B9 strb R3,[R2] ; assign 9721 2932 F8CA bra br131 ; anon 9722 br132 ; anon 9723 ; force VR0 to 0 ; pram 9724 ; force VR1 to 1 ; pram 9725 2934 808F lod r7,[r7] ; cr 9726 2936 00F3 ret ; cr 9727 9728 9729 ; Routine bcmp 9730 .align 2 9731 _bcmp .global 9732 2938 809B str r7,[r2] 9733 293A E2D3 mov r7,r2 9734 293C 7F9F str R6,[R7,#-2] 9735 293E 019C str R0,[R7,#2] 9736 2940 829C str R1,[R7,#4] 9737 ; ------------------------------------------------- 9738 ; local b1 [R7,#2] 9739 ; s 9740 ; local b2 [R7,#4] 9741 ; s 9742 ; local length [R7,#6] 9743 ; s 9744 ; } 9745 ; 9746 ; 9747 ; 9748 ; 9749 ; 9750 ; int bcmp(char *b1, char *b2, int length) 9751 ; 9752 ; { 9753 ; 9754 ; while(--length >= 0) if ( *(b1++) != *(b2++)) return 1; 9755 ; 9756 br136 ; anon 9757 2942 038C lod R0,[R7,#6] ; risf 9758 2944 1100 sub R0,#1 ; qap 9759 2946 039C str R0,[R7,#6] ; qasp 9760 2948 2800 cmp R0,#0 ; gfv 9761 294A 08D87229 blt br137 ; fjump F ; cfj 9762 294E 018C lod R0,[R7,#2] ; risf 9763 2950 E0D0 mov R1,R0 ; qasp1 9764 2952 8900 add R1,#1 ; qasp 9765 2954 819C str R1,[R7,#2] ; qasp 9766 2956 828C lod R1,[R7,#4] ; risf 9767 2958 61D1 mov R2,R1 ; qasp1 9768 295A 0901 add R2,#1 ; qasp 9769 295C 029D str R2,[R7,#4] ; qasp 9770 295E 00A1 lodb R2,[R0] ; risf 9771 2960 00A4 lodb R0,[R1] ; risf 9772 2962 28D1 cmp R2,R0 ; alu-l 9773 2964 00D87029 beq br138 ; fjump F ; cfj 9774 2968 6100 lod R0,#1 ; lti 9775 ; force VR0 to 0 ; loadtod0 9776 296A 7F8F lod R6,[R7,#-2] ; cr 9777 296C 808F lod r7,[r7] ; cr 9778 296E 00F3 ret ; cr 9779 br138 ; anon 9780 2970 E9CA bra br136 ; anon 9781 br137 ; anon 9782 ; return 0; 9783 ; 9784 2972 6000 lod R0,#0 ; lti 9785 ; force VR0 to 0 ; loadtod0 9786 2974 7F8F lod R6,[R7,#-2] ; cr 9787 2976 808F lod r7,[r7] ; cr 9788 2978 00F3 ret ; cr 9789 9790 9791 ; Routine bcopy 9792 .align 2 9793 _bcopy .global 9794 297A 809B str r7,[r2] 9795 297C E2D3 mov r7,r2 9796 297E 7F9F str R6,[R7,#-2] 9797 2980 019C str R0,[R7,#2] 9798 2982 829C str R1,[R7,#4] 9799 ; ------------------------------------------------- 9800 ; local src [R7,#2] 9801 ; s 9802 ; local dest [R7,#4] 9803 ; s 9804 ; local length [R7,#6] 9805 ; s 9806 ; } 9807 ; 9808 ; 9809 ; 9810 ; void bcopy(char *src, char *dest, int length) 9811 ; 9812 ; { 9813 ; 9814 ; while(--length >= 0) *(dest++) = *(src++); 9815 ; 9816 br141 ; anon 9817 2984 038C lod R0,[R7,#6] ; risf 9818 2986 1100 sub R0,#1 ; qap 9819 2988 039C str R0,[R7,#6] ; qasp 9820 298A 2800 cmp R0,#0 ; gfv 9821 298C 08D8A629 blt br142 ; fjump F ; cfj 9822 2990 018C lod R0,[R7,#2] ; risf 9823 2992 E0D0 mov R1,R0 ; qasp1 9824 2994 8900 add R1,#1 ; qasp 9825 2996 819C str R1,[R7,#2] ; qasp 9826 2998 828C lod R1,[R7,#4] ; risf 9827 299A 61D1 mov R2,R1 ; qasp1 9828 299C 0901 add R2,#1 ; qasp 9829 299E 029D str R2,[R7,#4] ; qasp 9830 29A0 00A1 lodb R2,[R0] ; risf 9831 29A2 00B5 strb R2,[R1] ; assign 9832 29A4 F0CA bra br141 ; anon 9833 br142 ; anon 9834 29A6 7F8F lod R6,[R7,#-2] ; cr 9835 29A8 808F lod r7,[r7] ; cr 9836 29AA 00F3 ret ; cr 9837 9838 9839 ; Routine memcpy 9840 .align 2 9841 _memcpy .global 9842 29AC 809B str r7,[r2] 9843 29AE E2D3 mov r7,r2 9844 29B0 7F9F str R6,[R7,#-2] 9845 29B2 019C str R0,[R7,#2] 9846 29B4 829C str R1,[R7,#4] 9847 ; ------------------------------------------------- 9848 ; local dest [R7,#2] 9849 ; s 9850 ; local src [R7,#4] 9851 ; s 9852 ; local length [R7,#6] 9853 ; s 9854 ; local b1 [R7,#-4] 9855 ; s 9856 29B6 028C lod R0,[R7,#4] ; risf 9857 29B8 7E9C str R0,[R7,#-4] ; assign 9858 ; local b2 [R7,#-6] 9859 ; s 9860 29BA 018C lod R0,[R7,#2] ; risf 9861 29BC 7D9C str R0,[R7,#-6] ; assign 9862 ; local d [R7,#-8] 9863 ; s 9864 29BE 018C lod R0,[R7,#2] ; risf 9865 29C0 7C9C str R0,[R7,#-8] ; assign 9866 ; } 9867 ; 9868 ; 9869 ; 9870 ; 9871 ; 9872 ; 9873 ; 9874 ; void *memcpy(void *dest, void *src, int length) 9875 ; 9876 ; { 9877 ; 9878 ; char *b1 = (char *) src; 9879 ; 9880 ; char *b2 = (char *) dest; 9881 ; 9882 ; void *d = dest; 9883 ; 9884 ; while(--length >= 0) *(b2++) = *(b1++); 9885 ; 9886 br145 ; anon 9887 29C2 038C lod R0,[R7,#6] ; risf 9888 29C4 1100 sub R0,#1 ; qap 9889 29C6 039C str R0,[R7,#6] ; qasp 9890 29C8 2800 cmp R0,#0 ; gfv 9891 29CA 08D8E429 blt br146 ; fjump F ; cfj 9892 29CE 7E8C lod R0,[R7,#-4] ; risf 9893 29D0 E0D0 mov R1,R0 ; qasp1 9894 29D2 8900 add R1,#1 ; qasp 9895 29D4 FE9C str R1,[R7,#-4] ; qasp 9896 29D6 FD8C lod R1,[R7,#-6] ; risf 9897 29D8 61D1 mov R2,R1 ; qasp1 9898 29DA 0901 add R2,#1 ; qasp 9899 29DC 7D9D str R2,[R7,#-6] ; qasp 9900 29DE 00A1 lodb R2,[R0] ; risf 9901 29E0 00B5 strb R2,[R1] ; assign 9902 29E2 F0CA bra br145 ; anon 9903 br146 ; anon 9904 ; return d; 9905 ; 9906 29E4 7C8C lod R0,[R7,#-8] ; risf 9907 ; force VR0 to 0 ; loadtod0 9908 29E6 7F8F lod R6,[R7,#-2] ; cr 9909 29E8 808F lod r7,[r7] ; cr 9910 29EA 00F3 ret ; cr 9911 9912 9913 ; Routine strncpy 9914 .align 2 9915 _strncpy .global 9916 29EC 809B str r7,[r2] 9917 29EE E2D3 mov r7,r2 9918 29F0 7F9F str R6,[R7,#-2] 9919 29F2 019C str R0,[R7,#2] 9920 29F4 829C str R1,[R7,#4] 9921 ; ------------------------------------------------- 9922 ; local dest [R7,#2] 9923 ; s 9924 ; local src [R7,#4] 9925 ; s 9926 ; local n [R7,#6] 9927 ; s 9928 ; } 9929 ; 9930 ; 9931 ; 9932 ; 9933 ; 9934 ; char *strncpy(char *dest, char *src, int n) 9935 ; 9936 ; { 9937 ; 9938 ; while (n-- > 0) 9939 ; 9940 br149 ; anon 9941 29F6 038C lod R0,[R7,#6] ; risf 9942 29F8 E0D0 mov R1,R0 ; qasp1 9943 29FA 9100 sub R1,#1 ; qasp 9944 29FC 839C str R1,[R7,#6] ; qasp 9945 29FE 2800 cmp R0,#0 ; gfv 9946 2A00 14D81A2A ble br150 ; fjump F ; cfj 9947 ; { 9948 ; 9949 ; *(dest++) = *(src++); 9950 ; 9951 2A04 028C lod R0,[R7,#4] ; risf 9952 2A06 E0D0 mov R1,R0 ; qasp1 9953 2A08 8900 add R1,#1 ; qasp 9954 2A0A 829C str R1,[R7,#4] ; qasp 9955 2A0C 818C lod R1,[R7,#2] ; risf 9956 2A0E 61D1 mov R2,R1 ; qasp1 9957 2A10 0901 add R2,#1 ; qasp 9958 2A12 019D str R2,[R7,#2] ; qasp 9959 2A14 00A1 lodb R2,[R0] ; risf 9960 2A16 00B5 strb R2,[R1] ; assign 9961 2A18 EFCA bra br149 ; anon 9962 br150 ; anon 9963 ; } 9964 ; 9965 ; return dest; 9966 ; 9967 2A1A 018C lod R0,[R7,#2] ; risf 9968 ; force VR0 to 0 ; loadtod0 9969 2A1C 7F8F lod R6,[R7,#-2] ; cr 9970 2A1E 808F lod r7,[r7] ; cr 9971 2A20 00F3 ret ; cr 9972 9973 9974 ; Routine strcpy 9975 .align 2 9976 _strcpy .global 9977 2A22 809B str r7,[r2] 9978 2A24 E2D3 mov r7,r2 9979 2A26 7F9F str R6,[R7,#-2] 9980 2A28 019C str R0,[R7,#2] 9981 2A2A 829C str R1,[R7,#4] 9982 ; ------------------------------------------------- 9983 ; local dest [R7,#2] 9984 ; s 9985 ; local src [R7,#4] 9986 ; s 9987 ; } 9988 ; 9989 ; 9990 ; 9991 ; 9992 ; 9993 ; char *strcpy(char *dest, const char *src) 9994 ; 9995 ; { 9996 ; 9997 ; while (*src) 9998 ; 9999 br153 ; anon 10000 2A2C 028C lod R0,[R7,#4] ; risf 10001 2A2E 80A0 lodb R1,[R0] ; risf 10002 2A30 A800 cmp R1,#0 ; gfv 10003 2A32 00D84C2A beq br154 ; fjmp1 ; cfj 10004 ; { 10005 ; 10006 ; *(dest++) = *(src++); 10007 ; 10008 2A36 028C lod R0,[R7,#4] ; risf 10009 2A38 E0D0 mov R1,R0 ; qasp1 10010 2A3A 8900 add R1,#1 ; qasp 10011 2A3C 829C str R1,[R7,#4] ; qasp 10012 2A3E 818C lod R1,[R7,#2] ; risf 10013 2A40 61D1 mov R2,R1 ; qasp1 10014 2A42 0901 add R2,#1 ; qasp 10015 2A44 019D str R2,[R7,#2] ; qasp 10016 2A46 00A1 lodb R2,[R0] ; risf 10017 2A48 00B5 strb R2,[R1] ; assign 10018 2A4A F1CA bra br153 ; anon 10019 br154 ; anon 10020 ; } 10021 ; 10022 ; *dest = (char) 0; 10023 ; 10024 2A4C E000 lod R1,#0 ; lti 10025 2A4E 018C lod R0,[R7,#2] ; risf 10026 2A50 80B0 strb R1,[R0] ; assign 10027 ; return dest; 10028 ; 10029 2A52 018C lod R0,[R7,#2] ; risf 10030 ; force VR0 to 0 ; loadtod0 10031 2A54 7F8F lod R6,[R7,#-2] ; cr 10032 2A56 808F lod r7,[r7] ; cr 10033 2A58 00F3 ret ; cr 10034 10035 10036 ; Routine strstr 10037 .align 2 10038 _strstr .global 10039 2A5A 809B str r7,[r2] 10040 2A5C E2D3 mov r7,r2 10041 ; ------------------------------------------------- 10042 ; local targ R674 10043 ; s 10044 ; local pat R675 10045 ; s 10046 ; force VR0 to 0 ; pram 10047 ; force VR1 to 1 ; pram 10048 ; } 10049 ; 10050 ; 10051 ; 10052 ; 10053 ; 10054 ; char *strstr(char *targ, char *pat) 10055 ; 10056 ; { 10057 ; 10058 ; while(*targ) 10059 ; 10060 br155 ; anon 10061 2A5E 00A1 lodb R2,[R0] ; risf 10062 2A60 2801 cmp R2,#0 ; gfv 10063 2A62 00D8A22A beq br156 ; fjmp1 ; cfj 10064 ; { 10065 ; 10066 ; local p [R7,#-4] 10067 ; s 10068 2A66 FE9C str R1,[R7,#-4] ; assign 10069 ; force VR0 to 0 ; pram 10070 ; force VR1 to 1 ; pram 10071 ; local q [R7,#-6] 10072 ; s 10073 2A68 7D9C str R0,[R7,#-6] ; assign 10074 ; force VR0 to 0 ; pram 10075 ; force VR1 to 1 ; pram 10076 ; char *p = pat; 10077 ; 10078 ; char *q = targ; 10079 ; 10080 ; while (*p && *p == *q) { p++; q++; }; 10081 ; 10082 br157 ; anon 10083 2A6A 7E8D lod R2,[R7,#-4] ; risf 10084 2A6C 80A9 lodb R3,[R2] ; risf 10085 2A6E A801 cmp R3,#0 ; gfv 10086 2A70 00D8902A beq br158 ; fjmp1 ; cfj 10087 2A74 7E8D lod R2,[R7,#-4] ; risf 10088 2A76 80A9 lodb R3,[R2] ; risf 10089 2A78 7D8D lod R2,[R7,#-6] ; risf 10090 2A7A 00AA lodb R4,[R2] ; risf 10091 2A7C ACD1 cmp R3,R4 ; alu-l 10092 2A7E 04D8902A bne br158 ; fjump F ; cfj 10093 2A82 7E8D lod R2,[R7,#-4] ; risf 10094 2A84 0901 add R2,#1 ; qas 10095 2A86 7E9D str R2,[R7,#-4] ; qasmi 10096 2A88 7D8D lod R2,[R7,#-6] ; risf 10097 2A8A 0901 add R2,#1 ; qas 10098 2A8C 7D9D str R2,[R7,#-6] ; qasmi 10099 2A8E EECA bra br157 ; anon 10100 br158 ; anon 10101 ; if (*p == (char) 0) return targ; 10102 ; 10103 2A90 7E8D lod R2,[R7,#-4] ; risf 10104 2A92 80A9 lodb R3,[R2] ; risf 10105 2A94 A801 cmp R3,#0 ; gfv 10106 2A96 04D89E2A bne br159 ; fjump F ; cfj 10107 ; force VR0 to 0 ; loadtod0 10108 2A9A 808F lod r7,[r7] ; cr 10109 2A9C 00F3 ret ; cr 10110 br159 ; anon 10111 ; targ++; 10112 ; 10113 2A9E 0900 add R0,#1 ; qas 10114 ; mov R0,R0 redundant ; qasmi 10115 2AA0 DFCA bra br155 ; anon 10116 br156 ; anon 10117 ; } 10118 ; 10119 ; return 0 ; 10120 ; 10121 2AA2 6001 lod R2,#0 ; lti 10122 2AA4 62D0 mov R0,R2 ; forceresolve 10123 2AA6 808F lod r7,[r7] ; cr 10124 2AA8 00F3 ret ; cr 10125 ; force VR0 to 0 ; pram 10126 ; force VR1 to 1 ; pram 10127 10128 10129 ; Routine strlen 10130 .align 2 10131 _strlen .global 10132 2AAA 809B str r7,[r2] 10133 2AAC E2D3 mov r7,r2 10134 ; ------------------------------------------------- 10135 ; local s R689 10136 ; s 10137 ; force VR0 to 0 ; pram 10138 ; local r [R7,#-4] 10139 ; s 10140 2AAE E000 lod R1,#0 ; lti 10141 2AB0 FE9C str R1,[R7,#-4] ; assign 10142 ; force VR0 to 0 ; pram 10143 ; } 10144 ; 10145 ; 10146 ; 10147 ; 10148 ; 10149 ; 10150 ; 10151 ; int strlen(char *s) 10152 ; 10153 ; { 10154 ; 10155 ; int r = 0; 10156 ; 10157 ; while(*s++) r++; 10158 ; 10159 br160 ; anon 10160 2AB2 E0D0 mov R1,R0 ; qasp 10161 2AB4 0900 add R0,#1 ; qasp 10162 2AB6 00A5 lodb R2,[R1] ; risf 10163 2AB8 2801 cmp R2,#0 ; gfv 10164 2ABA 00D8C62A beq br161 ; fjmp1 ; cfj 10165 2ABE FE8C lod R1,[R7,#-4] ; risf 10166 2AC0 8900 add R1,#1 ; qas 10167 2AC2 FE9C str R1,[R7,#-4] ; qasmi 10168 2AC4 F7CA bra br160 ; anon 10169 br161 ; anon 10170 ; return r; 10171 ; 10172 2AC6 FE8C lod R1,[R7,#-4] ; risf 10173 2AC8 61D0 mov R0,R1 ; forceresolve 10174 2ACA 808F lod r7,[r7] ; cr 10175 2ACC 00F3 ret ; cr 10176 ; force VR0 to 0 ; pram 10177 10178 10179 ; Routine fread 10180 .align 2 10181 _fread .global 10182 2ACE 809B str r7,[r2] 10183 2AD0 E2D3 mov r7,r2 10184 2AD2 7F9F str R6,[R7,#-2] 10185 2AD4 019C str R0,[R7,#2] 10186 2AD6 829C str R1,[R7,#4] 10187 ; ------------------------------------------------- 10188 ; local buf [R7,#2] 10189 ; s 10190 ; local size [R7,#4] 10191 ; s 10192 ; local nitems [R7,#6] 10193 ; s 10194 ; local stream [R7,#8] 10195 ; s 10196 ; } 10197 ; 10198 ; 10199 ; 10200 ; int fread(char *buf, int size, int nitems, struct stdio *stream) 10201 ; 10202 ; { 10203 ; 10204 ; return read(stream->sysfd, buf, size * nitems); 10205 ; 10206 2AD8 038C lod R0,[R7,#6] ; risf 10207 2ADA 828C lod R1,[R7,#4] ; risf 10208 2ADC 6001 lod R2,#0 ; LM 10209 br162 ; anon 10210 2ADE 2800 cmp R0,#0 ; gfv 10211 2AE0 00D8F22A beq br163 ; anon 10212 2AE4 6900 tst R0,#1 ; anon 10213 2AE6 00D8EC2A beq br164 ; anon 10214 2AEA 09D1 add R2,R1 ; anon 10215 br164 ; anon 10216 2AEC 5900 lsr R0,#1 ; anon 10217 2AEE C900 lsl R1,#1 ; anon 10218 2AF0 F7CA bra br162 ; anon 10219 br163 ; anon 10220 2AF2 7E9D str R2,[R7,#-4] ; assign 10221 2AF4 868C lod R1,[R7,#12] ; risf 10222 2AF6 0084 lod R0,[R1] ; risf 10223 2AF8 818C lod R1,[R7,#2] ; risf 10224 ; force VR0 to 0 ; call 10225 ; force VR1 to 1 ; call 10226 2AFA 67D1 mov r2,r7 ; call 10227 2AFC 1205 sub r2,#10 ; call 10228 2AFE 3CD8541F jsr _read ; call 10229 ; force VR0 to 0 ; res 10230 ; force VR0 to 0 ; loadtod0 10231 2B02 7F8F lod R6,[R7,#-2] ; cr 10232 2B04 808F lod r7,[r7] ; cr 10233 2B06 00F3 ret ; cr 10234 10235 10236 ; Routine fwrite 10237 .align 2 10238 _fwrite .global 10239 2B08 809B str r7,[r2] 10240 2B0A E2D3 mov r7,r2 10241 2B0C 7F9F str R6,[R7,#-2] 10242 2B0E 019C str R0,[R7,#2] 10243 2B10 829C str R1,[R7,#4] 10244 ; ------------------------------------------------- 10245 ; local buf [R7,#2] 10246 ; s 10247 ; local size [R7,#4] 10248 ; s 10249 ; local nitems [R7,#6] 10250 ; s 10251 ; local stream [R7,#8] 10252 ; s 10253 ; } 10254 ; 10255 ; 10256 ; 10257 ; int fwrite(char *buf, int size, int nitems, struct stdio *stream) 10258 ; 10259 ; { 10260 ; 10261 ; fflush (stream); 10262 ; 10263 2B12 048C lod R0,[R7,#8] ; risf 10264 ; force VR0 to 0 ; call 10265 2B14 67D1 mov r2,r7 ; call 10266 2B16 1005 sub r2,#8 ; call 10267 2B18 3CD88E2B jsr _fflush ; call 10268 ; force VR0 to 0 ; res 10269 ; return write(stream->sysfd, buf, size * nitems); 10270 ; 10271 2B1C 038C lod R0,[R7,#6] ; risf 10272 2B1E 828C lod R1,[R7,#4] ; risf 10273 2B20 6001 lod R2,#0 ; LM 10274 br165 ; anon 10275 2B22 2800 cmp R0,#0 ; gfv 10276 2B24 00D8362B beq br166 ; anon 10277 2B28 6900 tst R0,#1 ; anon 10278 2B2A 00D8302B beq br167 ; anon 10279 2B2E 09D1 add R2,R1 ; anon 10280 br167 ; anon 10281 2B30 5900 lsr R0,#1 ; anon 10282 2B32 C900 lsl R1,#1 ; anon 10283 2B34 F7CA bra br165 ; anon 10284 br166 ; anon 10285 2B36 7E9D str R2,[R7,#-4] ; assign 10286 2B38 868C lod R1,[R7,#12] ; risf 10287 2B3A 0084 lod R0,[R1] ; risf 10288 2B3C 818C lod R1,[R7,#2] ; risf 10289 ; force VR0 to 0 ; call 10290 ; force VR1 to 1 ; call 10291 2B3E 67D1 mov r2,r7 ; call 10292 2B40 1205 sub r2,#10 ; call 10293 2B42 3CD8C41F jsr _write ; call 10294 ; force VR0 to 0 ; res 10295 ; force VR0 to 0 ; loadtod0 10296 2B46 7F8F lod R6,[R7,#-2] ; cr 10297 2B48 808F lod r7,[r7] ; cr 10298 2B4A 00F3 ret ; cr 10299 10300 10301 ; Routine fclose 10302 .align 2 10303 _fclose .global 10304 2B4C 809B str r7,[r2] 10305 2B4E E2D3 mov r7,r2 10306 2B50 7F9F str R6,[R7,#-2] 10307 2B52 019C str R0,[R7,#2] 10308 ; ------------------------------------------------- 10309 ; local f [R7,#2] 10310 ; s 10311 ; } 10312 ; 10313 ; 10314 ; 10315 ; 10316 ; 10317 ; int fclose(struct stdio * f) 10318 ; 10319 ; { 10320 ; 10321 ; fflush (f); 10322 ; 10323 2B54 018C lod R0,[R7,#2] ; risf 10324 ; force VR0 to 0 ; call 10325 2B56 67D1 mov r2,r7 ; call 10326 2B58 1005 sub r2,#8 ; call 10327 2B5A 3CD88E2B jsr _fflush ; call 10328 ; force VR0 to 0 ; res 10329 2B5E 7F8F lod R6,[R7,#-2] ; cr 10330 2B60 808F lod r7,[r7] ; cr 10331 2B62 00F3 ret ; cr 10332 10333 10334 ; Routine exit 10335 .align 2 10336 _exit .global 10337 2B64 809B str r7,[r2] 10338 2B66 E2D3 mov r7,r2 10339 2B68 7F9F str R6,[R7,#-2] 10340 2B6A 019C str R0,[R7,#2] 10341 ; ------------------------------------------------- 10342 ; local c [R7,#2] 10343 ; s 10344 ; } 10345 ; 10346 ; } 10347 ; 10348 ; 10349 ; 10350 ; void exit(c) 10351 ; 10352 ; { 10353 ; 10354 ; fflush (stderr); 10355 ; 10356 2B6C 00D44ADF lod R0,_stderr ; ris 10357 ; force VR0 to 0 ; call 10358 2B70 67D1 mov r2,r7 ; call 10359 2B72 1005 sub r2,#8 ; call 10360 2B74 3CD88E2B jsr _fflush ; call 10361 ; force VR0 to 0 ; res 10362 ; fflush (stdout); 10363 ; 10364 2B78 00D448DF lod R0,_stdout ; ris 10365 ; force VR0 to 0 ; call 10366 2B7C 67D1 mov r2,r7 ; call 10367 2B7E 1005 sub r2,#8 ; call 10368 2B80 3CD88E2B jsr _fflush ; call 10369 ; force VR0 to 0 ; res 10370 ; while (1) continue; 10371 ; 10372 br168 ; anon 10373 2B84 00CA bra br168 ; anon 10374 2B86 FFCA bra br168 ; anon 10375 br169 ; anon 10376 2B88 7F8F lod R6,[R7,#-2] ; cr 10377 2B8A 808F lod r7,[r7] ; cr 10378 2B8C 00F3 ret ; cr 10379 10380 10381 ; Routine fflush 10382 .align 2 10383 _fflush .global 10384 2B8E 809B str r7,[r2] 10385 2B90 E2D3 mov r7,r2 10386 2B92 7F9F str R6,[R7,#-2] 10387 2B94 019C str R0,[R7,#2] 10388 ; ------------------------------------------------- 10389 ; local f [R7,#2] 10390 ; s 10391 ; } 10392 ; 10393 ; 10394 ; 10395 ; 10396 ; 10397 ; fflush(struct stdio *f) 10398 ; 10399 ; { 10400 ; 10401 ; if (f && f->mode == 'w') 10402 ; 10403 2B96 018C lod R0,[R7,#2] ; risf 10404 2B98 2800 cmp R0,#0 ; gfv 10405 2B9A 00D8C82B beq br170 ; fjmp1 ; cfj 10406 2B9E 058C lod R0,[R7,#10] ; risf 10407 2BA0 8080 lod R1,[R0] ; risf 10408 2BA2 AF38 cmp R1,#119 ; alu_i 10409 2BA4 04D8C82B bne br170 ; fjump F ; cfj 10410 ; { 10411 ; 10412 ; write(f->sysfd, f->data, f->bytes); 10413 ; 10414 2BA8 078C lod R0,[R7,#14] ; risf 10415 2BAA 8080 lod R1,[R0] ; risf 10416 2BAC FE9C str R1,[R7,#-4] ; assign 10417 2BAE 838C lod R1,[R7,#6] ; risf 10418 2BB0 0084 lod R0,[R1] ; risf 10419 2BB2 8F8C lod R1,[R7,#30] ; risf 10420 ; force VR0 to 0 ; call 10421 ; force VR1 to 1 ; call 10422 2BB4 67D1 mov r2,r7 ; call 10423 2BB6 1205 sub r2,#10 ; call 10424 2BB8 3CD8C41F jsr _write ; call 10425 ; force VR0 to 0 ; res 10426 ; f->bytes = 0; 10427 ; 10428 2BBC E000 lod R1,#0 ; lti 10429 2BBE 078C lod R0,[R7,#14] ; risf 10430 2BC0 8090 str R1,[R0] ; assign 10431 ; f->poi = f->data; 10432 ; 10433 2BC2 8F8C lod R1,[R7,#30] ; risf 10434 2BC4 098C lod R0,[R7,#18] ; risf 10435 2BC6 8090 str R1,[R0] ; assign 10436 br170 ; anon 10437 2BC8 7F8F lod R6,[R7,#-2] ; cr 10438 2BCA 808F lod r7,[r7] ; cr 10439 2BCC 00F3 ret ; cr 10440 10441 10442 ; Routine putchar 10443 .align 2 10444 _putchar .global 10445 2BCE 809B str r7,[r2] 10446 2BD0 E2D3 mov r7,r2 10447 2BD2 7F9F str R6,[R7,#-2] 10448 2BD4 019C str R0,[R7,#2] 10449 ; ------------------------------------------------- 10450 ; local c [R7,#2] 10451 ; s 10452 ; } 10453 ; 10454 ; 10455 ; 10456 ; void putchar(char c) 10457 ; 10458 ; { 10459 ; 10460 ; _sa_wrch(c); 10461 ; 10462 2BD6 01AC lodb R0,[R7,#2] ; risf 10463 ; force VR0 to 0 ; call 10464 2BD8 67D1 mov r2,r7 ; call 10465 2BDA 1005 sub r2,#8 ; call 10466 2BDC 3CD80C00 jsr __sa_wrch ; call 10467 ; force VR0 to 0 ; res 10468 2BE0 7F8F lod R6,[R7,#-2] ; cr 10469 2BE2 808F lod r7,[r7] ; cr 10470 2BE4 00F3 ret ; cr 10471 10472 10473 ; Routine putc 10474 .align 2 10475 _putc .global 10476 2BE6 809B str r7,[r2] 10477 2BE8 E2D3 mov r7,r2 10478 2BEA 7F9F str R6,[R7,#-2] 10479 2BEC 019C str R0,[R7,#2] 10480 2BEE 829C str R1,[R7,#4] 10481 ; ------------------------------------------------- 10482 ; local c [R7,#2] 10483 ; s 10484 ; local f [R7,#4] 10485 ; s 10486 ; } 10487 ; 10488 ; 10489 ; 10490 ; void putc(char c, struct stdio *f) 10491 ; 10492 ; { 10493 ; 10494 ; while (f->bytes == 32 ) fflush (f); 10495 ; 10496 br171 ; anon 10497 2BF0 088C lod R0,[R7,#16] ; risf 10498 2BF2 8080 lod R1,[R0] ; risf 10499 2BF4 A810 cmp R1,#32 ; alu_i 10500 2BF6 04D8062C bne br172 ; fjump F ; cfj 10501 2BFA 028C lod R0,[R7,#4] ; risf 10502 ; force VR0 to 0 ; call 10503 2BFC 67D1 mov r2,r7 ; call 10504 2BFE 1005 sub r2,#8 ; call 10505 2C00 3CD88E2B jsr _fflush ; call 10506 ; force VR0 to 0 ; res 10507 2C04 F6CA bra br171 ; anon 10508 br172 ; anon 10509 ; *(f->poi)++ = c; 10510 ; 10511 2C06 0A8C lod R0,[R7,#20] ; risf 10512 2C08 8080 lod R1,[R0] ; risf 10513 2C0A 61D1 mov R2,R1 ; qasp1 10514 2C0C 0901 add R2,#1 ; qasp 10515 2C0E 0091 str R2,[R0] ; qasp 10516 2C10 01AC lodb R0,[R7,#2] ; risf 10517 2C12 00B4 strb R0,[R1] ; assign 10518 ; f->bytes ++; 10519 ; 10520 2C14 088C lod R0,[R7,#16] ; risf 10521 2C16 8080 lod R1,[R0] ; risf 10522 2C18 8900 add R1,#1 ; qas 10523 2C1A 8090 str R1,[R0] ; qasmi 10524 ; if (c == '\n') fflush (f); 10525 ; 10526 2C1C 01AC lodb R0,[R7,#2] ; risf 10527 2C1E 2A04 cmp R0,#10 ; alu_i 10528 2C20 04D82E2C bne br173 ; fjump F ; cfj 10529 2C24 028C lod R0,[R7,#4] ; risf 10530 ; force VR0 to 0 ; call 10531 2C26 67D1 mov r2,r7 ; call 10532 2C28 1005 sub r2,#8 ; call 10533 2C2A 3CD88E2B jsr _fflush ; call 10534 ; force VR0 to 0 ; res 10535 br173 ; anon 10536 2C2E 7F8F lod R6,[R7,#-2] ; cr 10537 2C30 808F lod r7,[r7] ; cr 10538 2C32 00F3 ret ; cr 10539 10540 10541 ; Routine getc 10542 .align 2 10543 _getc .global 10544 2C34 809B str r7,[r2] 10545 2C36 E2D3 mov r7,r2 10546 2C38 7F9F str R6,[R7,#-2] 10547 2C3A 019C str R0,[R7,#2] 10548 ; ------------------------------------------------- 10549 ; local f [R7,#2] 10550 ; s 10551 ; } 10552 ; 10553 ; 10554 ; 10555 ; 10556 ; 10557 ; 10558 ; 10559 ; 10560 ; 10561 ; 10562 ; 10563 ; char getc(struct stdio *f) 10564 ; 10565 ; { 10566 ; 10567 ; if (f->bytes == 0) 10568 ; 10569 2C3C 078C lod R0,[R7,#14] ; risf 10570 2C3E 8080 lod R1,[R0] ; risf 10571 2C40 A800 cmp R1,#0 ; gfv 10572 2C42 04D8922C bne br174 ; fjump F ; cfj 10573 ; { 10574 ; 10575 ; local b [R7,#-4] 10576 ; s 10577 ; int b; 10578 ; 10579 ; if (f->flags) return -1 ; 10580 ; 10581 2C46 018C lod R0,[R7,#2] ; risf 10582 2C48 8080 lod R1,[R0] ; risf 10583 2C4A A800 cmp R1,#0 ; gfv 10584 2C4C 00D85A2C beq br175 ; fjmp1 ; cfj 10585 2C50 00F4FFFF lod R0,#-1 ; lti 10586 ; force VR0 to 0 ; loadtod0 10587 2C54 7F8F lod R6,[R7,#-2] ; cr 10588 2C56 808F lod r7,[r7] ; cr 10589 2C58 00F3 ret ; cr 10590 br175 ; anon 10591 ; b = read(f->sysfd, f->data, 32 ); 10592 ; 10593 2C5A 6010 lod R0,#32 ; lti 10594 2C5C 7D9C str R0,[R7,#-6] ; assign 10595 2C5E 838C lod R1,[R7,#6] ; risf 10596 2C60 0084 lod R0,[R1] ; risf 10597 2C62 8F8C lod R1,[R7,#30] ; risf 10598 ; force VR0 to 0 ; call 10599 ; force VR1 to 1 ; call 10600 2C64 67D1 mov r2,r7 ; call 10601 2C66 1405 sub r2,#12 ; call 10602 2C68 3CD8541F jsr _read ; call 10603 ; force VR0 to 0 ; res 10604 2C6C 7E9C str R0,[R7,#-4] ; assign 10605 ; if (b == 0) 10606 ; 10607 2C6E 7E8C lod R0,[R7,#-4] ; risf 10608 2C70 2800 cmp R0,#0 ; gfv 10609 2C72 04D8862C bne br176 ; fjump F ; cfj 10610 ; { 10611 ; 10612 ; f->flags = 1; 10613 ; 10614 2C76 E100 lod R1,#1 ; lti 10615 2C78 018C lod R0,[R7,#2] ; risf 10616 2C7A 8090 str R1,[R0] ; assign 10617 ; return -1 ; 10618 ; 10619 2C7C 00F4FFFF lod R0,#-1 ; lti 10620 ; force VR0 to 0 ; loadtod0 10621 2C80 7F8F lod R6,[R7,#-2] ; cr 10622 2C82 808F lod r7,[r7] ; cr 10623 2C84 00F3 ret ; cr 10624 br176 ; anon 10625 ; } 10626 ; 10627 ; f->bytes = b; 10628 ; 10629 2C86 FE8C lod R1,[R7,#-4] ; risf 10630 2C88 078C lod R0,[R7,#14] ; risf 10631 2C8A 8090 str R1,[R0] ; assign 10632 ; f->poi = f->data; 10633 ; 10634 2C8C 8F8C lod R1,[R7,#30] ; risf 10635 2C8E 098C lod R0,[R7,#18] ; risf 10636 2C90 8090 str R1,[R0] ; assign 10637 br174 ; anon 10638 ; } 10639 ; 10640 ; f->bytes --; 10641 ; 10642 2C92 078C lod R0,[R7,#14] ; risf 10643 2C94 8080 lod R1,[R0] ; risf 10644 2C96 9100 sub R1,#1 ; qas 10645 2C98 8090 str R1,[R0] ; qasmi 10646 ; return *(f->poi)++; 10647 ; 10648 2C9A 098C lod R0,[R7,#18] ; risf 10649 2C9C 8080 lod R1,[R0] ; risf 10650 2C9E 61D1 mov R2,R1 ; qasp1 10651 2CA0 0901 add R2,#1 ; qasp 10652 2CA2 0091 str R2,[R0] ; qasp 10653 2CA4 00A4 lodb R0,[R1] ; risf 10654 ; force VR0 to 0 ; loadtod0 10655 2CA6 7F8F lod R6,[R7,#-2] ; cr 10656 2CA8 808F lod r7,[r7] ; cr 10657 2CAA 00F3 ret ; cr 10658 10659 10660 ; Routine fgets 10661 .align 2 10662 _fgets .global 10663 2CAC 809B str r7,[r2] 10664 2CAE E2D3 mov r7,r2 10665 2CB0 7F9F str R6,[R7,#-2] 10666 2CB2 019C str R0,[R7,#2] 10667 2CB4 829C str R1,[R7,#4] 10668 ; ------------------------------------------------- 10669 ; local buf [R7,#2] 10670 ; s 10671 ; local maxn [R7,#4] 10672 ; s 10673 ; local f [R7,#6] 10674 ; s 10675 ; local p [R7,#-4] 10676 ; s 10677 2CB6 018C lod R0,[R7,#2] ; risf 10678 2CB8 7E9C str R0,[R7,#-4] ; assign 10679 ; } 10680 ; 10681 ; 10682 ; 10683 ; 10684 ; 10685 ; 10686 ; 10687 ; char *fgets(char *buf, int maxn, struct stdio *f) 10688 ; 10689 ; { 10690 ; 10691 ; char *p = buf; 10692 ; 10693 ; if (f->flags & 1) 10694 ; 10695 2CBA 038C lod R0,[R7,#6] ; risf 10696 2CBC 8080 lod R1,[R0] ; risf 10697 2CBE B900 and R1,#1 ; alu_i 10698 2CC0 00D8D22C beq br177 ; fjmp1 ; cfj 10699 ; { 10700 ; 10701 ; *p = (char) 0; 10702 ; 10703 2CC4 E000 lod R1,#0 ; lti 10704 2CC6 7E8C lod R0,[R7,#-4] ; risf 10705 2CC8 80B0 strb R1,[R0] ; assign 10706 ; return (char *) 0 ; 10707 ; 10708 2CCA 6000 lod R0,#0 ; lti 10709 ; force VR0 to 0 ; loadtod0 10710 2CCC 7F8F lod R6,[R7,#-2] ; cr 10711 2CCE 808F lod r7,[r7] ; cr 10712 2CD0 00F3 ret ; cr 10713 br177 ; anon 10714 ; } 10715 ; 10716 ; 10717 ; 10718 ; maxn--; 10719 ; 10720 2CD2 028C lod R0,[R7,#4] ; risf 10721 2CD4 1100 sub R0,#1 ; qas 10722 2CD6 029C str R0,[R7,#4] ; qasmi 10723 ; while(maxn>0) 10724 ; 10725 br178 ; anon 10726 2CD8 028C lod R0,[R7,#4] ; risf 10727 2CDA 2800 cmp R0,#0 ; gfv 10728 2CDC 14D8AC2D ble br179 ; fjump F ; cfj 10729 ; { 10730 ; 10731 ; local sn [R7,#-6] 10732 ; s 10733 2CE0 098C lod R0,[R7,#18] ; risf 10734 2CE2 8080 lod R1,[R0] ; risf 10735 2CE4 FD9C str R1,[R7,#-6] ; assign 10736 ; local c [R7,#-8] 10737 ; s 10738 2CE6 6000 lod R0,#0 ; lti 10739 2CE8 7CBC strb R0,[R7,#-8] ; assign 10740 ; local n [R7,#-10] 10741 ; s 10742 ; local d [R7,#-12] 10743 ; s 10744 ; int sn = f->bytes; 10745 ; 10746 ; char c = 0; 10747 ; 10748 ; int n, d; 10749 ; 10750 ; if (sn > maxn) sn = maxn; 10751 ; 10752 2CEA 7D8C lod R0,[R7,#-6] ; risf 10753 2CEC 828C lod R1,[R7,#4] ; risf 10754 2CEE 29D0 cmp R0,R1 ; alu-l 10755 2CF0 14D8F82C ble br180 ; fjump F ; cfj 10756 2CF4 028C lod R0,[R7,#4] ; risf 10757 2CF6 7D9C str R0,[R7,#-6] ; assign 10758 br180 ; anon 10759 ; n = sn; 10760 ; 10761 2CF8 7D8C lod R0,[R7,#-6] ; risf 10762 2CFA 7B9C str R0,[R7,#-10] ; assign 10763 ; while(n > 0) 10764 ; 10765 br181 ; anon 10766 2CFC 7B8C lod R0,[R7,#-10] ; risf 10767 2CFE 2800 cmp R0,#0 ; gfv 10768 2D00 14D8322D ble br182 ; fjump F ; cfj 10769 ; { 10770 ; 10771 ; c = *(f->poi)++; 10772 ; 10773 2D04 0B8C lod R0,[R7,#22] ; risf 10774 2D06 8080 lod R1,[R0] ; risf 10775 2D08 61D1 mov R2,R1 ; qasp1 10776 2D0A 0901 add R2,#1 ; qasp 10777 2D0C 0091 str R2,[R0] ; qasp 10778 2D0E 00A4 lodb R0,[R1] ; risf 10779 2D10 7CBC strb R0,[R7,#-8] ; assign 10780 ; *p++ = c; 10781 ; 10782 2D12 7E8C lod R0,[R7,#-4] ; risf 10783 2D14 E0D0 mov R1,R0 ; qasp1 10784 2D16 8900 add R1,#1 ; qasp 10785 2D18 FE9C str R1,[R7,#-4] ; qasp 10786 2D1A FCAC lodb R1,[R7,#-8] ; risf 10787 2D1C 80B0 strb R1,[R0] ; assign 10788 ; n--; 10789 ; 10790 2D1E 7B8C lod R0,[R7,#-10] ; risf 10791 2D20 1100 sub R0,#1 ; qas 10792 2D22 7B9C str R0,[R7,#-10] ; qasmi 10793 ; if (c == '\n') break; 10794 ; 10795 2D24 7CAC lodb R0,[R7,#-8] ; risf 10796 2D26 2A04 cmp R0,#10 ; alu_i 10797 2D28 04D8302D bne br183 ; fjump F ; cfj 10798 2D2C 28D8322D bra br182 ; anon 10799 br183 ; anon 10800 2D30 E6CA bra br181 ; anon 10801 br182 ; anon 10802 ; } 10803 ; 10804 ; d = sn - n; 10805 ; 10806 2D32 7D8C lod R0,[R7,#-6] ; risf 10807 2D34 FB8C lod R1,[R7,#-10] ; risf 10808 2D36 11D0 sub R0,R1 ; alu-l 10809 2D38 7A9C str R0,[R7,#-12] ; assign 10810 ; f->bytes -= d; 10811 ; 10812 2D3A 098C lod R0,[R7,#18] ; risf 10813 2D3C 8080 lod R1,[R0] ; risf 10814 2D3E 7A8C lod R0,[R7,#-12] ; risf 10815 2D40 90D0 sub R1,R0 ; alu-l 10816 2D42 098C lod R0,[R7,#18] ; risf 10817 2D44 8090 str R1,[R0] ; assign 10818 ; maxn -= d; 10819 ; 10820 2D46 028C lod R0,[R7,#4] ; risf 10821 2D48 FA8C lod R1,[R7,#-12] ; risf 10822 2D4A 11D0 sub R0,R1 ; alu-l 10823 2D4C 029C str R0,[R7,#4] ; assign 10824 ; if (c == '\n') break; 10825 ; 10826 2D4E 7CAC lodb R0,[R7,#-8] ; risf 10827 2D50 2A04 cmp R0,#10 ; alu_i 10828 2D52 04D85A2D bne br184 ; fjump F ; cfj 10829 2D56 28D8AC2D bra br179 ; anon 10830 br184 ; anon 10831 ; if (f->bytes == 0 && f->flags == 0) 10832 ; 10833 2D5A 098C lod R0,[R7,#18] ; risf 10834 2D5C 8080 lod R1,[R0] ; risf 10835 2D5E A800 cmp R1,#0 ; gfv 10836 2D60 04D89C2D bne br185 ; fjump F ; cfj 10837 2D64 038C lod R0,[R7,#6] ; risf 10838 2D66 8080 lod R1,[R0] ; risf 10839 2D68 A800 cmp R1,#0 ; gfv 10840 2D6A 04D89C2D bne br185 ; fjump F ; cfj 10841 ; { 10842 ; 10843 ; local b [R7,#-14] 10844 ; s 10845 ; int b; 10846 ; 10847 ; b = read(f->sysfd, f->data, 32 ); 10848 ; 10849 2D6E 6010 lod R0,#32 ; lti 10850 2D70 789C str R0,[R7,#-16] ; assign 10851 2D72 858C lod R1,[R7,#10] ; risf 10852 2D74 0084 lod R0,[R1] ; risf 10853 2D76 918C lod R1,[R7,#34] ; risf 10854 ; force VR0 to 0 ; call 10855 ; force VR1 to 1 ; call 10856 2D78 67D1 mov r2,r7 ; call 10857 2D7A 1609 sub r2,#22 ; call 10858 2D7C 3CD8541F jsr _read ; call 10859 ; force VR0 to 0 ; res 10860 2D80 799C str R0,[R7,#-14] ; assign 10861 ; if (b == 0) 10862 ; 10863 2D82 798C lod R0,[R7,#-14] ; risf 10864 2D84 2800 cmp R0,#0 ; gfv 10865 2D86 04D8902D bne br186 ; fjump F ; cfj 10866 ; { 10867 ; 10868 ; f->flags = 1; 10869 ; 10870 2D8A E100 lod R1,#1 ; lti 10871 2D8C 038C lod R0,[R7,#6] ; risf 10872 2D8E 8090 str R1,[R0] ; assign 10873 br186 ; anon 10874 ; } 10875 ; 10876 ; f->bytes = b; 10877 ; 10878 2D90 F98C lod R1,[R7,#-14] ; risf 10879 2D92 098C lod R0,[R7,#18] ; risf 10880 2D94 8090 str R1,[R0] ; assign 10881 ; f->poi = f->data; 10882 ; 10883 2D96 918C lod R1,[R7,#34] ; risf 10884 2D98 0B8C lod R0,[R7,#22] ; risf 10885 2D9A 8090 str R1,[R0] ; assign 10886 br185 ; anon 10887 ; } 10888 ; 10889 ; if (f->flags & 1) break; 10890 ; 10891 2D9C 038C lod R0,[R7,#6] ; risf 10892 2D9E 8080 lod R1,[R0] ; risf 10893 2DA0 B900 and R1,#1 ; alu_i 10894 2DA2 00D8AA2D beq br187 ; fjmp1 ; cfj 10895 2DA6 28D8AC2D bra br179 ; anon 10896 br187 ; anon 10897 2DAA 97CA bra br178 ; anon 10898 br179 ; anon 10899 ; } 10900 ; 10901 ; *p = (char) 0; 10902 ; 10903 2DAC E000 lod R1,#0 ; lti 10904 2DAE 7E8C lod R0,[R7,#-4] ; risf 10905 2DB0 80B0 strb R1,[R0] ; assign 10906 ; return buf; 10907 ; 10908 2DB2 018C lod R0,[R7,#2] ; risf 10909 ; force VR0 to 0 ; loadtod0 10910 2DB4 7F8F lod R6,[R7,#-2] ; cr 10911 2DB6 808F lod r7,[r7] ; cr 10912 2DB8 00F3 ret ; cr 10913 10914 10915 ; Routine _crt0 10916 .align 2 10917 __crt0 .global 10918 2DBA 809B str r7,[r2] 10919 2DBC E2D3 mov r7,r2 10920 2DBE 7F9F str R6,[R7,#-2] 10921 ; ------------------------------------------------- 10922 ; 10923 ; 10924 ; 10925 ; 10926 ; 10927 ; 10928 ; 10929 ; 10930 ; 10931 ; 10932 ; 10933 ; 10934 ; 10935 ; 10936 ; 10937 ; 10938 ; 10939 ; 10940 ; 10941 ; 10942 ; 10943 ; 10944 ; 10945 ; 10946 ; 10947 ; 10948 ; 10949 ; 10950 ; 10951 ; 10952 ; 10953 ; 10954 ; 10955 ; 10956 ; 10957 ; 10958 ; 10959 ; 10960 ; 10961 ; 10962 ; 10963 ; 10964 ; 10965 ; 10966 ; 10967 ; 10968 ; 10969 ; 10970 ; typedef unsigned char uchar; 10971 ; 10972 ; 10973 ; 10974 ; 10975 ; 10976 ; 10977 ; 10978 ; 10979 ; 10980 ; 10981 ; 10982 ; typedef struct stdio 10983 ; 10984 ; { 10985 ; 10986 ; int flags; 10987 ; 10988 ; int sysfd; 10989 ; 10990 ; int mode; 10991 ; 10992 ; int bytes; 10993 ; 10994 ; char *poi; 10995 ; 10996 ; int error; 10997 ; 10998 ; int index; 10999 ; 11000 ; char data[32 ]; 11001 ; 11002 ; } STDIO; 11003 ; 11004 ; 11005 ; 11006 ; 11007 ; 11008 ; extern int open(char *, int); 11009 ; 11010 ; extern int close(char *, int); 11011 ; 11012 ; extern int main(int, char **); 11013 ; 11014 ; extern void _sa_wrch(char); 11015 ; 11016 ; extern char _sa_rdch(); 11017 ; 11018 ; 11019 ; 11020 ; extern char getchar(); 11021 ; 11022 ; extern void putchar(char); 11023 ; 11024 ; extern char toupper(char); 11025 ; 11026 ; extern char tolower(char); 11027 ; 11028 ; extern int strlen(const char *); 11029 ; 11030 ; extern int strcmp(const char *, const char *); 11031 ; 11032 ; extern int strncmp(char *, char *, int); 11033 ; 11034 ; extern int console_flags; 11035 ; 11036 ; extern void exit(int); 11037 ; 11038 ; extern char *malloc(int); 11039 ; 11040 ; extern int _exit(int); 11041 ; 11042 ; extern int strlen(char *); 11043 ; 11044 ; extern int isdigit(char); 11045 ; 11046 ; extern int atoi(char *); 11047 ; 11048 ; extern int checkend(); 11049 ; 11050 ; extern char *strncpy(char *, char *, int); 11051 ; 11052 ; extern void flush_dtoi(); 11053 ; 11054 ; extern void printf(); 11055 ; 11056 ; 11057 ; 11058 ; 11059 ; 11060 ; 11061 ; 11062 ; 11063 ; 11064 ; 11065 ; 11066 ; 11067 ; 11068 ; struct stdio *fopen(); 11069 ; 11070 ; struct stdio *stdin; 11071 ; 11072 ; struct stdio *stdout; 11073 ; 11074 ; struct stdio *stderr; 11075 ; 11076 ; void prstring(char *s, int prefield, int field); 11077 ; 11078 ; void printu(int x); 11079 ; 11080 ; void shi(unsigned int *p, int d); 11081 ; 11082 ; void printx(unsigned int x, int field); 11083 ; 11084 ; 11085 ; 11086 ; int errno; 11087 ; 11088 ; int deb; 11089 ; 11090 ; uchar *kmalloc_poi; 11091 ; 11092 ; 11093 ; 11094 ; static char *spf; 11095 ; 11096 ; static char _spfbuf[1024]; 11097 ; 11098 ; 11099 ; 11100 ; 11101 ; 11102 ; int _crt0() 11103 ; 11104 ; { 11105 ; 11106 ; kmalloc_poi = (char *) 0xE000 ; 11107 ; 11108 2DC0 00F400E0 lod R0,#57344 ; lti 11109 2DC4 20D450DF str R0,_kmalloc_poi ; assign 11110 ; errno = 0; 11111 ; 11112 2DC8 6000 lod R0,#0 ; lti 11113 2DCA 20D44CDF str R0,_errno ; assign 11114 ; stdin = 0 ; 11115 ; 11116 2DCE 6000 lod R0,#0 ; lti 11117 2DD0 20D446DF str R0,_stdin ; assign 11118 ; stdout = 0 ; 11119 ; 11120 2DD4 6000 lod R0,#0 ; lti 11121 2DD6 20D448DF str R0,_stdout ; assign 11122 ; stderr = 0 ; 11123 ; 11124 2DDA 6000 lod R0,#0 ; lti 11125 2DDC 20D44ADF str R0,_stderr ; assign 11126 ; return main(0, 0); 11127 ; 11128 2DE0 6000 lod R0,#0 ; lti 11129 2DE2 E000 lod R1,#0 ; lti 11130 ; force VR0 to 0 ; call 11131 ; force VR1 to 1 ; call 11132 2DE4 67D1 mov r2,r7 ; call 11133 2DE6 1005 sub r2,#8 ; call 11134 2DE8 3CD83600 jsr _main ; call 11135 ; force VR0 to 0 ; res 11136 ; force VR0 to 0 ; loadtod0 11137 2DEC 7F8F lod R6,[R7,#-2] ; cr 11138 2DEE 808F lod r7,[r7] ; cr 11139 2DF0 00F3 ret ; cr 11140 2DF2 00F3 ret ; cr ERRORS = 0, SRC CARDS READ = 10031