Jump to content


New Members
  • Content Count

  • Joined

  • Last visited

Community Reputation

10 Good

About KlausO

  • Rank
    Combat Commando
  • Birthday 08/03/1966

Profile Information

  • Gender
  • Location
    NRW in Germany

Recent Profile Visitors

174 profile views
  1. This is the assembler version of the BASIC program from the last post. It works exactly the same, but instead of 70 seconds it only takes 3.5 seconds for the two example lines. The attached file PRTDSP_v4c.txt contains the source code of the assembler routine. The first columns with the HEX values were determined with the aid of the program asm7.exe under Windows XP. I then converted the two-digit hex values into decimal numbers and transferred them to the following BASIC program. The jump destination of the "CALL @PRT" command must be set afterwards because this absolute address is only fixed when memory has been requested with GETMEM. All other jumps (JP, JNE, JPZ, JNZ) in the assembler program using relative addresses, i.e. jump x bytes forwards or backwards and are independent of where the assembler routine is in the memory. 100 CALL GETMEM(120,ASM) 110 CALL POKE(ASM,136,32,62,118,34,1,139,1,15,34) 120 CALL POKE(ASM+10,13,139,1,14,34,12,141,1,14,228) 130 CALL POKE(ASM+20,249,34,32,157,118,230,8,211,118,34) 140 CALL POKE(ASM+30,141,29,118,230,242,50,118,136,32,141) 150 CALL POKE(ASM+40,118,154,118,208,120,142,(ASM+68)/256,(ASM+68),219,118) 160 CALL POKE(ASM+50,77,1,118,229,242,114,13,120,142,(ASM+68)/256) 170 CALL POKE(ASM+60,(ASM+68),114,10,120,142,(ASM+68)/256,(ASM+68),10,114,8) 180 CALL POKE(ASM+70,121,181,223,120,227,1,179,139,1,14) 190 CALL POKE(ASM+80,40,4,139,1,14,210,121,230,238,34) 200 CALL POKE(ASM+90,6,139,1,14,34,4,139,1,14,34) 210 CALL POKE(ASM+100,13,139,1,14,34,12,141,1,14,230) 220 CALL POKE(ASM+110,249,10) 230 PRINT "The quick brown fox jumps over a lazy dog." 240 CALL EXEC(ASM) 250 PRINT "EXP(PI*SQR(163)) = EXP(";PI;"*";SQR(163);"))=";EXP(PI*SQR(163)) 260 CALL EXEC(ASM) 270 CALL RELMEM(ASM) PRTDSP_v4c.txt
  2. This is the BASIC-Version of the program that print the ontent of the TI-74's display with the "INTERFACE CENTRONICS". The dsiplay-buffer start at adress 8333 with the firts character and go down to 8254. The first task is to search from the end after the first character that is not a space (=32). This is the last character in the line to print. Then tranfers the characters one by one from the start of the display-buffer to the last character. At the end of the line send a CR (=13) and a LF (=10) to the printer. The Runtime of the BASIC-Version is 70 seconds for the two example-Lines. The Line 510 is a REM because BASIC ist to slow to catch the ACK-Signal from the printer. In Line 470 the TROBE-Signal goes low and the real Printer answer with ACK low in a very short time, before BASIC has reached Line 480. The poke in line 480 set STROBE high and clear the 74HC74. In this moment the ACK from the printer is lost and can not be found in line 510. In the Assembler-version the logic works and it wait for the ACK from the printer. 10 PRINT "The quick brown fox jumps over a lazy dog." 20 GOSUB 300 30 PRINT "EXP(PI*SQR(163)) = EXP(";PI;"*";SQR(163);"))=";EXP(PI*SQR(163)) 40 GOSUB 300 50 END 300 CALL POKE(271,1) 310 A=270 320 CALL POKE(A,13) 330 CALL PEEK(A,B) 340 IF B<12 THEN 330 350 FOR E=8254 TO 8333 355 CALL PEEK(E,B):IF B<>32 THEN 370 360 NEXT E 370 FOR S=8333 TO E STEP -1 375 CALL PEEK(S,Z):GOSUB 400 380 NEXT S 385 Z=13:GOSUB 400 390 Z=10:GOSUB 400 395 RETURN 400 FOR I=1 TO 8 410 T=Z-128 420 IF T<0 THEN B=1:Z=2*Z 430 IF T>=0 THEN B=0:Z=2*T 440 CALL POKE(A,B) 450 CALL POKE(A,B+4) 460 NEXT I 470 CALL POKE(A,6) 480 CALL POKE(A,4) 490 CALL POKE(A,13) 500 CALL PEEK(A,B) 510 REM IF B<>12 THEN 500 520 RETURN
  3. On my Windows10 64bit PC with the Arduino IDE installed this work without the download of avrdude because it is part of the IDE. Choose the right parameter for the COM-port: "C:\Program Files (x86)\Arduino\hardware\tools\avr\bin\avrdude" -v -V -carduino -patmega328p -C"C:\Program Files (x86)\Arduino\hardware\tools\avr\etc\avrdude.conf" -PCOM4 -b115200 -D -Uflash:w:HEXTIr_arduino_hw_nopm.hex And the drive work: OLD, SAVE, VERIFY and OLD "100.$" are OK
  4. #519 say since today: „BAV is now on D2, not D7, and LED is on D7,not D2.“ You have to change your wiring for the current source-code. The file HEXTIr.bin from http://www.go4retro.com/downloads/HEXTIr/ works with my device and the „old“ wiring like yours. I have trouble with the thin pins of the SD-shild to connent to my cheap arduino clone. I take the connector apart and solder the shild on the arduino...
  5. Characters are output to the printer with this interface by first collecting 8 individual bits in the 74HC164 and then signaling to the printer via a low pulse at Strobe that the printer can accept the byte = character. For pure output, address 271 must be set to 1 (BAV=high, HSK=low). The data line is used as follows: D0: The bit to be output in inverted form D1 = 0 D2: The change from low to high pushes the bits in the 74HC164 one place further. D3 = 0 This small program continuously writes bits into the 74HC164. It starts with a high bit followed by a low bit and so on. I used it to switch LEDs from the interface on and off. So even without a printer I could see whether the interface works this way. 70 PAUSE ALL 80 CALL POKE(271,2) 90 CALL POKE(271,1) 100 A=270 110 B=0:CALL POKE(A,B) 120 PRINT A,B 130 B=4:CALL POKE(A,B) 140 PRINT A,B 210 B=1:CALL POKE(A,B) 220 PRINT A,B 230 B=5:CALL POKE(A,B) 240 PRINT A,B 250 GOTO 100 Now the first real program for the Interface. It send 7 characters to the printer: The five readable characters TI-74 as well as carriage return and line feed. It takes a little over 4 seconds. The two lines 470 and 480 generate the low pulse on strobe. The program works without any problem but it is to slow. 300 CALL POKE(271,2) 310 CALL POKE(271,1) 312 A=270 315 PAUSE ALL 320 Z=ASC("T"):GOSUB 400 330 Z=ASC("I"):GOSUB 400 340 Z=ASC("-"):GOSUB 400 350 Z=ASC("7"):GOSUB 400 360 Z=ASC("4"):GOSUB 400 370 Z=13:GOSUB 400 375 Z=10:GOSUB 400 390 END 400 FOR I=1 TO 8 410 T=Z-128 415 REM PRINT I,Z 420 IF T<0 THEN B=1:Z=2*Z 430 IF T>=0 THEN B=0:Z=2*T 440 CALL POKE(A,B) 450 CALL POKE(A,B+4) 460 NEXT I 470 CALL POKE(A,2) 480 CALL POKE(A,0) 490 RETURN I am planning a version that prints the contents of the TI-74's display. I would then like to implement this in machine language and also take into account the two signals ACK and Busy output by the printer.
  6. Good advice, I asked Mr. Ferluga about it yesterday and got a direct answer. However, he has not tried the interface himself, but will soon do it. I stick to my assessment that it used to only work with an insurance company cartridge because it was specifically controlled by the insurance software. The standard functions of the TI-74 do not work with this interface. I got further when looking for the DOCK-BUS addresses of the TI-74. I connected an LED between 5V and a transistor-collector on a breadboard. From the transistor-emitter a 330 Ohm resistor goes to GND. At the base of the transistor came a 10 kOhm resistor with a cable to the DOCK-BUS of the TI-74. So I could see directly what a poke does. The DOCK-BUS data-lines D0 to D3 are controlled via address 270. The handshake lines BAV and HSK via address 271. To be able to output something via D0 to D3, BAV must first be set to high and HSK to low. The following two lines set D0 to D3 high: CALL POKE (271,1) CALL POKE (270,15) The logic for address 271 looks like this: value BAV HSK 3 L L 2 L H 1 H L 0 H H With this knowledge, I can now plug in the interface and try to send something to the printer. Hopefully at first only readable and no control codes ...
  7. Thanks for the hint Ksarul. The Kodak DICONIX 180 SI Centronic Printer works very well on other computers. So the printer is fine. An attempt with the TI-74 to print something via this interface with LIST "12" only leads to the usual error message E0 I/O error 255 "12". I ask the developer of the TIIF2 program and he answer: "It certainly won't work with open, print, close, because these commands expect a strict protocol. You need a bit of intelligence that can't possibly be found in the few TTLs. With the PC interface, this part is on the PC side. This means that the printer would have to do that what is extremely unlikely. Then it would be a custom-made product." I tried different POKE-commands at addresses 274, 275 and 276 without success. The idea for this comes from the "cc40 ti74 hexbus.txt" file from //ftp.whtech.com/hexbus_cc40_ti74/. There is a section entitled "CC-40 PROJECT REPORT # 5", which shows how you can set and read HEX-BUS pins directly. The TI-74 does not seem to have the same addresses for the DOCK-BUS. Does anyone know this addresses for the TI-74?
  8. Hi, I am Klaus from Germany and this is my first post at atariage. I received a piece of electronics from Italy on ebay, the function of which I would like to find out. It is a CI-7 interface but with a Centronics male plug like this on the pictures from gferluga above. I suspect it only works with specially written access functions, which I unfortunately don't have. I have measured all connections between the 5 IC's and the two connectors. This resulted in two circuit diagrams: the first shows the 5 ICs and in the second they are broken down into individual logic gates. I am now also sure that the circuit is used to connect an old parallel printer to the TI-74: "INTERFACE CENTRONICS" is on the back of the board. The Italian insurance company VitaNuova had equipped its representatives with a case that contained a "KODAK DICONIX 180si" printer with a Centronics interface in addition to the TI-74S. This interface comes from such a case. Unfortunately I don't have a VitaNuova ROM cartridge and have to figure out how to control it to send characters to the printer. I don't think this can be done without an assembler routine, with which the output lines of the TI-74 are written and read directly past the usual protocol. I find it remarkable that the 74HC164 receives its supply voltage via the output of an AND gate, i.e. it can be switched off and on. The connection between the BUSY output of the printer and its STROBE input via two inverters is completely incomprehensible but measured three times. How can STROBE ever get high like this? There are a lot of puzzles in this little circuit ...
  • Create New...