Echo #01
31 октября 1996 |
|
Assembler - Turbo Loader with full error checking.
(C) VfNG / NEW I suggest to my fullest yuzaniyu devepoled Turbo Loader with full error checking. He checked on all those caught me by the arm machines (Profi, Pentagon, 'Leningrad', 'Byte') and works great! Please, just do not fix it, some 'obvious folly'. The fact is that one disk interface, which we use in Brest, is engaged in emulation TR-DOS, therefore, some procedures ROMs do not work as expected, and sometimes spoil some registers ... For example # 2A53 in our sticks JPwhere is converter. Individual treatment to all the brethren: do not meddle in TR-DOS with Register R (except in # 3D2F, # 3D30 possible) pomrets. ;----------------------------------------;' NEW 'TURBO LOADER BY VfNG' 96 ; NEW ORIGINAL CONCEPTION + FULL ERROR ; CONTROL! ;---------------------------------------- RETRY EQU 3; number of attempts to read ; Bad sector to ; Repositioning ;---------------------------------------- ORG # 8000 ;----------------------------------------; Section initialization. Sufficient duration; vat once. ;---------------------------------------- INIT DI LD A, # 3F; Setting vector LD I, A; I in the 'fast' parameters ; Crease. LD A, (# 5D16); definition AND 3, disc type LD (REG +1), A; water. LD HL, # 5CC8; ADD A, L LD L, A BIT 1, (HL) JR NZ, LOAD8 LD HL, # A700 LD (POKE1), HL LD (POKE2), HL LD (POKE3), HL LD A, # 37 LD (POKE4), A ;----------------------------------------; Positioning. DE-trek/sektor. If ; Already sticks out on this track, it is possible and ; Not cause ;---------------------------------------- LOAD8 CALL POSIT RET ;----------------------------------------; End of initialization. Now we own; respectively loader: ; HL-where, B-number, DE-how ; Returns: DE-current track / sector ; HL-mail, which was loaded ; The last byte of a ;---------------------------------------- LOAD DI LOAD5 PUSH DE CALL SECTOR POP DE INC H INC E LD A, E CP # 10 JR Z, LOAD2 LOAD6 DJNZ LOAD5 RET LOAD2 LD A, D POKE4 RRA PUSH AF LD A, # 3C JR C, LOAD1 LD A, # 2C LOAD1 CALL REG POP AF LD C, # 3F CALL PORT INC D LD E, 0 LD A, D POKE1 SRL A LD C, # 7F CALL PORT LD A, # 18 LD IX, # 2FC3 CALL DOS JR LOAD6 ;---------------------------------------- SECTOR LD C, RETRY SECTOR1 PUSH BC LD A, E INC A LD C, # 5F CALL PORT LD A, # 80 LD C, # 1F CALL PORT PUSH HL LD C, # 7F LD IX, # 3FE5 CALL DOS CALL STATUS POP HL POP BC RET Z DEC C JR NZ, SECTOR1 CALL REPOS JR SECTOR ;---------------------------------------- STATUS PUSH DE XOR A LD C, # 3F CALL PORT LD A, # 0A LD C, # 5F CALL PORT LD D, 1 LD IX, # 3F33 CALL DOS POP DE LD A, B AND # 7F PUSH AF LD A, D POKE2 SRL A LD C, # 3F CALL PORT POP AF RET ;---------------------------------------- REPOS LD A,% 11011000 CALL COMM2 LD A, 8 CALL COMM3 ;---------------------------------------- POSIT LD A, D; Positioning POKE3 SRL A PUSH AF LD A, # 2C JR C, REPOS1 LD A, # 3C REPOS1 CALL REG POP AF LD C, # 7F CALL PORT LD A, # 18 JR COMM3 ;---------------------------------------- REG OR 0 LD IX, # 1FF3 DOS PUSH IX JP # 3D30 PORT LD IX, # 2A53 JR DOS COMM2 LD IX, # 2F57 JR DOS COMM3 CALL COMM2 LD C, 5; very, it seems, camping, long pause, but otherwise this is not crap ; Will work on the 'byte'. COMM3_1 PUSH BC LD IX, # 3DFD CALL DOS POP BC DEC C JR NZ, COMM3_1 RET ;---------------------------------------- That's it! We kindly request if anyone have a trick And this does not work, write immediately to the Echo!
Other articles:
Similar articles:
В этот день... 21 November