Hollosi Information eXchange /HIX/
HIX CODER 2271
Copyright (C) HIX
2005-06-18
Új cikk beküldése (a cikk tartalma az író felelőssége)
Megrendelés Lemondás
1 LPT1->FILE XP alatt (mind)  194 sor     (cikkei)

+ - LPT1->FILE XP alatt (mind) VÁLASZ  Feladó: (cikkei)

Udv!

Kis segitseget szeretnek kerni. Van egy Clipper programrendszer, ami DOS
alatt rendesen mukodik, nyomtat is, de Windows XP alatt nem. Windows
beallitasok nem
hoztak eredmenyt, ezert arra gondoltam, atiranyitom a nyomtatast file-ba,
aztan majd
kezzel kinyomtatom a dolgokat. Irtam egy egyszeru progit, ami elvben ezt
csinalja,
CON<->FILE atitanyitasra jo, de ha LPT1 szerepel, akkor elnyeli a nyomtatora
kuldott
dolgokat. DOS alatt biztosan, nyilvan Windows alatt se mukodne.
*******
Title nyomi        ;program's title
Comment *
 LPT1 átirányítás...
*
;Data section (definition of data area)
Data    Segment Para Public 'Data'
        fname db "c:\temp\lista.txt",0
        hibauz db "Nyitási hiba!$"
        atir_h db "Atirányítás nem sikerült!$"
        old_handle dw ?
        mut db ?
Data    Ends                                    ;other data segs from here

;-------------------------------
;Stack section
Stck    Segment Para Stack 'Stack'
        Stck_siz Dw 256 Dup (?)                 ;stack's size 256 words

Stck_start Label Word                           ;Top of the stack
Stck    Ends
Page
;-------------------------------
;Code section
Code    Segment Para Public 'Code'
Start   Proc Far
        Assume CS:Code, DS:Data, SS:Stck, ES:nothing

                Push  Ds
                Xor  Ax, Ax
                Push  Ax                      ;init for return

                Mov  Ax, Data
                Mov  Ds, Ax                  ;init ds reg
                                                ;main program
                Xor     Dx, Dx
                Mov     Ah, 1
                Int     17h                     ; init printer

;                Mov     Ah, 02h
;                Mov     Dl, 07h
;                Int     21h                     ; BEEP

                Mov     Ax, 06C00h               ; extended open
                Mov     Bx, 04002h
                Xor     Cx, Cx
                Mov     Dx, 011h
                Mov     Si, Offset fname
                Int     21h
                Jc      nyit_hiba
                Push    Ax
                Pop     Bx

                Mov     Ah, 046h
                Mov     Cx, 4         ;1->Output CON 4->LPT1, 0378h
                Int     21h
                Jc      atir_hiba

                Mov     Ah, 0
                Mov     Al, 041h

                Int     17h                             ;'A' a nyomtatora
;                Mov     Ah, 040h
;                Mov     Cx, 10
;                Mov     Dx, Offset fname
;                Int     21h
;                Mov     Ah, 068h
;                Int     21h                             ; flush
                Mov     Ah, 03Eh                        ; lezar
                Int     21h
                Jmp     Short vege
nyit_hiba:
                Mov     Dx, Offset hibauz
                Jmp     Short h_ki
atir_hiba:
                Mov     Dx, Offset atir_h
h_ki:           Mov     Ah, 09h
                Int     21h
vege:
        Ret                                     ;exit to caller process ->
                                                ;far return to Dos
Start Endp

Code Ends                                       ;other code segments

        End Start

*******
Talaltam a neten egy masik kodot, ez elvben pontosan azt csinalja, amire
szuksegem van.
A megfejtese meghaladja a kepessegeimet, es
az a baj, hogy inditasnal az 5. utasitasban 6-os kivetelt csinal egy DOS
gepen,
igy nem is probaltam ki, Windows alatt mi lenne vele. Ahogy nezegettem, a
0:0004 cimre
akar irni, ami tudtommal a megszakitasi vektor tabla, ezt talan egy erre
valo megszakitassal
elintezve mukodesre lehet birni.

Tudja valaki a megoldast?
*******
code segment para common
assume cs:code, ds:code, ss:code, es:code
org 100h

BufLen equ 16384

.386p

Start:
jmp Indul

;----------------------------
New1: push bx
mov bx, word ptr cs:Index
mov byte ptr cs:Puffer[bx],al
inc word ptr cs:Index
cmp word ptr cs:Index,BufLen
jb short NoSave
mov word ptr cs:Index,0
; call Save
NoSave: pop bx
iret
;----------------------------

Save:
pusha
push ds cs
pop ds
; sti
mov ah,3ch
xor cx,cx
lea dx,Sname
int 21h ;create file
jc short Hiba
xchg ax,bx ;handle
mov ah,40h
mov cx,BufLen
lea dx,Puffer
int 21h ;write to file
mov ah,3eh ;close file
int 21h
Hiba:
pop ds
popa
ret
;------

Sname: db 'parallel.dat',0
;-------
Index dw 0
Puffer db BufLen dup (0)
;----------------------------

Indul:
;---- set int1 start
push ds
push 0
pop ds
mov word ptr ds:[4],offset New1 ;set int1
mov word ptr ds:[6],cs
pop ds
;---- set int1 end

;-----set trap start
mov eax,cr4
or al,8 ;DE on
mov cr4,eax
mov eax,378h ;port
mov dr0,eax
mov eax,00020002h ;G0=1, RW=10, LEN=00 -> DR0
mov dr7,eax
;-----set trap end

mov dx,Indul-Start+101h
int 27h ;stay resident
code ends
end Start

*******
kosz,
Viktor

AGYKONTROLL ALLAT AUTO AZSIA BUDAPEST CODER DOSZ FELVIDEK FILM FILOZOFIA FORUM GURU HANG HIPHOP HIRDETES HIRMONDO HIXDVD HUDOM HUNGARY JATEK KEP KONYHA KONYV KORNYESZ KUKKER KULTURA LINUX MAGELLAN MAHAL MOBIL MOKA MOZAIK NARANCS NARANCS1 NY NYELV OTTHON OTTHONKA PARA RANDI REJTVENY SCM SPORT SZABAD SZALON TANC TIPP TUDOMANY UK UTAZAS UTLEVEL VITA WEBMESTER WINDOWS