╔════════════════════════ ═══════════════════ ═══════════════════╗ ║ IS-DOS. ║ ╙─────────────────────────────── ───────────────────────────────╜ To : All From : Jason (500:95/462.18@ZXNet) Cc: to everyone who thinks subj is a drag. Subj: is'dos ─────────────────────── ────────────────────────────────────── Hello, All! After a long and tedious poking around, the Maiden method fix a glitch in the terminal under CDOS modem. Let me remind you that when you try to remove the lower resident level, ven zx_lpro, or when trying to add/remove other drivers ry/residents system Vistula (reset). Try it yourself: launch the terminal, select the speed, and exit back to the shell. Now remove any thread re- resident Whether or not it freezes is a matter of chance. The word “resident” further refers to any of the files: cdos1200.res cdos900.res cdosбO0.res Everything said is equally applicable to any of them. First, a little theory: ──────────────────────── ────────────────────────────────────── A resident task is a program that is explicitly accessed consists oftwo (three) stages: 1. Installation (loading) into memory from disk, setting to address and initialization. 2. Main work 3. Removing a task from memory The 1st and 3rd stages are carried out by the SET.com procedure. She's the same creates an 18-byte channel describing the resident. Structure of a resident task: ┌─────── offset from start │ ┌── length │ │ 0 2 Address of the initialization procedure. She is called upon her moving (A=#FF) or deleting (A=#FE) by the program SET.com. If #0000, then it is not called. This program should connect, if necessary, the resident to the center interrupt bud or to another program, intercept restarts and restore them. 2 2 Main entrance address, i.e. launch procedures by name /exebat(#44), run(#48)/ or by channel number /exe- res(#53)/. If #0000, then it starts from the 4th byte. 4 R Task body (structure is arbitrary). R+4 2 #FFFF - separator R+6 2n custom address table - 1. Offsets from start are calculated using LSA. The unit is subtracted for greater ease - Methods for setting up commands such as: CALL, JP, LD HL, LD A,(nn), the most frequently occurring ones in the program. ──────────────────────── ─────────────────── ──────────────────── I won’t explain about the structure of the resident and the mechanism for transferring recalculationaddresses when installing/moving drivers, but the point is The glitch is that it got into the table of custom addresses extra address, which causes the system to recalculate the installation address tion, which is initially disabled (equal to #0000). Thus it becomes not equal to #0000, and with subsequent movements the resident system makes a CALL to this very non-zero ad- res, the meaning of which is difficult to predict. Fortunately, the extra setup address was conveniently located place, namely in the last two bytes of the resident, so le- Everything seems quite simple. The bottom line: you need to shorten the resident by 2 bytes. 1st method: -transfer the resident to TRDOS and fix it with any disk doctor length (in the directory on track 0) from #058B (1419) to #0589 (1417) bytes. -transfer the resident back to ISDOS, and delete the old one. 2nd method (you need demon.com monitor disk): -by placing the cursor on the CMODEM directory, enter the monitor (by hot- whose key). -again, correct the file length from #058B to #0589. Do all this for each of the three residents: cdos1200.res cdos900.res cdosбO0.res They all have the same length (1419 bytes) and are close in size. structure. ════════════════════════ ══════════════════════════════════════ (C) EVP-SOFT Hello everyone.Today I will tell you how to make an IS-MODEM package bo- more convenient to use. First, shorten it by 2 bytes the length of the speed residents, as Jason did (see above). A then rewrite the bat files, they should look like this: Q:MODEMCMODEM1200.bat ┌───────────────────────────┐ Q:RESset Q:MODEMCMODEMcdos1200.res zx_lpro /r Q:RESset Q:MODEMCMODEMtrubka.res /r @trubka Q:MODEMmodem.com zx_lpro.res └───────────────────────────┘ Q:MODEMCMODEM900.bat ┌───────────────────────────┐ Q:RESset Q:MODEMCMODEMcdos900.res zx_lpro /r Q:RESset Q:MODEMCMODEMtrubka.res /r @trubka Q:MODEMmodem.com zx_lpro.res └───────────────────────────┘ Q:MODEMCMODEMbO0.bat ┌───────────────────────────┐ Q:RESset Q:MODEMCMODEMcdosбO0.res zx_lpro /r Q:RESset Q:MODEMCMODEMtrubka.res /r @trubka Q:MODEMmodem.com zx_lpro.res └───────────────────────────┘ Q:MODEMCMODEMemodem.bat - deletes residents ┌───────────────────────────┐ Q:RESset trubka.res /e Q:RESset zx_lpro.res /e └───────────────────────────┘ and finally the start menu - Q:MODEMCMODEMmodem.mnu ┌───────────────────────────┐ K/T0/A5/C38/B20/K%00101000/J%01001110 a ┌────────────┐ a │CDOS - modem│ a └────────────┘ a Port 239(#EF) A Continue communication H If the speed has already been selected. CQ:MODEMmodem.com zx_lpro.res A Speed 1200 baud HStandard.If unsuccessful, reduce speed CQ:SHELLexebat Q:MODEMCMODEM1200.bat A Speed 900 baud H Only for ZX with good line. CQ:SHELLexebat Q:MODEMCMODEM900.bat A Speed 600 baud H Standard. CQ:SHELLexebat Q:MODEMCMODEMbO0.bat A Remove residents Hzx_lpro.res, trubka.res CQ:SHELLexebat Q:MODEMCMODEMemodem.bat A Hang up H LD BC,#OOEF : OUT (C),B : RET CQ:MODEMCMODEMtube_d.com A Exit H C └───────────────────────────┘ The differences are that the set.com utility is used with the /r key, for This means it is called twice instead of four. Also not used uses rmodem.bat - now modem.com is loaded directly, not calling exebat.com once again, and memo_ips.com - dialing a number - absolutely unnecessary, because there is no auto-dial in memo_ips, and There is no ver in IS-MODEM. The file tube_d.com consists of only 6 byte: #01,#EF,#00,#ED,#41,#C9; start address: 26000. If you have there is a "MODEM RESET" button, thenloading and initialization lines the trubka.res resident can be removed, because he is only needed to When you press the "#" key three times (SS+3), hang up the phone deme. ════════════════════════ ══════════════════════════════════════ (C) Jason Frost And here's another interesting observation: Subj: new Floppy Disk driver needed!!! Maybe someone has one ready? A way has been found to greatly speed up disk operations with disk-based the house is in disrepair. The disk driver sys_driv.blk contains quite a few brakes and delays. By the way, under the definition of a turbo driver it not suitable, because does not work through VG ports, but uses TRDOS routines. Other brakes are also available. Need to _reset_ bytes +31 and +32, (see appendix) that create them. First is responsible for the delay before reading the sector, and the second for the frequency that of stepper pulses to the disk drive (i.e. for the speed of movement heads), initial values 2 and 8, the larger they are, the better lazier. Apparently, the driver was made for old disk drives, which There are almost none left now. My disk drive (5313) flies like a swallow (or so I think) it seems), and I'm quite pleased with it. There is only one drawback: the zeros in these cells remain until the first initialization :(. Which means it won’t take long. You need a new driver glue, however. So that he worksbased on the turbo driver principle TRDOS, i.e. directly through the VG ports. Installing it instead of the old one is somewhat problematic, because after removing the old one there will be nothing to install the new one, but it is possible possible. I had a similar problem when installing the screw driver instead of a disk drive. We need to add a _second_ disco to the system. new driver (no matter what, you can even from an electronic disk reinstall) and transfer all devices to it (via dev.com and the menu on button 9), then disconnect the old one from all devices (by dev.com program), and delete the old one. New installed in the system using standard means, set sysdriv+.blk /r for example. Here is the most important subtlety: the driver in channel #F8 is system, and you can’t simply remove it. Can only be deleted from simultaneous replacement, as indicated by the /r key. The driver must be installed in channel #F8. Then you need to transfer all those onto the newly installed one. devices that were on the old one. An intermediate driver can be delete. The resulting kernel can be saved and connected to the bootloader standard means, through sv.com (or syssave.com) and con.com. ┌──────────────────── ──────────────────────────────────┐ │ APPENDIX 4. Disk driver body structure │ │ (S:SYSTEMINIsys_driv.blk) │ │ │ │offset name length comments │ │ education │ │ │ │ 0 INSTL 2 Installation procedure (AP) address │ │ (if 0, then not needed) │ │ 2 BREAD 2 AP readings / dread(#D)/ │ │ 4 BWRIT 2 AP writes / write(#E)/ │ │ 6 BINIT 2 AP initialization / binit(#F)/ │ │ 8 SCCSR 1 Status Register │ │ 9 DRCSR 1 Reructp states (see APPENDIX 6.) │ │ 10 OFIM2 2 Offset from the beginning of the driver to the IM2 code│ │ (if 0, then at output IM 2 │ │ not forcibly installed │ │ 12 TPSYS 1 TR-DOS type (0/1) │ │ 13 QRDWR 1 Number of read/write attempts │ │ 14 TMBUF 2 Driver buffer address │ │ │ │ 20 2 Current no. sectors in the driver buffer │ │ │ │ 30 1 Drive type. Bits(0/1): │ │ 0 - 40/80 tracks │ │ 1 - 1/2 sides │ │ 31 TMWT 1 Sector reading start delay │ │ 32 HTIME 1 Time taken to move the drive heads │ │ 33 1 Disc type.Bits(0/1): │ │ 0 - 40/80 tracks │ │ 1 - 1/2 sides │ │ 34 1 Sector size: │ │ 1/2/4: 256/512/1024 bytes │ │ 35 1 Number of sectors per track │ │ 36 16 Table of sector numbers on a track │ │ │ │ Bytes 8..15(8) are stored in the channel and in the block vector. │ │devices (see APPENDICES 6.7) │ │ Bytes 33..51 describe the disk and correspond to bytes│ │23..25 and 64..79 in the 0th block of the device descriptor. │ │ binit(#F) automatically configures the driver for the iSDOS disk. │ │ To configure the driver for a non-standard floppy disk │ │ (TR-DOS, MS-DOS, etc.) initialize these bytes.│ └─────────────────────────── ───────────────────────────┘ Data for entry points: 13(0D):dread - Reading from the device. B - number of bl. DE - unit number HL - address in memory. 14(0E):write - Write to the device. B, DE, HL - similar to dread. 15(0F):binit - Go to the driver initialization procedure block device. Required the first time you contact a new person block device (for example, to each new floppy disk). Exit with arr. osh. Jason. ---is-edit 4.12 * Origin: ...Altering The Future...(500:95/462.18)
Share your thoughts about the article