| ID | 32086 |
|---|---|
| Title | MICRO BUG |
| Machine | ZX81 16K |
| Language | Portuguese |
| Genre | Utility: undetermined |
| Max Players | 1 |
| Available Type | A |
| Without Load Screen | No |
| Without Inlay | No |
| Type | Link | Size | MD5 | Flags | Details | Comments |
|---|---|---|---|---|---|---|
| Remote link | http://zx81.eu5.org/microbug_e.htm | - | - | None | ||
| Tape image | /zxdb/sinclair/entries/0032086/MICROBUG.p.zip | 2,132 | 81ade0d14b5ed3811432dea6d062f3b2 | None | ||
| Opening screen | /zxdb/sinclair/entries/0032086/MICROBUG-OPEN-1.scr | 6,912 | d503960b5feaa5bd36fefeceb6add481 | None | ||
| Instructions | /zxdb/sinclair/entries/0032086/MICROBUG.txt | 18,732 | 4408e52eb40f2bab336ae1f9b0dc9475 | None | ||
| Running screen | /zxdb/sinclair/entries/0032086/MICROBUG-RUN-1.scr | 6,912 | c703f1c51343aa4f758ab62007c385fc | None | ||
| Source code | /zxdb/sinclair/entries/0032086/MICROBUG_SourceCode.zip | 8,249 | b5ed910ddd1713967273c14fad3db558 | None | ||
| BUGFIX tape image | /zxdb/sinclair/entries/0032086/MICROBUG(BUGFIX).p.zip | 2,157 | 57ee42dcabae3b0d85e7f393fd6ca129 | None | BUGFIX file by Einar Saukas |
| Release # | Year | Downloads |
|---|---|---|
| #0 | - | 7 |
| Type | Title | Publication | Issue | Date |
|---|---|---|---|---|
| type-in from magazine issue | MICRO BUG | Micro Sistemas - type-in from magazine issue #31 - 1984/Apr | 1984/04 |
| Direction | Type | Entry |
|---|---|---|
| To | Available add-on(s) | DELETE GGMI |
| To | Available add-on(s) | DEPURA ERROS |
| To | Available add-on(s) | DEPURADOR FHL |
| To | Available add-on(s) | DISASSEMBLER |
| To | Available add-on(s) | ED-ART GGMI |
| To | Available add-on(s) | LIST |
| To | Available add-on(s) | RENUMERADOR GGMI |
| To | Available add-on(s) | TRACE |
| To | Available add-on(s) | MICRO BUG EXTRA |
| Tag | Type | Category | Member Seq | Links |
|---|---|---|---|---|
| Freeware (free but copyrighted) | Copyright Status | - |
| Type | Text |
|---|---|
| Known Errors | Bugfix provided by Einar Saukas: <UL><LI> Typing command N immediately followed by DELETE or NEW LINE will either corrupt screen or abort to BASIC, respectively. This problem is caused by printing the next input key without checking if it's printable. This is the original code: <PRE> 7D9E 2A 0E 40 LD HL,(400E) ; get PRINT AT position 7DA1 36 04 LD (HL),04 ; show cursor 7DA3 CD D3 78 CALL 78D3 ; read input key 7DA6 D7 RST 10 ; print key (even if not printable!) 7DA7 CD AA 78 CALL 78AA ; wait for key release 7DAA F5 PUSH AF ; save key 7DAB AF XOR A 7DAC D7 RST 10 ; print space 7DAD CD 52 7A CALL 7A52 ; read string 7DB0 B7 OR A 7DB1 CA 4A 7A JP Z,7A4A ; exit to main menu if empty string 7DB4 01 04 15 LD BC,1504 7DB7 CD A1 7A CALL 7AA1 ; parse numeric value 7DBA F1 POP AF ; restore key 7DBB EB EX DE,HL ; load numeric value into HL 7DBC FE 26 CP 26 ; key 'A'? 7DBE 20 03 JR NZ,7DC3 7DC0 22 36 79 LD (7936),HL ; update register pair AF 7DC3 FE 2D CP 2D ; key 'H'? 7DC5 20 03 JR NZ,7DCA 7DC7 22 38 79 LD (7938),HL ; update register pair HL 7DCA FE 29 CP 29 ; key 'D'? 7DCC 20 03 JR NZ,7DD1 7DCE 22 3A 79 LD (793A),HL ; update register pair DE 7DD1 FE 27 CP 27 ; key 'B'? 7DD3 20 03 JR NZ,7DD8 7DD5 22 3C 79 LD (793C),HL ; update register pair BC 7DD8 FE 33 CP 33 ; key 'N'? 7DDA 20 0C JR NZ,7DE8 7DDC 22 36 79 LD (7936),HL ; update register pair AF 7DDF 22 38 79 LD (7938),HL ; update register pair HL 7DE2 22 3A 79 LD (793A),HL ; update register pair DE 7DE5 22 3C 79 LD (793C),HL ; update register pair BC </PRE> To fix it, move the main part of this routine using command "O 7DAA,7DD3,7DAD" then use command "M" to make these changes: POKE 32166,203: POKE 32167,119: POKE 32168,40: POKE 32169,2: POKE 32170,62: POKE 32171,15: POKE 32177,153: POKE 32214,40: POKE 32215,13. It will produce this result: <PRE> 7D9E 2A 0E 40 LD HL,(400E) ; get PRINT AT position 7DA1 36 04 LD (HL),04 ; show cursor 7DA3 CD D3 78 CALL 78D3 ; read input key 7DA6 CB 77 BIT 6,A ; ** printable key? 7DA8 28 02 JR Z,7DAC ; ** if so, skip next instruction 7DAA 3E 0F LD A,0F ; ** otherwise replace key with '?' 7DAC D7 RST 10 ; print key 7DAD F5 PUSH AF ; save key 7DAE AF XOR A 7DAF D7 RST 10 ; print space 7DB0 CD 99 7A CALL 7A99 ; ** wait for key release, then read string 7DB3 B7 OR A 7DB4 CA 4A 7A JP Z,7A4A ; exit to main menu if empty string 7DB7 01 04 15 LD BC,1504 7DBA CD A1 7A CALL 7AA1 ; parse numeric value 7DBD F1 POP AF ; restore key 7DBE EB EX DE,HL ; load numeric value into HL 7DBF FE 26 CP 26 ; key 'A'? 7DC1 20 03 JR NZ,7DC6 7DC3 22 36 79 LD (7936),HL ; update register pair AF 7DC6 FE 2D CP 2D ; key 'H'? 7DC8 20 03 JR NZ,7DCD 7DCA 22 38 79 LD (7938),HL ; update register pair HL 7DCD FE 29 CP 29 ; key 'D'? 7DCF 20 03 JR NZ,7DD4 7DD1 22 3A 79 LD (793A),HL ; update register pair DE 7DD4 FE 27 CP 27 ; key 'B'? 7DD6 28 0D JR Z,7DE5 ; ** update register pair BC 7DD8 FE 33 CP 33 ; key 'N'? 7DDA 20 0C JR NZ,7DE8 7DDC 22 36 79 LD (7936),HL ; update register pair AF 7DDF 22 38 79 LD (7938),HL ; update register pair HL 7DE2 22 3A 79 LD (793A),HL ; update register pair DE 7DE5 22 3C 79 LD (793C),HL ; update register pair BC </PRE> </UL> |