Pantalla
completa en Windows 95/98/Me y deshabilitación
de Teclas de método abreviado
(Por Diego Lucio D'Onofrio)
Hola a todos, bueno hoy les cuento esto que para que
les voy a mentir lo descubrí por error, estaba
haciendo un .COM de 3 líneas para cambiar el módo
de video, teclié mal un número y descubrí una
función indocumentada de la interrupción 10h, lo
que hace es abrir la ventana DOS al tamaño de
pantalla completa e inavilitar las teclas de método
abreviado (alt+tab, alt+enter, ect).
Bájate el .COM de
solo 7 Bytes : fulldos.com
Comandos comunes en lenguaje PCL
para impresoras Laser y chorro de tinta
Debido a la masiva consulta de los programadores he
colocado en estas páginas los códigos PCL.
Anulación
de la tecla Pausa. (13-Dic-02)
(Por Diego Lucio D'Onofrio)
Hace unos días mi gerente de sistemas me solicitó
que solucionara un problema que aparentemente no
tenía arreglo, el punto era que en ciertas pantallas
los usuarios de nuestro sistema realizado en Clipper
presionaban la tecla [Pausa], si esto sucedía cuando
el programa estaba bloqueando una base de datos, la
misma quedaba bloqueada y se detenían todas las
consultas a la misma, frenando así todo el sistema.
Como fue imposible quitarles este "vicio" a
los usuarios, se recurrió a mi para que lo
solucionara.
Primer problema : El primer problema que tuve era que
la tecla pausa no puede ser definida desde Clipper, y
que no hay biblioteca ni programa ni función de
nadie que permita anularla.
Luego entendí que cuando esta tecla es presionada el
sistema operativo hace caer en un "loop" al
programa y lo saca de ahí recién cuando es
presionada otra tecla la cual no es colocada en el
buffer, por lo que aunque pudiera advertir que fue
presionada mi programa se detendría antes de poder
ejecutar cualquier línea de código.
Como era evidente que no podría solucionar esto
desde un lenguaje de alto nivel, decidí atacar al
fuego con fuego, me volqué al assembler.
Antes que nada consulté al "NG" (inglés)
alt.lang.asm en tres oportunidades y no tuve ninguna
respuesta, por lo que traté de desarrollarla yo por
mis propios medios.
Segundo problema : ¿Cómo detener algo que detiene
cualquier proceso?
Pasé toda una noche pensando en eso hasta que
llegué a una nueva conclusión.
La tecla pausa no detiene el reloj de tiempo real
(real time clock), por lo que decidí hacer en
assembler un residente que se "cuelgue" de
esta interrupción.
Tercer problema : ¿Y después que?
No tenía idea de cómo trabajaba la pausa, ni mucho
menos de cómo anularla, por lo que decidí utilizar
el programa "Soft Ice" para averiguarlo.
Luego de cargar el Soft Ice me paré en el
"Prompt" del DOS y toqué la tecla pausa,
luego activé el debuger y pude observar que el
sistema se encontraba en un bucle en el cual se
comparaba la dirección de memoria hexadecimal 40:18
(Justo una después de la que controla el estado de
las teclas [Num Lock], [Caps Lock] y [Scroll Lock]),
con el valor (08).
Reemplacé este valor por 00 y noté que la pausa
había sido liberada, al fin respiré.
Hacer un pequeño archivo .COM que verifique el valor
de 40:18h y en el caso de ser 08 lo reemplace por 00
no fue una tarea complicada, con menos de 1 K y menos
de 512 Bytes en memoria al cabo de una hora este
pequeño y compacto residente quedó terminado.
Le agregue la opción de descargarlo corriéndolo una
vez que se encuentra en memoria.
Debo decir que a pesar de las complicaciones
disfruté mucho resolviendo este problema, por un
lado porque hacía por lo menos cuatro años que no
programaba en assembler, lo cual me transporto a
viejos tiempos.
Algo que me costó mucho fue tipear .ASM en la
extensión del archivo en lugar de .PRG, y acordarme
de usar TASM y TLINK en lugar de CL3 (que es el .BAT
que usamos nosotros para compilar con 5.3 y
Exoespace).
Fue gracioso que al terminar me pidieron una
modificación de un programa en Clipper y al editar
el .PRG lo primero que traté de abrir fue MENU.ASM,
entonces pensé, es una tarea complicada el programar
en distintos lenguajes.
Bueno, espero que les haya gustado mi anécdota y que
les sirva para resolver algún problema similar en el
futuro.
Nota: Este programa no funciona en una ventana de DOS
bajo Windows.
Bajate el Nopause.com
Controladores
fiscales homologados en la Argentina.
La AFIP y Cia.
Debido a la resolución 963/2001 de la
Administración Federal de Ingresos Públicos (AFIP),
en la Argentina en el año 2001 la gran mayoría de
las pequeñas y medianas empresas que atienden al
público, y que sus clientes son consumidores
finales, fueron obligados a adquirir costosos e
improductivos controladores fiscales.
Digo costosos porque cada uno vale mas del doble del
sueldo de cualquier empleado de esos comercios, e
improductivos porque lejos de ser una solución,
representan una verdadera complicación en todo
sentido, la cual mas abajo detallo, para el
comerciante que apenas puede mantener los costos de
su pequeño negocio.
Para que se den una idea de donde viene el tema, en
la página de la AFIP, que obviamente es una página
gubernamental, se pueden encontrar los manuales de
las tres marcas de controladores fiscales que hay en
el país, los cuales son manufacturados por empresas
particulares que no deberían tener nada que ver con
el fisco, como si esto fuese poco hay una opción
para buscar servicios técnicos para estos
controladores, y sea cual fuere el dato ingresado
aparece siempre la compañía Hasar, lo que me hace
acordar al los "enlaces patrocinados" del
buscador Google.
Por supuesto en la web, página principal, de la
compañía Hasar hay un link a la página de la AFIP,
es evidente que también se reparten las visitas.
Funcionamiento en general.
Un controlador fiscal es un impresor de documentos
fiscales el cual posee una memoria EPROM llamada
memoria fiscal, ja, la cual graba todas las
transacciones realizadas con este, para asegurarse de
que esta EPROM no sea alterada la envolvieron en un
mazacote de "resina epoxy" así como esas
que se usan para reforzar los cascos, si la
observamos detenidamente podremos ver las huellas
digitales del empleado que armó el controlador, la
ubicaron dentro del gabinete, protegiendo la apertura
del mismo con un precinto inviolable, ja.
Sistemas.
Obviamente y como era de esperarse la compañía
Hasar desarrolla sistemas para sus controladores,
pero increíblemente la AFIP permitió a los
damnificados utilizar otro tipo de sistemas.
Mi primer contacto con un controlador.
Fue a principios del 2001 cuando uno de mis clientes
el cual posee una ferretería se vio agraciado con la
noticia de que tendría que cambiar su facturación
manual por un controlador fiscal.
El me llamó y solicitó que le realizara las
modificaciones pertinentes a su sistema para que
pueda operar con semejante engendro electrónico.
Por un tema de costos los controladores fiscales no
traían, no se si ahora traen, manuales impresos,
solo incluían un disquete, sin etiqueta, con unos
programas de demostración y un archivo MS-Word como
manual, con lo cual pensé que Microsoft también
entraba en el negocio ya que sin el MS-Word era
imposible leer el archivo .DOC porque este incluía
imágenes y otras señalizaciones las cuales no se
podían leer con cualquier editor.
Me hice una copia de este disquete, espero no haber
incurrido en la piratería informática con esta
acción, y me lo llevé a mi casa donde iba a
desarrollar las modificaciones al sistema en
cuestión.
Espanto.
Esa fue la cara que puse cuando comencé a leer las
primeras líneas del mismo, y juro que después no
mejoró.
Ahora no tengo el manual, ja, a mano, pero recuerdo
que decía algo muy similar a esto:
El CF, a partir de ahora así nombraré al
controlador fiscal, posee tres estadios de vida, el
pre natal, la vida útil y la vida pos mortem (Juro
que decía esto, por mas increíble que parezca).
Hecha esta introducción al manual comenzaba a
expandir el tema diciendo...
La vida pre natal, es como un período de prueba
donde el controlador puede ser usado para pruebas,
esto era antes de que el técnico habilitado ponga en
marcha el controlador, y durante este período
ningún tiquet sería grabado en la memoria fiscal.
La vida útil, ó inútil mejor dicho, esta comienza
cuando el controlador es habilitado por el técnico.
La vida después de la muerte, con estas mismas
palabras se describía al la memoria fiscal agotada,
ya que en aquel entonces estas memorias traían unos
1700 cierres lo cual en teoría y si todo iba bien le
alcanzarían al usuario para unos 5 años.
Se imaginaran lo duro que fue leer el pseudo manual,
pero mi horror llegó a niveles extremos cuando leí
que solo traía 2 decimales, e independientemente de
esto se pasaba la alícuota de IVA (Impuesto al Valor
Agregado).
Para que se den una idea, analicemos el siguiente
ejemplo:
Una tuerca vale $0,02 final, con lo cual mi programa
le pasaba al controlador el valor sin el IVA
0,02 / 1.21 = 0,0165289
El controlador solo maneja dos decimales, por lo que
leía 0,01
Luego mi sistema le pasaba la alícuota : 21%
Y el controlador determinaba el precio final:
0,01 * 1.21 = 0,01 (ya que solo tiene 2 decimales.
En pocas palabras el controlador fiscal hacía un
descuento del 50% cada vez que mi cliente vendía un
puñado de tuercas.
Obviamente el cliente se quejó conmigo, seguido de
lo cual me comuniqué con la compañía Hasar quienes
me dieron la solución divina, me dijeron que mi
cliente debería cambiar el factor de venta del
producto hasta al punto que el redondeo de decimales
no afectara la transacción.
Un tiempo después solucionaron este problema con los
decimales, pero para lo cual obligaban a los
comerciantes a comprar nuevos controladores que
traían llamativas etiquetas en forma de estrellas en
su caja con claras leyendas que decían "Ahora
con 4 decimales" ó "Soporta hasta 10
decimales" ó la más patética de todas
"Nuevo con punto decimal flotante", Ja, no
es para reír, es para llorar.
Epson también hizo su introducción en el mercado de
los CF's, con comandos un tanto mas complicados su
modelo de impresores homologados no fueron mejores,
ya que traían grandes problemas de hardware, con lo
cual obligaban al comerciante a abonarse a un
servicio técnico fiscal, ja, ó pagar grandes
cantidades de dinero por cotidianas reparaciones.
Bueno, creo que ahora tienen una leve idea de cómo
va el negocio de los controladores fiscales en la
Argentina.