ZX Spectrum faixa vm

COMO CONFIGURAR O TK90X/TK95 PARA RODAR COM FREQUÊNCIA DE 50Hz

 

 

O TK90X/TK95, por operar no sistema brasileiro PAL-M, tem frequência de sincronismo vertical de 60Hz. Essa frequência é utilizada pelo circuito de vídeo, mas, também é utilizada para gerar interrupções do Z-80. Por ser sinal de vídeo, ele é gerado pela ULA. Ocorre que no Spectrum original, esta frequência é de 50Hz (pois o sistema de vídeo lá na Inglaterra é o PAL 50Hz). Desta forma, as interrupções do Z-80 também obedecem à esta frequência.

 

Desta forma, isso tem certa influência nos programas, especialmente os que usam as interrupções do Z-80. Embora, na prática, a grande maioria dos jogos não apresente problemas com relação a isso, vários tem influência, especialmente se utilizam recursos com "timming" muito preciso. Essa diferença também é notada nos jogos que tem música de fundo usando o chip de som AY 3-8912, pois, a música é executada nos ciclos de interrupção do Z-80; o resultado é que no TK90X, na maioria das vezes, a música é levemente mais "acelerada". Claro que, como a maioria de nós só usava o TK90X na época e nunca usou um ZX Spectrum original, até então, isso não tinha importância. Porém, hoje em dia, usando o Spectrum original ou os emuladores percebemos a diferença (embora em muitos casos nos acostumamos com a música "acelerada" e achamos "esquisito" a música mais "lenta"...  :-D).

 

Mesmo assim, há alguns programas que podem apresentar problemas com a frequência diferente. O exemplo mais comum é o jogo "Aquaplane", que usa uma técnica de programação baseada nisso para exibir a borda da tela em duas cores diferentes, de modo que a parte azul coincida com o nível do mar no jogo. Rodando no TK a borda fica no local "errado". Recentemente o amigo Flávio M. Matsumoto descobriu e relatou, no seu excelente blog "Cantinho do TK90X", um jogo que não funciona corretamente devido a frequência diferente, o "Commando Tracer". E alguns "demos" também apresentam problemas.


Mas, e como resolver isso? Não que seja algo crítico, mas, seria interessante poder alternar entre as duas frequências, não? Será que dá?


A resposta é: SIM, dá!


Recentemente, recebi um TK90X Uruguaio do amigo Daniel Lúcio, ele me pediu para corrigir um problema na implementação da saída A/V desse micro e modificá-lo para NTSC, pois, ele estava configurado para vídeo em PAL-N. Só que o PAL-N, usado no Uruguai e na Argentina, tem frequência de 50Hz! Eu já tinha visto fotos dos TK90X que a Microdigital lançou na Argentina, mas, eles tinha a placa diferente, e, usavam uma ULA da Ferranti, a original da Sinclair. Mas esse não! Ele tem a placa idêntica a dos "nossos" TKs. Mas ele operava em 50Hz! Como isso?!?!

Eu implementei a alteração para NTSC nele, funcionou, mas, ficou uma situação "sui-generis": NTSC rodando à 50Hz!  :-P

Levantei a questão na lista TK90X, e aparentemente era possível que houvesse essa possibilidade. O que foi confirmado com uma mensagem do nosso amigo Cláudio Cassens, que afirmou que sim, que a ULA do TK pode gerar sinal de 50Hz ou 60Hz, dependendo de um ajuste em um pino. Com essa informação, e seguindo uma dica do próprio Daniel, e comparando a placa do TK Uruguaio com a do TK Brasileiro, descobrimos como fazer a"mágica"!


O "segredo" da coisa é o pino 1 da ULA, que nos esquemas originais da Microdigital é apenas deixado como "não-conectado". E de fato, nos TKs nacionais, esse pino está sem conexão. Porém, no TK Uruguaio o pino está conectado ao terra, fazendo com que a frequência mude para 50Hz. Então, resumindo, com o pino 1 desligado, 60Hz, com o pino 1 "aterrado" (0 volts), 50Hz.


Vamos mostrar de uma forma mais prática como executar essa modificação.

 

Abra o TK90X e localize a ULA, e o pino 1. Use a foto abaixo como referência:

 


Vire a placa de cabeça para baixo e localize os pinos da ULA. Bem pertinho do pino 1 da ULA (coincidência?!) tem uma ilha ligada ao terra. Você pode fazer uma "ponte" ali com uma gota de solda, se quiser deixar a alteração permanente. Veja as imagens abaixo:

 

placa pelo lado da solda, note o pino 1 da ULA e a ilha ao lado, ligada ao terra.



 


Aqui com a ligação feita, com uma gotinha de solda; no TK Uruguaio estava assim.

 

 

 

Uma alternativa, mais interessante a meu ver, é colocar uma chavinha ente o pino 1 e o terra, de modo a podermos selecionar 60Hz/50Hz sem dificuldade.  Para isso basta soldar dois fios, um no pino 1 da ULA e o outro no terra e ligar eles numa chavinha comum. O terra pode ser conectado a ilha já citada ou a qualquer ponto ligado ao terra.

Abaixo um exemplo da ligação:

 

 


Uma vez feito, a ligação definitiva ou com a chavinha, remonte o TK, instale a chave (se for o caso), e ligue o TK. Você vai notar imediatamente a diferença: a tela vai ficar ligeiramente "menor" e você vai perceber a "cintilação" da tela, comprovando que ele está em 50Hz. Teste com alguns programas, como o já citado "Aquaplane".

Veja abaixo o teste com o Aquaplane:

 

Jogo "Aquaplane" rodando no TK90X à 60Hz...




...e aqui depois da modificação, rodando a 50Hz. Note a diferença nas bordas.

 

 

Testei também o jogo "Commando Tracer", como já citado no início do artigo, o qual travava após perder uma vida. Rodando no TK modificado à 50Hz, ele não mais apresenta problemas. Tentei vários programas que tem música de fundo AY, e elas rodam mesmo "mais lento", como por exemplo o Aufwidersen Monty, Rainbow Islands (esses graças a TKMEM-128! :-D), Elevator Action, Cybernoid 2. Em todos dá pra notar a diferença na velocidade de execução da música.

 

O inconveniente dessa modificação é que a tela vai ficar com uma incômoda cintilação. Eu creio que isso é devido ao fato da nossa rede e as TVs nacionais continuarem a operar em 60Hz. As TVs modernas, na sua maioria, suportam o padrão PAL-N e 50Hz, além de ter ajustes automáticos, por isso funcionam normalmente, sem "rolar" a tela, porém persiste a cintilação. Ela é minimizada nas telas com fundo mais escuro (preto é o melhor), mas com fundo ou cores predominantemente mais claras, é facilmente notado, e pode incomodar como tempo. Pessoalmente, prefiro continuar utilizando o TK com 60Hz, mas é bom ter a chavinha para os casos de necessidade, em determinados casos é essencial.

 

Está feito, então, mais uma adaptação para os nossos TK. Quero deixar aqui o meu agradecimento ao Daniel Lúcio, pelo TK Uruguaio e a dica dos pinos da ULA, o Flávio M. Matsumoto, incansável nas descobertas e adaptações para o TK, e que descobriu o problema com o Commando Tracer, entre outros, ao Cláudio Cassens, que confirmou a existência da opção na ULA, e aos amigos todos da lista TK90X.

 

 

Dúvidas ? Sugestões ? Escreva-me !

Gostou? Comente!

 

7.316MBMemory Usage489msRequest Duration
Joomla! Version5.2.5
PHP Version8.4.3
Identityguest
Response200
Templateg5_hydrogen
Database
Server
mysql
Version
10.11.10-MariaDB-log
Collation
utf8mb4_general_ci
Conn Collation
utf8mb4_general_ci
$_GET
[]
$_POST
[]
$_SESSION
array:1 [ "joomla" => "***redacted***" ]
$_COOKIE
[]
$_SERVER
array:52 [ "LSPHP_ProcessGroup" => "on" "PATH" => "/usr/local/bin:/bin:/usr/bin" "HTTP_ACCEPT"...
session
array:3 [ "counter" => 1 "timer" => array:3 [ "start" => 1745559726 "last" => 1745559726...
registry
array:3 [ "data" => [] "initialized" => false "separator" => "." ]
user
array:21 [ "id" => 0 "name" => null "username" => null "email" => null "password" => "***r...
  • afterLoad (423.03KB) (61.34ms)
  • afterInitialise (2.26MB) (125ms)
  • afterRoute (956.05KB) (57.41ms)
  • beforeRenderComponent com_content (95.23KB) (8.92ms)
  • Before Access::preloadComponents (all components) (166.54KB) (13.74ms)
  • After Access::preloadComponents (all components) (128.88KB) (1.13ms)
  • Before Access::preloadPermissions (com_content) (424B) (32μs)
  • After Access::preloadPermissions (com_content) (4.59KB) (668μs)
  • Before Access::getAssetRules (id:77 name:com_content.article.18) (104B) (25μs)
  • After Access::getAssetRules (id:77 name:com_content.article.18) (7.59KB) (1.65ms)
  • afterRenderComponent com_content (802.38KB) (76.73ms)
  • afterDispatch (2.72KB) (302μs)
  • afterRender (2.05MB) (141ms)
  • 1 x afterRender (2.05MB) (28.81%)
    141ms
    1 x afterInitialise (2.26MB) (25.61%)
    125ms
    1 x afterRenderComponent com_content (802.38KB) (15.68%)
    76.73ms
    1 x afterLoad (423.03KB) (12.53%)
    61.34ms
    1 x afterRoute (956.05KB) (11.73%)
    57.41ms
    1 x Before Access::preloadComponents (all components) (166.54KB) (2.81%)
    13.74ms
    1 x beforeRenderComponent com_content (95.23KB) (1.82%)
    8.92ms
    1 x After Access::getAssetRules (id:77 name:com_content.article.18) (7.59KB) (0.34%)
    1.65ms
    1 x After Access::preloadComponents (all components) (128.88KB) (0.23%)
    1.13ms
    1 x After Access::preloadPermissions (com_content) (4.59KB) (0.14%)
    668μs
    1 x afterDispatch (2.72KB) (0.06%)
    302μs
    1 x Before Access::preloadPermissions (com_content) (424B) (0.01%)
    32μs
    1 x Before Access::getAssetRules (id:77 name:com_content.article.18) (104B) (0.01%)
    25μs
27 statements were executed, 6 of which were duplicates, 21 unique8.38ms119.98KB
  • SELECT @@SESSION.sql_mode;75μs968B/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php:308Copy
  • SELECT `data` FROM `luccas_session` WHERE `session_id` = ?176μs1008BParams/libraries/vendor/joomla/session/src/Handler/DatabaseHandler.php:250Copy
  • SELECT `session_id` FROM `luccas_session` WHERE `session_id` = :session_id LIMIT 198μs1.3KBParams/libraries/src/Session/MetadataManager.php:187Copy
  • INSERT INTO `luccas_session` (`session_id`,`guest`,`time`,`userid`,`username`,`client_id`) VALUES (:session_id, :guest, :time, :user_id, :username, :client_id)157μs944BParams/libraries/src/Session/MetadataManager.php:260Copy
  • SELECT `id`,`rules` FROM `luccas_viewlevels`106μs960B/libraries/src/Access/Access.php:955Copy
  • SELECT `b`.`id` FROM `luccas_usergroups` AS `a` LEFT JOIN `luccas_usergroups` AS `b` ON `b`.`lft` <= `a`.`lft` AND `b`.`rgt` >= `a`.`rgt` WHERE `a`.`id` = :guest157μs1.33KBParams/libraries/src/Access/Access.php:868Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `luccas_categories` AS `s` INNER JOIN `luccas_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`462μs3.88KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT s.id, s.template, s.home, s.title AS long_title, s.params FROM luccas_template_styles AS s WHERE s.client_id = 0 AND s.template = 'g5_hydrogen' ORDER BY s.id196μs784B/libraries/gantry5/src/classes/Gantry/Joomla/StyleHelper.php:69Copy
  • SELECT `id`,`name`,`rules`,`parent_id` FROM `luccas_assets` WHERE `name` IN (:preparedArray1,:preparedArray2,:preparedArray3,:preparedArray4,:preparedArray5,:preparedArray6,:preparedArray7,:preparedArray8,:preparedArray9,:preparedArray10,:preparedArray11,:preparedArray12,:preparedArray13,:preparedArray14,:preparedArray15,:preparedArray16,:preparedArray17,:preparedArray18,:preparedArray19,:preparedArray20,:preparedArray21,:preparedArray22,:preparedArray23,:preparedArray24,:preparedArray25,:preparedArray26,:preparedArray27,:preparedArray28,:preparedArray29,:preparedArray30,:preparedArray31,:preparedArray32,:preparedArray33,:preparedArray34,:preparedArray35,:preparedArray36,:preparedArray37,:preparedArray38,:preparedArray39,:preparedArray40,:preparedArray41,:preparedArray42,:preparedArray43,:preparedArray44,:preparedArray45)461μs8.44KBParams/libraries/src/Access/Access.php:357Copy
  • SELECT `id`,`name`,`rules`,`parent_id` FROM `luccas_assets` WHERE `name` LIKE :asset OR `name` = :extension OR `parent_id` = 0288μs2.36KBParams/libraries/src/Access/Access.php:301Copy
  • SHOW FULL COLUMNS FROM `luccas_content`637μs1.77KB/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php:587Copy
  • UPDATE `luccas_content` SET `hits` = (`hits` + 1) WHERE `id` = '18'223μs48B/libraries/src/Table/Table.php:1348Copy
  • SELECT `a`.`id`,`a`.`asset_id`,`a`.`title`,`a`.`alias`,`a`.`introtext`,`a`.`fulltext`,`a`.`state`,`a`.`catid`,`a`.`created`,`a`.`created_by`,`a`.`created_by_alias`,`a`.`modified`,`a`.`modified_by`,`a`.`checked_out`,`a`.`checked_out_time`,`a`.`publish_up`,`a`.`publish_down`,`a`.`images`,`a`.`urls`,`a`.`attribs`,`a`.`version`,`a`.`ordering`,`a`.`metakey`,`a`.`metadesc`,`a`.`access`,`a`.`hits`,`a`.`metadata`,`a`.`featured`,`a`.`language`,`fp`.`featured_up`,`fp`.`featured_down`,`c`.`title` AS `category_title`,`c`.`alias` AS `category_alias`,`c`.`access` AS `category_access`,`c`.`language` AS `category_language`,`fp`.`ordering`,`u`.`name` AS `author`,`parent`.`title` AS `parent_title`,`parent`.`id` AS `parent_id`,`parent`.`path` AS `parent_route`,`parent`.`alias` AS `parent_alias`,`parent`.`language` AS `parent_language`,ROUND(`v`.`rating_sum` / `v`.`rating_count`, 1) AS `rating`,`v`.`rating_count` AS `rating_count` FROM `luccas_content` AS `a` INNER JOIN `luccas_categories` AS `c` ON `c`.`id` = `a`.`catid` LEFT JOIN `luccas_content_frontpage` AS `fp` ON `fp`.`content_id` = `a`.`id` LEFT JOIN `luccas_users` AS `u` ON `u`.`id` = `a`.`created_by` LEFT JOIN `luccas_categories` AS `parent` ON `parent`.`id` = `c`.`parent_id` LEFT JOIN `luccas_content_rating` AS `v` ON `a`.`id` = `v`.`content_id` WHERE ( (`a`.`id` = :pk AND `c`.`published` > 0) AND (`a`.`publish_up` IS NULL OR `a`.`publish_up` <= :publishUp)) AND (`a`.`publish_down` IS NULL OR `a`.`publish_down` >= :publishDown) AND `a`.`state` IN (:preparedArray1,:preparedArray2)481μs22.12KBParams/components/com_content/src/Model/ArticleModel.php:215Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `luccas_categories` AS `s` INNER JOIN `luccas_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`access` IN (:preparedArray1,:preparedArray2) AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`331μs3.92KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `m`.`tag_id`,`t`.* FROM `luccas_contentitem_tag_map` AS `m` INNER JOIN `luccas_tags` AS `t` ON `m`.`tag_id` = `t`.`id` WHERE `m`.`type_alias` = :contentType AND `m`.`content_item_id` = :id AND `t`.`published` = 1 AND `t`.`access` IN (:preparedArray1,:preparedArray2)223μs3.97KBParams/libraries/src/Helper/TagsHelper.php:388Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `luccas_categories` AS `s` INNER JOIN `luccas_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`access` IN (:preparedArray1,:preparedArray2) AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`413μs3.92KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT DISTINCT a.id, a.title, a.name, a.checked_out, a.checked_out_time, a.note, a.state, a.access, a.created_time, a.created_user_id, a.ordering, a.language, a.fieldparams, a.params, a.type, a.default_value, a.context, a.group_id, a.label, a.description, a.required, a.only_use_in_subform,l.title AS language_title, l.image AS language_image,uc.name AS editor,ag.title AS access_level,ua.name AS author_name,g.title AS group_title, g.access as group_access, g.state AS group_state, g.note as group_note FROM luccas_fields AS a LEFT JOIN `luccas_languages` AS l ON l.lang_code = a.language LEFT JOIN luccas_users AS uc ON uc.id=a.checked_out LEFT JOIN luccas_viewlevels AS ag ON ag.id = a.access LEFT JOIN luccas_users AS ua ON ua.id = a.created_user_id LEFT JOIN luccas_fields_groups AS g ON g.id = a.group_id LEFT JOIN `luccas_fields_categories` AS fc ON fc.field_id = a.id WHERE ( (`a`.`context` = :context AND (`fc`.`category_id` IS NULL OR `fc`.`category_id` IN (:preparedArray1,:preparedArray2,:preparedArray3)) AND `a`.`access` IN (:preparedArray4,:preparedArray5)) AND (`a`.`group_id` = 0 OR `g`.`access` IN (:preparedArray6,:preparedArray7)) AND `a`.`state` = :state) AND (`a`.`group_id` = 0 OR `g`.`state` = :gstate) AND `a`.`only_use_in_subform` = :only_use_in_subform ORDER BY a.ordering ASC1.01ms6.06KBParams/libraries/src/MVC/Model/BaseDatabaseModel.php:164Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `luccas_categories` AS `s` INNER JOIN `luccas_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`access` IN (:preparedArray1,:preparedArray2) AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`453μs3.92KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `m`.`id`,`m`.`title`,`m`.`module`,`m`.`position`,`m`.`content`,`m`.`showtitle`,`m`.`params`,`mm`.`menuid` FROM `luccas_modules` AS `m` LEFT JOIN `luccas_modules_menu` AS `mm` ON `mm`.`moduleid` = `m`.`id` LEFT JOIN `luccas_extensions` AS `e` ON `e`.`element` = `m`.`module` AND `e`.`client_id` = `m`.`client_id` WHERE ( ( (`m`.`published` = 1 AND `e`.`enabled` = 1 AND `m`.`client_id` = :clientId AND `m`.`access` IN (:preparedArray1,:preparedArray2)) AND (`m`.`publish_up` IS NULL OR `m`.`publish_up` <= :publishUp)) AND (`m`.`publish_down` IS NULL OR `m`.`publish_down` >= :publishDown)) AND (`mm`.`menuid` = :itemId OR `mm`.`menuid` <= 0) ORDER BY `m`.`position`,`m`.`ordering`632μs1.91KBParams/libraries/src/Cache/Controller/CallbackController.php:120Copy
  • SELECT `a`.`menutype`,`a`.`title` FROM `luccas_menu_types` AS `a` WHERE `a`.`client_id` = 0109μs624B/libraries/gantry5/src/classes/Gantry/Framework/Menu.php:138Copy
  • SELECT m.id, m.alias, m.path AS route, m.level, m.parent_id FROM luccas_menu AS m WHERE m.menutype = 'mainmenu' AND m.parent_id > 0 AND m.client_id = 0 AND m.published >= 0 ORDER BY m.lft324μs1.05KB/libraries/gantry5/src/classes/Gantry/Framework/Menu.php:791Copy
  • SELECT * FROM `luccas_schemaorg` WHERE `itemId` = :itemId AND `context` = :context145μs1.55KBParams/plugins/system/schemaorg/src/Extension/Schemaorg.php:403Copy
  • SELECT `a`.`id`,`a`.`asset_id`,`a`.`title`,`a`.`alias`,`a`.`introtext`,`a`.`fulltext`,`a`.`state`,`a`.`catid`,`a`.`created`,`a`.`created_by`,`a`.`created_by_alias`,`a`.`modified`,`a`.`modified_by`,`a`.`checked_out`,`a`.`checked_out_time`,`a`.`publish_up`,`a`.`publish_down`,`a`.`images`,`a`.`urls`,`a`.`attribs`,`a`.`version`,`a`.`ordering`,`a`.`metakey`,`a`.`metadesc`,`a`.`access`,`a`.`hits`,`a`.`metadata`,`a`.`featured`,`a`.`language`,`fp`.`featured_up`,`fp`.`featured_down`,`c`.`title` AS `category_title`,`c`.`alias` AS `category_alias`,`c`.`access` AS `category_access`,`c`.`language` AS `category_language`,`fp`.`ordering`,`u`.`name` AS `author`,`parent`.`title` AS `parent_title`,`parent`.`id` AS `parent_id`,`parent`.`path` AS `parent_route`,`parent`.`alias` AS `parent_alias`,`parent`.`language` AS `parent_language`,ROUND(`v`.`rating_sum` / `v`.`rating_count`, 1) AS `rating`,`v`.`rating_count` AS `rating_count` FROM `luccas_content` AS `a` INNER JOIN `luccas_categories` AS `c` ON `c`.`id` = `a`.`catid` LEFT JOIN `luccas_content_frontpage` AS `fp` ON `fp`.`content_id` = `a`.`id` LEFT JOIN `luccas_users` AS `u` ON `u`.`id` = `a`.`created_by` LEFT JOIN `luccas_categories` AS `parent` ON `parent`.`id` = `c`.`parent_id` LEFT JOIN `luccas_content_rating` AS `v` ON `a`.`id` = `v`.`content_id` WHERE ( (`a`.`id` = :pk AND `c`.`published` > 0) AND (`a`.`publish_up` IS NULL OR `a`.`publish_up` <= :publishUp)) AND (`a`.`publish_down` IS NULL OR `a`.`publish_down` >= :publishDown) AND `a`.`state` IN (:preparedArray1,:preparedArray2)419μs22.17KBParams/components/com_content/src/Model/ArticleModel.php:215Copy
  • SELECT `a`.`id`,`a`.`asset_id`,`a`.`title`,`a`.`alias`,`a`.`introtext`,`a`.`fulltext`,`a`.`state`,`a`.`catid`,`a`.`created`,`a`.`created_by`,`a`.`created_by_alias`,`a`.`modified`,`a`.`modified_by`,`a`.`checked_out`,`a`.`checked_out_time`,`a`.`publish_up`,`a`.`publish_down`,`a`.`images`,`a`.`urls`,`a`.`attribs`,`a`.`version`,`a`.`ordering`,`a`.`metakey`,`a`.`metadesc`,`a`.`access`,`a`.`hits`,`a`.`metadata`,`a`.`featured`,`a`.`language`,`fp`.`featured_up`,`fp`.`featured_down`,`c`.`title` AS `category_title`,`c`.`alias` AS `category_alias`,`c`.`access` AS `category_access`,`c`.`language` AS `category_language`,`fp`.`ordering`,`u`.`name` AS `author`,`parent`.`title` AS `parent_title`,`parent`.`id` AS `parent_id`,`parent`.`path` AS `parent_route`,`parent`.`alias` AS `parent_alias`,`parent`.`language` AS `parent_language`,ROUND(`v`.`rating_sum` / `v`.`rating_count`, 1) AS `rating`,`v`.`rating_count` AS `rating_count` FROM `luccas_content` AS `a` INNER JOIN `luccas_categories` AS `c` ON `c`.`id` = `a`.`catid` LEFT JOIN `luccas_content_frontpage` AS `fp` ON `fp`.`content_id` = `a`.`id` LEFT JOIN `luccas_users` AS `u` ON `u`.`id` = `a`.`created_by` LEFT JOIN `luccas_categories` AS `parent` ON `parent`.`id` = `c`.`parent_id` LEFT JOIN `luccas_content_rating` AS `v` ON `a`.`id` = `v`.`content_id` WHERE ( (`a`.`id` = :pk AND `c`.`published` > 0) AND (`a`.`publish_up` IS NULL OR `a`.`publish_up` <= :publishUp)) AND (`a`.`publish_down` IS NULL OR `a`.`publish_down` >= :publishDown) AND `a`.`state` IN (:preparedArray1,:preparedArray2)335μs22.17KBParams/components/com_content/src/Model/ArticleModel.php:215Copy
  • SELECT SUM(CASE WHEN `a`.`next_execution` <= :now THEN 1 ELSE 0 END) AS due_count,SUM(CASE WHEN `a`.`locked` IS NULL THEN 0 ELSE 1 END) AS locked_count FROM `luccas_scheduler_tasks` AS `a` WHERE `a`.`state` = 1152μs1.37KBParams/administrator/components/com_scheduler/src/Model/TasksModel.php:517Copy
  • SELECT `session_id` FROM `luccas_session` WHERE `session_id` = ?115μs1KBParams/libraries/vendor/joomla/session/src/Handler/DatabaseHandler.php:277Copy
  • UPDATE `luccas_session` SET `data` = ? , `time` = ? WHERE `session_id` = ?205μs592BParams/libraries/vendor/joomla/session/src/Handler/DatabaseHandler.php:301Copy